NetSuite Connector 9.3 の例 - Mule 4

この例では、NetSuite Connector Search​ 操作を使用して、内部 ID が query​ パラメーターの値未満のアカウントレコードを取得する方法を示します。

この例では、少なくとも 1 件の基本アカウントが NetSuite インスタンスの検索条件を満たしている必要があります。

次のスクリーンショットは、この例の Studio アプリケーションフローを示しています。

アカウントの基本検索の例のアプリケーションフロー
Figure 1. Studio でのアカウントの基本検索アプリケーションフロー

この例を作成するには、新規 Mule プロジェクトを作成し、HTTP Listener​、NetSuite Connector Search​ 操作、および 2 つの Transform Message​ コンポーネントを設定する必要があります。

HTTP リスナーを設定する

ローカルホストポート 8081 で /account​ パスへのコールが行われたときに Mule フローを開始するように HTTP リスナーを設定します。

  1. Studio で新しい Mule プロジェクトを作成します。

  2. Studio で [HTTP]​ をクリックし、[Listener]​ 操作をキャンバスにドラッグします。

  3. Listener​ 操作の表示名を /account​ に変更します。

  4. [Listener] プロパティウィンドウで、[Connector configuration (コネクタ設定)]​ 項目の横にある [+]​ をクリックしてグローバル要素を追加します。

  5. デフォルトを受け入れます。

  6. [Listener] プロパティウィンドウで、[Path (パス)]​ 項目値を /account​ に設定します。

NetSuite Connector の Search 操作を追加する

  1. [Mule Palette (Mule パレット)]​ ビューから、[NetSuite]​ を選択して [Search]​ 操作を [Listener]​ の右側にドラッグします。

  2. Search​ 操作の表示名を Search Account​ に変更します。

  3. [Search] プロパティウィンドウで、[Connector configuration (コネクタ設定)]​ 項目の横にある [+] をクリックしてグローバル要素を追加します。

  4. デフォルトを受け入れます。

  5. [Search] プロパティウィンドウで以下を行います。

    • [Key (キー)]​ 項目で ACCOUNT_BASIC​ を選択します。

    • [Page Size (ページサイズ)]​ 項目値を 10​ ~ 1000​ の整数値に設定します。

最初の [Transform Message] コンポーネントを追加する

この [Transform Message]​ コンポーネントには、フローの検索条件が含まれています。

  1. [Mule Palette (Mule パレット)]​ ビューから、[Transform Message]​ コンポーネントを [Search]​ の左側にドラッグします。

  2. [Transform Message]​ コンポーネントの名前を Search Criteria​ に変更します。

  3. [Transform Message]​ コンポーネントをクリックします。

    [Output (出力)]​ 列には AccountSearchBasic​ オブジェクトのメタデータが表示されます。

  4. メタデータの internalid​ オブジェクトで以下を行います。

    • [operator (演算子)]​ 項目をダブルクリックして、その値を "LESS_THAN"​ に設定します。

    • [searchValue]​ 項目をダブルクリックして、その値を attributes.queryParams["internalId"]​ に設定します。

      [searchValue]​ 項目値を attributes.queryParams["internalId"]​ に設定すると、検索条件として internalId​ クエリパラメーターの値を使用するようコネクタに指示されます。

    DataWeave コードは次のようになります。

    %dw 2.0
    output application/java
    ---
    {
    	internalIdNumber: {
    		operator: "LESS_THAN",
    		searchValue: attributes.queryParams["internalId"]
    	}
    } as Object {
    	class : "org.mule.module.netsuite.extension.api.AccountSearchBasic"
    }

2 つ目の [Transform Message] コンポーネントを追加する

この [Transform Message]​ コンポーネントは、応答を JSON 形式に変換します。

  1. [Mule Palette (Mule パレット)]​ ビューから、[Transform Message]​ コンポーネントを [Search]​ の右側にドラッグします。

  2. [Transform Message]​ コンポーネントの名前を Response to JSON​ に変更します。

  3. 新しい [Transform Message]​ コンポーネントをクリックして、出力を application/json​ に設定します。

    %dw 2.0
    output application/json
    ---
    payload

