Flex Gateway新着情報
Governance新着情報
Monitoring API Managerこの例では、次の操作を使用して SObject ツリーを作成し、Salesforce に接続して結果を JSON 形式に変換して出力します。
HTTP Listener
HTTP 要求からデータを受け入れる
Transform Message
HTTP 入力を変換します。
Create sobject tree
Salesforce に接続し、SObject ツリーを作成します。
Transform Message
Create sobject tree 操作の結果を JSON 形式で出力します。
HTTP Listener ソース操作は、createSObjectTree
パスでイベントを検出したときにフローを開始します。リスナーを追加してフローをトリガーする手順は、次のとおりです。
Studio で新しい Mule プロジェクトを作成します。
[Mule Palette (Mule パレット)] ビューで「http
」を検索し、[Listener] 操作を選択します。
Listener 操作をキャンバスにドラッグします。
[Listener] プロパティウィンドウで、[Path (パス)] 項目を /createSObjectTree
に設定します。
最初の Transform Message コンポーネントは、入力データを使用して次の Create 操作の HTTP 入力を変換します。コンポーネントを追加する手順は、次のとおりです。
[Mule Palette (Mule パレット)] ビューで、「Transform Message」を検索します。
Transform Message コンポーネントをキャンバスの [Listener] の右にドラッグします。
名前 Transform HTTP input for Create SObject Tree
を入力します。
次に、Transform Message コンポーネントの HTTP 入力の例を示します。
{
"records":[
{
"ChildAccounts":{
"records":[
{
"Phone":"4321098765",
"Website":"www.salesforce.com",
"attributes":{
"objectType":"Account",
"referenceId":"ref5"
},
"NumberOfEmployees":"10",
"Name":"ChildAccount1"
}
]
},
"Contacts":{
"records":[
{
"Email":"sample@salesforce.com",
"Title":"President",
"attributes":{
"objectType":"Contact",
"referenceId":"ref6"
},
"LastName":"Jones"
}
]
},
"Phone":"5556543210",
"Website":"www.salesforce.com",
"attributes":{
"objectType":"Account",
"referenceId":"ref4"
},
"NumberOfEmployees":"101",
"Name":"CreateSobjectTreeAccount2"
},
{
"Contacts":{
"records":[
{
"Email":"sample@salesforce.com",
"Title":"President",
"attributes":{
"objectType":"Contact",
"referenceId":"ref2"
},
"LastName":"Smith"
},
{
"Email":"sample@salesforce.com",
"Title":"Vice President",
"attributes":{
"objectType":"Contact",
"referenceId":"ref3"
},
"LastName":"Evans"
}
]
},
"Phone":"1234567890",
"Website":"www.salesforce.com",
"attributes":{
"objectType":"Account",
"referenceId":"ref1"
},
"NumberOfEmployees":"100",
"Name":"CreateSobjectTreeAccount1"
}
]
}
json
Create SObject Tree 操作を追加して Salesforce に接続し、SObject ツリーを作成します。操作を追加する手順は、次のとおりです。
[Mule Palette (Mule パレット)] ビューで「salesforce
」を検索し、[Create sobject tree] を選択します。
[Create sobject tree] 操作を [Transform Message] の右にドラッグします。
[Connector configuration (コネクタ設定)] の右にある緑のプラス記号 (+) をクリックし、Salesforce Composite グローバル要素設定項目にアクセスします。
[Create sobject tree] プロパティウィンドウで、[SObject Root Typ (sObject ルート種別)] 項目に「Account
」と入力します。
プロパティファイル src/main/mule/mule-app.properties
で、グローバル要素の変数の値を宣言して入力します。
2 つ目の Transform Message コンポーネントは出力結果を JSON に変換します。コンポーネントを追加する手順は、次のとおりです。
もう一度 [Transform Message] コンポーネントを [Create sobject tree] の右にドラッグします。
次の情報を入力します。
%dw 2.0
%output application/json
payload
---
{
"Id": payload.Id,
"Fields" : ["Id", "Name"],
"Type": "Account"
}
dataweave
次の XML コードを Anypoint Studio キャンバスの [Configuration XML (設定 XML)] タブに貼り付けて、フローを試してください。
<?xml version="1.0" encoding="UTF-8"?>
<mule xmlns:salesforce-composite="http://www.mulesoft.org/schema/mule/salesforce-composite"
xmlns:ee="http://www.mulesoft.org/schema/mule/ee/core"
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/ee/core
http://www.mulesoft.org/schema/mule/ee/core/current/mule-ee.xsd
http://www.mulesoft.org/schema/mule/salesforce-composite
http://www.mulesoft.org/schema/mule/salesforce-composite/current/mule-salesforce-composite.xsd">
<configuration-properties file="mule-app.properties"/>
<http:listener-config name="HTTP_Listener_config"
doc:name="HTTP Listener config">
<http:listener-connection host="localhost" port="8081" />
</http:listener-config>
<salesforce-composite:composite-config name="Salesforce_Composite_Salesforce_Composite"
doc:name="Salesforce Composite Salesforce Composite">
<salesforce-composite:oauth-user-pass-connection
consumerKey="${consumerKey}"
consumerSecret="${consumerSecret}"
username="${username}"
password="${password}"
securityToken="${securityToken}"
tokenEndpoint="${tokenEndpoint}" />
</salesforce-composite:composite-config>
<flow name="salesforce-composite-create-sobject-trees">
<http:listener doc:name="Listener"
path="/createSObjectTree"
config-ref="HTTP_Listener_config"/>
<ee:transform doc:name="Transform HTTP input for Create SObject Tree">
<ee:message>
<ee:set-payload><![CDATA[%dw 2.0
output application/java
---
payload.records map ((record , indexOfRecord) -> {
"attributes": {
"type": record.attributes.objectType,
"referenceId": record.attributes.referenceId
},
"Name": record.Name,
"Phone": record.Phone,
"Website": record.Website,
"NumberOfEmployees": record.NumberOfEmployees as Number,
("ChildAccounts": {
"records": record.ChildAccounts.records map ((record01, indexOfRecord01) -> {
"attributes": {
"type": record01.attributes.objectType,
"referenceId": record01.attributes.referenceId
},
"Name": record01.Name,
"Phone": record01.Phone,
"Website": record01.Website,
"NumberOfEmployees": record01.NumberOfEmployees as Number
})
}),
"Contacts": {
"records": record.Contacts.records map ((record01, indexOfRecord01) -> {
"attributes": {
"type": record01.attributes.objectType,
"referenceId": record01.attributes.referenceId
},
"LastName": record01.LastName,
"Email": record01.Email,
"Title": record01.Title
})
}
})
]]></ee:set-payload>
</ee:message>
</ee:transform>
<salesforce-composite:create-sobject-tree
doc:name="Create SObject tree"
config-ref="Salesforce_Composite_Salesforce_Composite"
type="Account"/>
<ee:transform doc:name="Transform Message">
<ee:message >
<ee:set-payload ><![CDATA[%dw 2.0
output application/json
---
payload]]></ee:set-payload>
</ee:message>
</ee:transform>
</flow>
</mule>
xml
この例では、照会するオブジェクトのメタデータを提供し、このメタデータが含まれる 2 つの下位要求を生成して、下位要求を実行します。
HTTP Listener
HTTP 要求からデータを受け入れる
Transform Message
オブジェクトの名前を指定します。
Pre create
作成するオブジェクトのメタデータを提供し、実行で使用される下位要求を生成します。
Transform Message
項目の値を指定します。
Pre query
照会するオブジェクトのメタデータを提供し、実行で使用される下位要求を生成します。
Transform Message
Pre query 操作から出力を渡します。
Execute composite batch
1 つのバッチですべての下位要求を送信します。
Transform Message
結果を JSON 形式で出力します。
HTTP Listener ソース操作は、executeFlow
パスでイベントを検出したときにフローを開始します。リスナーを追加してフローをトリガーする手順は、次のとおりです。
Studio で新しい Mule プロジェクトを作成します。
[Mule Palette (Mule パレット)] ビューで「http
」を検索し、[Listener] 操作を選択します。
Listener 操作をキャンバスにドラッグします。
[Listener] プロパティウィンドウで、[Path (パス)] 項目を /executeFlow
に設定します。
最初の Transform Message コンポーネントは、作成されるオブジェクトの名前を指定し、Pre create 操作の名前を渡します。コンポーネントを追加する手順は、次のとおりです。
[Mule Palette (Mule パレット)] ビューで、「Transform Message」を検索します。
[Transform Message] をキャンバスの [Listener] の右にドラッグします。
名前 MyNewAccount
を入力します。
%dw 2.0
%output application/java
---
{
Name: "MyNewAccount"
}
dataweave
Pre Create 操作は、NewAccount
と呼ばれるオブジェクトを作成するためのメタデータを提供し、executeCompositeBatch
操作の下位要求を生成します。操作を追加する手順は、次のとおりです。
[Mule Palette (Mule パレット)] ビューで「salesforce
」を検索し、Salesforce Composite の [Pre create] 操作を選択します。
Pre create 操作を [Transform Message] の右にドラッグします。
[Connector configuration (コネクタ設定)] 項目の右にある緑のプラスアイコン (+) をクリックし、Salesforce Composite グローバル要素設定項目にアクセスします。
[Pre create] プロパティウィンドウで、[Type (種別)] 項目に「Account
」と入力します。
プロパティファイル src/main/mule/mule-app.properties
で、グローバル要素の変数の値を宣言して入力します。
2 つ目の Transform Message コンポーネントは、[ID] 項目と [Type (種別)] 項目の値を指定し、これらの値を Pre query 操作に渡します。コンポーネントを追加する手順は、次のとおりです。
2 つ目の [Transform Message] コンポーネントを [Pre create] の右にドラッグします。
次の名前-値ペアを入力します。
%dw 2.0
%output application/java
---
{
"Id": payload.Id,
"Fields" : ["Id", "Name"],
"Type": "Account"
}
dataweave
Pre Query 操作により、照会するオブジェクトのメタデータが提供されます。Execute composite batch 操作の下位要求が生成されます。操作を追加する手順は、次のとおりです。
Salesforce Composite の Pre query 操作を 2 つ目の [Transform Message] の右にドラッグします。
[Query (クエリ)] 項目に、以下を入力します。
Select Name from Account WHERE Name LIKE '%:name %'
3 つ目の Transform Message 操作は、Pre query 操作の出力を Execute composite batch 操作に渡します。コンポーネントを追加する手順は、次のとおりです。
3 つ目の [Transform Message] コンポーネントを [Pre query] の右にドラッグします。
出力を payload
に設定します。
%dw 2.0
%output application/java
---
[
payload
]
dataweave
Execute Composite Batch 操作により、Pre Create 操作と Pre Query 操作で作成された下位要求が実行されます。
操作を追加するには、Salesforce Composite の [Execute composite batch] 操作を 3 つ目の [Transform Message] の右にドラッグします。
4 つ目の Transform Message 操作は、出力を JSON 形式に変換します。コンポーネントを追加する手順は、次のとおりです。
4 つ目の [Transform Message] コンポーネントを [Execute composite batch] の右にドラッグします。
出力を application/json
に設定します。
%dw 2.0
%output application/json
---
payload
dataweave
この例のフローをすばやく Mule アプリケーションに読み込むには、次のコードを XML エディターに貼り付けます。必要に応じて、環境に合わせて値を変更します。
<?xml version="1.0" encoding="UTF-8"?>
<mule xmlns:salesforce-composite="http://www.mulesoft.org/schema/mule/salesforce-composite" xmlns:ee="http://www.mulesoft.org/schema/mule/ee/core"
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/ee/core http://www.mulesoft.org/schema/mule/ee/core/current/mule-ee.xsd
http://www.mulesoft.org/schema/mule/salesforce-composite http://www.mulesoft.org/schema/mule/salesforce-composite/current/mule-salesforce-composite.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>
<salesforce-composite:composite-config name="Salesforce_Composite_Config" doc:name="Salesforce Composite Config" >
<salesforce-composite:oauth-user-pass-connection consumerKey="${consumerKey}" consumerSecret="${consumerSecret}" username="${username}" password="${password}" securityToken="${securityToken}" />
</salesforce-composite:composite-config>
<flow name="composite-prequery-exampleFlow" >
<http:listener doc:name="Listener" config-ref="HTTP_Listener_config" path="/executeFlow"/>
<ee:transform doc:name="Transform Message" >
<ee:message >
<ee:set-payload ><![CDATA[%dw 2.0
output application/java
---
{
Name: "MyNewAccount"
}]]></ee:set-payload>
</ee:message>
</ee:transform>
<salesforce-composite:pre-create type="Account" doc:name="Pre create" config-ref="Salesforce_Composite_Config">
</salesforce-composite:pre-create>
<ee:transform doc:name="Transform Message" >
<ee:message >
<ee:set-payload ><![CDATA[output application/java
---
{
"Id": payload.Id,
"Fields" : ["Id", "Name"],
"Type": "Account"
}]]></ee:set-payload>
</ee:message>
</ee:transform>
<salesforce-composite:pre-query doc:name="Pre query" config-ref="Salesforce_Composite_Config">
<salesforce-composite:query >Select Name from Account WHERE Name LIKE '%:name %'
</salesforce-composite:query>
<salesforce-composite:parameters ><![CDATA[#[output application/java
---
{
"name" : "MyNewAccount"
}]]]></salesforce-composite:parameters>
</salesforce-composite:pre-query>
<ee:transform doc:name="Transform Message" >
<ee:message >
<ee:set-payload ><![CDATA[%dw 2.0
output application/java
---
[
payload
]]]></ee:set-payload>
</ee:message>
</ee:transform>
<salesforce-composite:execute-composite-batch doc:name="Execute composite batch" config-ref="Salesforce_Composite_Config"/>
<ee:transform doc:name="Transform Message" >
<ee:message >
<ee:set-payload ><![CDATA[%dw 2.0
output application/json
---
payload]]></ee:set-payload>
</ee:message>
</ee:transform>
</flow>
</mule>
xml