アプリケーションを実行する

アプリケーションを実行する手順は、次のとおりです。

  1. Mule アプリケーションを起動します。

  2. http://localhost:8081/account?internalId=5​ をコールして、内部 ID が 5 未満の Account​ レコードを取得します。

アカウントの基本検索フローの XML

Studio で次のコードを新しい Mule アプリケーションい貼り付ければ、アカウントの基本検索の例のフローをすばやく読み込むことができます。必要に応じて、環境に合わせて値を変更します。

<?xml version="1.0" encoding="UTF-8"?>

<mule xmlns:ee="http://www.mulesoft.org/schema/mule/ee/core"
	xmlns:netsuite="http://www.mulesoft.org/schema/mule/netsuite"
	xmlns:http="http://www.mulesoft.org/schema/mule/http" xmlns="http://www.mulesoft.org/schema/mule/core"
	xmlns:doc="http://www.mulesoft.org/schema/mule/documentation"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd
http://www.mulesoft.org/schema/mule/http http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd
http://www.mulesoft.org/schema/mule/netsuite http://www.mulesoft.org/schema/mule/netsuite/current/mule-netsuite.xsd
http://www.mulesoft.org/schema/mule/ee/core http://www.mulesoft.org/schema/mule/ee/core/current/mule-ee.xsd">

    <http:listener-config name="HTTP_Listener_config" doc:name="HTTP Listener config">
        <http:listener-connection host="0.0.0.0" port="8081"/>
    </http:listener-config>

    <netsuite:config name="NetSuite_Config" doc:name="NetSuite Config">
        <netsuite:login-authentication-connection
    		email="${email}" password="${password}" account="${account}"
    		roleId="${roleId}" applicationId="${applicationId}" />
    </netsuite:config>

    <flow name="netsuite-search-account">
	    <http:listener doc:name="/account" config-ref="HTTP_Listener_config" path="/account"/>
	    <ee:transform doc:name="Search Criteria">
		    <ee:message >
			    <ee:set-payload ><![CDATA[%dw 2.0
output application/java
---
{
	internalIdNumber: {
		operator: "LESS_THAN",
		searchValue: attributes.queryParams["internalId"]
	}
} as Object {
	class : "org.mule.module.netsuite.extension.api.AccountSearchBasic"
}]]></ee:set-payload>
			</ee:message>
		</ee:transform>
		<netsuite:search key="ACCOUNT_BASIC" doc:name="Search Account" config-ref="NetSuite_Config" pageSize="10"/>
		<ee:transform doc:name="Response to Json">
			<ee:message >
				<ee:set-payload ><![CDATA[%dw 2.0
output application/json
---
payload]]></ee:set-payload>
			</ee:message>
		</ee:transform>
	</flow>
</mule>

この例では、Search​ 操作を使用して、姓の先頭が指定した文字である非アクティブな Employee​ レコードを取得する方法を示します。

この例では、NetSuite インスタンスの少なくとも 1 件の従業員レコードが検索条件を満たしている必要があります。

次のスクリーンショットは、従業員の基本検索の例の Studio アプリケーションフローを示しています。

従業員の基本検索の例のアプリケーションフロー
Figure 2. Studio での従業員の基本検索アプリケーションフロー

この例を作成するには、新規 Mule プロジェクトを作成し、HTTP Listener​、NetSuite Connector Search​ 操作、および 2 つの Transform Message​ コンポーネントを設定する必要があります。

HTTP リスナーを設定する

ローカルホストポート 8081 で /employee​ パスへのコールが行われたときに Mule フローを開始するように HTTP リスナーを設定します。

  1. Studio で [HTTP]​ をクリックし、[Listener]​ 操作をキャンバスにドラッグします。

  2. Listener​ 操作の表示名を /employee​ に変更します。

  3. 既存のグローバル要素を選択するか、HTTP Listener​ 用に新しい要素を作成してデフォルトを保持します。

  4. [Listener] プロパティウィンドウで、[Path (パス)]​ 項目値を /employee​ に設定します。

NetSuite Connector の Search 操作を追加する

  1. [Mule Palette (Mule パレット)]​ ビューから、[NetSuite]​ を選択して [Search]​ 操作を [HTTP Listener]​ の右側にドラッグします。

  2. Search​ 操作の表示名を Search Employee​ に変更します。

  3. 既存のグローバル要素を選択するか、Search​ 操作用に新しい要素を作成します。

  4. [Search] プロパティウィンドウで以下を行います。

    • [Key (キー)]​ 項目で Employee_BASIC​ を選択します。

    • [Page Size (ページサイズ)]​ 項目値を 10​ ~ 1000​ の整数値に設定します。

最初の [Transform Message] コンポーネントを追加する

この [Transform Message]​ コンポーネントには、フローの検索条件が含まれています。

  1. [Mule Palette (Mule パレット)]​ ビューから、[Transform Message]​ コンポーネントを [Search]​ の左側にドラッグします。

  2. [Transform Message]​ コンポーネントの名前を Search Criteria​ に変更します。

  3. [Transform Message]​ コンポーネントをクリックします。

    [Output (出力)]​ 列には EmployeeSearchBasic​ オブジェクトのメタデータが表示されます。

  4. メタデータの isInactive​ オブジェクトで、[searchValue]​ 項目をダブルクリックして、その値を attributes.queryParams["isInactive"]​ に設定します。

    この値により、非アクティブな従業員アカウントを検索するようコネクタに指示されます。

  5. lastName​ オブジェクトで以下を行います。

    • [operator (演算子)]​ 項目をダブルクリックして、その値を STARTS_WITH​ に設定します。

    • [searchValue]​ 項目をダブルクリックして、その値を attributes.queryParams["lastName"]​ に設定します。

      この値により、従業員の姓を検索するようコネクタに指示されます。

DataWeave コードは次のようになります。

%dw 2.0
output application/java
---
{
	isInactive: {
		searchValue: attributes.queryParams["isInactive"]
	},
	lastName: {
		operator: "STARTS_WITH",
		searchValue: attributes.queryParams["lastName"]
	}
} as Object {
	class : "org.mule.module.netsuite.extension.api.EmployeeSearchBasic"
}

2 つ目の [Transform Message] コンポーネントを追加する

この [Transform Message]​ コンポーネントは、応答を JSON 形式に変換します。

  1. [Mule Palette (Mule パレット)]​ ビューから、[Transform Message]​ コンポーネントを [Search]​ の右側にドラッグします。

  2. 新しい [Transform Message]​ をクリックして、出力を application/json​ に設定します。

    %dw 2.0
    output application/json
    ---
    payload

アプリケーションを実行する

  1. Mule アプリケーションを起動します。

  2. http://localhost:8081/employee?isInactive=false&lastName=A​ をコールして、姓の先頭が A​ である非アクティブな Employee​ レコードを取得します。

従業員の基本検索フローの XML

Studio で次のコードを新しい Mule アプリケーションい貼り付ければ、従業員の基本検索の例のフローをすばやく読み込むことができます。必要に応じて、環境に合わせて値を変更します。

<?xml version="1.0" encoding="UTF-8"?>

<mule xmlns:ee="http://www.mulesoft.org/schema/mule/ee/core"
	xmlns:netsuite="http://www.mulesoft.org/schema/mule/netsuite"
	xmlns:http="http://www.mulesoft.org/schema/mule/http" xmlns="http://www.mulesoft.org/schema/mule/core"
	xmlns:doc="http://www.mulesoft.org/schema/mule/documentation"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd
http://www.mulesoft.org/schema/mule/http http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd
http://www.mulesoft.org/schema/mule/netsuite http://www.mulesoft.org/schema/mule/netsuite/current/mule-netsuite.xsd
http://www.mulesoft.org/schema/mule/ee/core http://www.mulesoft.org/schema/mule/ee/core/current/mule-ee.xsd">

    <http:listener-config name="HTTP_Listener_config" doc:name="HTTP Listener config">
        <http:listener-connection host="0.0.0.0" port="8081"/>
    </http:listener-config>

    <netsuite:config name="NetSuite_Config" doc:name="NetSuite Config">
        <netsuite:login-authentication-connection
    		email="${email}" password="${password}" account="${account}"
    		roleId="${roleId}" applicationId="${applicationId}" />
    </netsuite:config>

    <flow name="netsuite-search-employee">
    		<http:listener doc:name="/employee" config-ref="HTTP_Listener_config"
    			path="/employee" />
    		<ee:transform doc:name="Search Criteria">
    			<ee:message >
    				<ee:set-payload ><![CDATA[%dw 2.0
    output application/java
    ---
    {
    	isInactive: {
    		searchValue: attributes.queryParams["isInactive"]
    	},
    	lastName: {
    		operator: "STARTS_WITH",
    		searchValue: attributes.queryParams["lastName"]
    	}
    } as Object {
    	class : "org.mule.module.netsuite.extension.api.EmployeeSearchBasic"
    }]]></ee:set-payload>
    			</ee:message>
    		</ee:transform>
    		<netsuite:search doc:name="Search Employee"config-ref="NetSuite_Config" key="EMPLOYEE_BASIC" pageSize="10" />
    		<ee:transform doc:name="Response to Json">
    			<ee:message >
    				<ee:set-payload ><![CDATA[%dw 2.0
    output application/json
    ---
    payload]]></ee:set-payload>
    			</ee:message>
    		</ee:transform>
    	</flow>
</mule>

この例では、Search​ 操作を使用して、2015 年以降に作成されて LEAD​ フェーズにある顧客レコードを取得する方法を示します。

この例では、少なくとも 1 件の顧客レコードが NetSuite インスタンスの検索条件を満たしている必要があります。

次のスクリーンショットは、この例の Studio アプリケーションフローを示しています。

顧客の詳細検索の例のアプリケーションフロー
Figure 3. Studio での顧客の詳細検索アプリケーションフロー

この例を作成するには、新規 Mule プロジェクトを作成し、HTTP Listener​、NetSuite Search​ 操作、3 つの Transform Message​ コンポーネント、および For-Each​ スコープを設定する必要があります。

HTTP リスナーを設定する

ローカルホストポート 8081 で /customer​ パスへのコールが行われたときに Mule フローを開始するように HTTP リスナーを設定します。

  1. Studio で [HTTP]​ をクリックし、[Listener]​ 操作をキャンバスにドラッグします。

  2. Listener​ 操作の表示名を /customer​ に変更します。

  3. 既存のグローバル要素を選択するか、Listener​ 操作用に新しい要素を作成します。

  4. [Listener] プロパティウィンドウで、[path (パス)]​ 項目値を /customer​ に設定します。

NetSuite Connector の Search 操作を追加する

  1. [Mule Palette (Mule パレット)]​ ビューから、[NetSuite]​ を選択して [Search]​ 操作を [Listener]​ の右側にドラッグします。

  2. Search​ 操作の表示名を Search Customer Advanced​ に変更します。

  3. 既存のグローバル要素を選択するか、Search​ 操作用に新しい要素を作成します。

  4. [Search] プロパティウィンドウで以下を行います。

    • [Key (キー)]​ 項目で CUSTOMER_ADVANCED​ を選択します。

    • [Page Size (ページサイズ)]​ 項目値を 10​ ~ 1000​ の整数値に設定します。

最初の [Transform Message] コンポーネントを追加する

この [Transform Message]​ コンポーネントでは、検索結果のカスタム表示ラベルを設定し、フローの検索条件を指定します。

  1. [Mule Palette (Mule パレット)]​ ビューから、[Transform Message]​ コンポーネントを [Search]​ の左側にドラッグします。

  2. [Transform Message]​ コンポーネントの名前を Search Criteria​ に変更します。

  3. [Transform Message]​ コンポーネントをクリックします。

    [Output (出力)]​ 列には CustomerSearchAdvanced​ オブジェクトのメタデータが表示されます。

  4. 検索結果の項目を設定する手順は、次のとおりです。

    1. [CustomerSearchAdvanced]​ で、basic​ オブジェクトを展開します。

    2. [dateCreated]​ を展開します。

    3. [customLabel]​ 項目をダブルクリックして、その値を "Created"​ に設定します。

    4. entityId​ オブジェクトで、[customLabel]​ 項目をダブルクリックして、その値を "Entity ID"​ に設定します。

    5. stage​ オブジェクトで、[customLabel]​ 項目をダブルクリックして、その値を Stage​ に設定します。

  5. フローの検索条件を設定する手順は、次のとおりです。

    1. [CustomerSearchAdvanced]​ で、Criteria​ オブジェクトを展開します。

    2. basic​ オブジェクトを展開します。

    3. dateCreated​ オブジェクトで、[operator (演算子)]​ 項目をダブルクリックして、その値を "AFTER"​ に設定します。

    4. [searchValue]​ 項目をダブルクリックして、その値を attributes.queryParams["dateCreated"] as LocalDateTime {format: "yyyy-MM-dd HH:mm:ss.SSS"}​ に設定します。

      この設定では、dateCreated​ クエリパラメーターの値を LocalDateTime​ 形式に変換します。

    5. stage​ オブジェクトを展開します。

    6. [operator (演算子)]​ 項目をダブルクリックして、その値を "ANY_OF"​ に設定します。

    7. [searchValue]​ 項目をダブルクリックして、その値を [attributes.queryParams["stage"]]​ に設定します。

      この設定では、stage​ クエリパラメーターの値を配列項目に変換します。

DataWeave コードは次のようになります。

%dw 2.0
output application/java
---
{
	columns: {
		basic: {
			dateCreated: [{
				customLabel: "Created"
			}],
			entityId: [{
				customLabel: "Entity Id"
			}],
			stage: [{
				customLabel: "Stage"
			}]
		}
	},
	criteria: {
		basic: {
			dateCreated: {
				operator: "AFTER",
				searchValue: attributes.queryParams["dateCreated"] as LocalDateTime {format: "yyyy-MM-dd HH:mm:ss.SSS"}
			},
			stage: {
				operator: "ANY_OF",
				searchValue: [attributes.queryParams["stage"]]
			}
		}
	}
} as Object {
	class : "org.mule.module.netsuite.extension.api.CustomerSearchAdvanced"
}

For Each スコープを追加する

For-Each​ スコープは、レコードをコンソールに表示できるように、Search​ 操作によって個別に返されるリストの各レコードを処理します。

  1. [Mule Palette (Mule パレット)]​ ビューから、For-Each​ スコープを [Search]​ の右側にドラッグします。

  2. [Transform Message]​ コンポーネントを [For Each]​ ボックス内にドラッグして、[Transform Message] の [Output (出力)]​ 列の DataWeave コードを次のコードに置き換えます。

    %dw 2.0
    output application/json
    ---
    {
    	entityId: payload.entityId,
    	dateCreated: payload.dateCreated,
    	stage: payload.stage
    }
  3. [Logger]​ コンポーネントを [Mule Palette (Mule パレット)]​ ビューから [For Each]​ ボックス内の [Transform]​ の右側にドラッグします。

  4. Logger​ 操作の表示名を Log Customer​ に変更します。

  5. [Logger] プロパティウィンドウで、[Message (メッセージ)]​ 項目値を #[payload]​ に設定します。

3 つ目の [Transform Message] コンポーネントを追加する

この [Transform Message]​ コンポーネントは、応答を JSON 形式に変換します。

  1. [Mule Palette (Mule パレット)]​ ビューから、別の [Transform Message]​ コンポーネントを [For Each]​ の外側のフローの最後にドラッグします。

  2. [Transform Message]​ コンポーネントの名前を Response to JSON​ に変更します。

  3. 新しい [Transform Message]​ をクリックして、出力を application/json​ に設定します。

    %dw 2.0
    output application/json
    ---
    payload
  4. Mule アプリケーションを起動します。

  5. http://localhost:8081/customer?dateCreated=2015-02-02%2000:00:00.000&stage=LEAD​ をコールします。

顧客の詳細検索フローの XML

Studio で次のコードを新しい Mule アプリケーションい貼り付ければ、顧客の詳細検索の例のフローをすばやく読み込むことができます。必要に応じて、環境に合わせて値を変更します。

<?xml version="1.0" encoding="UTF-8"?>

<mule xmlns:ee="http://www.mulesoft.org/schema/mule/ee/core"
	xmlns:netsuite="http://www.mulesoft.org/schema/mule/netsuite"
	xmlns:http="http://www.mulesoft.org/schema/mule/http" xmlns="http://www.mulesoft.org/schema/mule/core"
	xmlns:doc="http://www.mulesoft.org/schema/mule/documentation"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd
http://www.mulesoft.org/schema/mule/http http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd
http://www.mulesoft.org/schema/mule/netsuite http://www.mulesoft.org/schema/mule/netsuite/current/mule-netsuite.xsd
http://www.mulesoft.org/schema/mule/ee/core http://www.mulesoft.org/schema/mule/ee/core/current/mule-ee.xsd">

    <http:listener-config name="HTTP_Listener_config" doc:name="HTTP Listener config">
        <http:listener-connection host="0.0.0.0" port="8081"/>
    </http:listener-config>

    <netsuite:config name="NetSuite_Config" doc:name="NetSuite Config">
        <netsuite:login-authentication-connection
    		email="${email}" password="${password}" account="${account}"
    		roleId="${roleId}" applicationId="${applicationId}" />
    </netsuite:config>

    <flow name="netsuite-search-customer-advanced">
    		<http:listener doc:name="/customer" config-ref="HTTP_Listener_config" path="/customer"/>
    		<ee:transform doc:name="Search Criteria">
    			<ee:message>
    				<ee:set-payload><![CDATA[%dw 2.0
    output application/java
    ---
    {
    	columns: {
    		basic: {
    			dateCreated: [{
    				customLabel: "Created"
    			}],
    			entityId: [{
    				customLabel: "Entity Id"
    			}],
    			stage: [{
    				customLabel: "Stage"
    			}]
    		}
    	},
    	criteria: {
    		basic: {
    			dateCreated: {
    				operator: "AFTER",
    				searchValue: attributes.queryParams["dateCreated"] as LocalDateTime {format: "yyyy-MM-dd HH:mm:ss.SSS"}
    			},
    			stage: {
    				operator: "ANY_OF",
    				searchValue: [attributes.queryParams["stage"]]
    			}
    		}
    	}
    } as Object {
    	class : "org.mule.module.netsuite.extension.api.CustomerSearchAdvanced"
    }]]></ee:set-payload>
    			</ee:message>
    		</ee:transform>
    		<netsuite:search key="CUSTOMER_ADVANCED" doc:name="Search Customer Advanced" config-ref="NetSuite_Config" pageSize="10"/>
    		<foreach doc:name="For Each">
    			<ee:transform doc:name="Transform Customer">
    				<ee:message >
    					<ee:set-payload ><![CDATA[%dw 2.0
    output application/json
    ---
    {
    	entityId: payload.entityId,
    	dateCreated: payload.dateCreated,
    	stage: payload.stage
    }]]></ee:set-payload>
    				</ee:message>
    			</ee:transform>
    			<logger level="INFO" doc:name="Logger Customer" message="#[payload]"/>
    		</foreach>
    		<ee:transform doc:name="Response to Json">
    			<ee:message >
    				<ee:set-payload ><![CDATA[%dw 2.0
    output application/json
    ---
    payload]]></ee:set-payload>
    			</ee:message>
    		</ee:transform>
    	</flow>
</mule>