Flex Gateway新着情報
Governance新着情報
Monitoring API Managerこの例では、以下の方法を含め、SAP SuccessFactors のいくつかの標準操作を呼び出すフローを作成する方法を示します。
エンティティ全体に対してクエリを実行するようにクエリを作成する。
SuccessFactors でエンティティを作成および更新する。
これらのフローを構築して実行するには、以下が必要です。
OpenJDK 8 または 11
Anypoint Studio 7.1 以降
Mule 4.2.2 以降
SuccessFactors Connector 3.x 以降。
OData API 要求を送信するための SuccessFactors ログイン情報。
DataWeave 2.0
Studio で、コネクタを追加および設定する新しい Mule プロジェクトを作成します。
Studio で、[File (ファイル)] > [New (新規)] > [Mule Project (Mule プロジェクト)] を選択します。
[Project Name (プロジェクト名)] に Mule プロジェクトの名前を入力します。
この例では successfactors-operations
という名前を使用します。
[Finish (完了)] をクリックします。
Package Explorer で /src/main/resources/
の下に mule-app.properties
という名前のファイルを作成します。
SuccessFactors に接続するためのログイン情報を指定します。例:
config.companyId=<your-company-id> config.userName=<successfactors-username> config.password=<successfactors-password>
ファイルを保存します。
対象の SuccessFactors システムにアクセスするためにコネクタが必要とする認証ログイン情報を指定するようにグローバル要素を設定します。
Studio キャンバスの下部にある [Global Elements (グローバル要素)] をクリックします。
[SAP SuccessFactors Config (SAP SuccessFactors 設定)] を選択して [Edit (編集)] をクリックします。
[SAP SuccessFactors Configuration (SAP SuccessFactors 設定)] ウィンドウで、次のように接続ログイン情報を入力します。
Company ID (会社 ID): ${config.companyId}
User Name (ユーザー名): ${config.userName}
Password (パスワード): ${config.password}
[Data Center’s Endpoint URL (データセンターのエンドポイント URL)] ドロップダウンから SuccessFactor の Web API URL を選択します。
次のイメージは、基本認証の設定例を示しています。
[OK] をクリックします。
[Test Connection (接続をテスト)] をクリックして、SAP SuccessFactors への接続を確認します。
成功メッセージが表示されます。
Query 操作を使用して指定された種別のエンティティに対してクエリを実行するフローを作成します。
[Mule Palette (Mule パレット)] ビューで、[HTTP] > [Listener] を選択します。
[Listener] を Studio キャンバスにドラッグします。
[Listener (リスナー)] 設定画面で、必要に応じて [Display Name (表示名)] 項目の値を変更します。
[Path (パス)] 項目に「/list
」を指定します。
[Connector configuration (コネクタ設定)] 項目の横にあるプラス記号 (+) をクリックして、アプリケーション内の HTTP Listener のすべてのインスタンスで使用できるグローバル要素を設定します。
[General (一般)] タブで、コネクタの接続情報を指定します。
[Test Connection (接続をテスト)] をクリックして、Mule が指定されたサーバーに接続できることを確認します。
[OK] をクリックします。
[Mule Palette (Mule パレット)] ビューで [SAP SuccessFactors] を選択し、[Query] 操作を選択して Studio キャンバスの [Listener] 操作の右にドラッグします。
[Mule Palette (Mule パレット)] の左ペインで [Favorites (お気に入り)] をクリックします。
[Transform Message] を選択して Studio キャンバスの [Query] 操作の右にドラッグします。
Transform Message コンポーネントでは、データ構造と形式を変換し、コネクタが想定する出力 (この場合は application/json
) を生成します。
%dw 2.0 output application/json --- payload
フローの最後に payload
(または #[payload]
) をメッセージとして使用する Logger コンポーネントを追加します。
次の画像は、SuccessFactors の Query 操作フローを示しています。
Query 操作フローの XML を次に示します。
<flow name="Query" >
<http:listener doc:name="Listener"
config-ref="HTTP_Listener_config2" path="/list"/>
<successfactors:query entitySetName="User" doc:name="Query" config-ref="SuccessFactors_Configuration" >
</successfactors:query>
<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>
<logger level="INFO" doc:name="Logger" message="#[payload]"/>
</flow>
xml
フローをテストする手順は、次のとおりです。
アプリケーションを実行します。
ブラウザーを開きます。
http://localhost:8081/list
に移動します。
次のフローでは、SuccessFactors の Create entity 操作を使用して SuccessFactors のエントリを作成します。
Create entity 操作フローの XML を次に示します。
<flow name="Create-Entry">
<http:listener doc:name="Listener" config-ref="HTTP_Listener_config" path="/createVendor"/>
<ee:transform doc:name="Transform Message">
<ee:message >
<ee:set-payload ><![CDATA[%dw 2.0
output application/java
---
{
vendorCode: "XYZ123ABC",
effectiveStartDate: "2018-07-08T00:00:00" as DateTime,
effectiveStatus: "I"
}]]></ee:set-payload>
</ee:message>
</ee:transform>
<successfactors:create-entity doc:name="Create entity"
config-ref="SuccessFactors_Configuration" entitySetName="VendorInfo"/>
<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>
<logger level="INFO" doc:name="Logger" message="#[payload]"/>
</flow>
xml
フローをテストする手順は、次のとおりです。
アプリケーションを実行します。
ブラウザーを開きます。
http://localhost:8081/create
に移動します。
次のフローでは、Get entity by id 操作を使用して ID でエンティティを取得します。
Get entity by id フローの XML を次に示します。
<flow name="Get-Entity-by-Id">
<http:listener doc:name="Listener" config-ref="HTTP_Listener_config" path="/getById"/>
<ee:transform doc:name="Transform Message">
<ee:message>
<ee:set-payload><![CDATA[%dw 2.0
output application/java
---
{
effectiveStartDate: attributes.queryParams.effectiveStartDate as DateTime,
vendorCode: attributes.queryParams.vendorCode
}]]></ee:set-payload>
</ee:message>
</ee:transform>
<successfactors:get-entity-by-id entitySetName="VendorInfo" doc:name="Get entity by id"
config-ref="SuccessFactors_Configuration" />
<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>
<logger level="INFO" doc:name="Logger" message="#[payload]"/>
</flow>
xml
フローをテストする手順は、次のとおりです。
アプリケーションを実行します。
ブラウザーを開きます。
http://localhost:8081/getById
に移動します。
次のフローでは、SuccessFactors の Update 操作を使用して SuccessFactors のエントリを更新します。
Update 操作フローの XML を次に示します。
<flow name="Update" >
<http:listener doc:name="Listener" config-ref="HTTP_Listener_config" path="/update"/>
<ee:transform doc:name="Transform Message" >
<ee:message>
<ee:set-payload><![CDATA[var nowTime = (now() as String {format:"yyyy-MM-dd"} ++ "T00:00Z[UTC]") as DateTime
---
{
effectiveStartDate: nowTime ,
mdfSystemExternalCode:"TV60" ++ uuid(),
cust_effectiveStatus:"A"
}]]></ee:set-payload>
</ee:message>
</ee:transform>
<successfactors:create-entity entitySetName="cust_VendorInfo" doc:name="Create entity"
config-ref="SuccessFactors_Configuration" />
<ee:transform doc:name="Transform Message" >
<ee:message >
<ee:set-payload ><![CDATA[output application/java
var nowTime = (now() as String {format:"yyyy-MM-dd"} ++ "T00:00Z[UTC]") as DateTime
---
{
effectiveStartDate: payload.effectiveStartDate,
mdfSystemExternalCode: payload.mdfSystemExternalCode,
cust_effectiveStatus: payload.cust_effectiveStatus
}]]></ee:set-payload>
</ee:message>
</ee:transform>
<successfactors:update entitySetName="cust_VendorInfo" doc:name="Update"
config-ref="SuccessFactors_Configuration"/>
<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>
<logger level="INFO" doc:name="Logger" message="#[payload]"/>
</flow>
xml
フローをテストする手順は、次のとおりです。
アプリケーションを実行します。
ブラウザーを開きます。
http://localhost:8081/update
に移動します。
次のフローでは、SuccessFactors の Delete entity 操作を使用して SuccessFactors のエントリを削除します。
Delete entity 操作フローの XML を次に示します。
<flow name="Delete-Entry" >
<http:listener doc:name="Listener"
config-ref="HTTP_Listener_config" path="/delete"/>
<ee:transform doc:name="Transform Message" >
<ee:message>
<ee:set-payload><![CDATA[var nowTime = (now() as String {format:"yyyy-MM-dd"} ++ "T00:00Z[UTC]") as DateTime
---
{
effectiveStartDate: nowTime ,
mdfSystemExternalCode:"TV60" ++ uuid(),
cust_effectiveStatus:"A"
}]]></ee:set-payload>
</ee:message>
</ee:transform>
<successfactors:create-entity entitySetName="cust_VendorInfo" doc:name="Create entity"
config-ref="SuccessFactors_Configuration" />
<ee:transform doc:name="Transform Message" >
<ee:message>
<ee:set-payload><![CDATA[output application/java
var nowTime = (now() as String {format:"yyyy-MM-dd"} ++ "T00:00Z[UTC]") as DateTime
---
{
effectiveStartDate: payload.effectiveStartDate,
mdfSystemExternalCode: payload.mdfSystemExternalCode,
}]]></ee:set-payload>
</ee:message>
</ee:transform>
<successfactors:delete-entity entitySetName="cust_VendorInfo" doc:name="Delete entity"
config-ref="SuccessFactors_Configuration" />
<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>
<logger level="INFO" doc:name="Logger" message="#[payload]"/>
</flow>
xml
フローをテストする手順は、次のとおりです。
アプリケーションを実行します。
ブラウザーを開きます。
http://localhost:8081/delete
に移動します。
これらの例のすべてのフローをすばやく Mule アプリケーションに読み込むには、次のコードを Studio XML エディターに貼り付けます。
?xml version="1.0" encoding="UTF-8"?>
<mule xmlns:ee="http://www.mulesoft.org/schema/mule/ee/core"
xmlns:successfactors="http://www.mulesoft.org/schema/mule/successfactors" 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/ee/core http://www.mulesoft.org/schema/mule/ee/core/current/mule-ee.xsd 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/successfactors http://www.mulesoft.org/schema/mule/successfactors/current/mule-successfactors.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>
<successfactors:config name="SuccessFactors_Configuration" doc:name="SuccessFactors Configuration" >
<successfactors:basic-connection companyId="${config.companyId}" userName="${config.userName}" password="${config.password}" endpointUrl="https://api4.successfactors.com/odata/v2/"/>
</successfactors:config>
<configuration-properties doc:name="Configuration properties" file="mule-app.properties" />
<http:listener-config name="HTTP_Listener_config1" doc:name="HTTP Listener config" >
<http:listener-connection host="localhost" port="8081" />
</http:listener-config>
<http:listener-config name="HTTP_Listener_config2" doc:name="HTTP Listener config" >
<http:listener-connection host="localhost" port="8081" />
</http:listener-config>
<flow name="Query" >
<http:listener doc:name="Listener"
config-ref="HTTP_Listener_config2" path="/list"/>
<successfactors:query entitySetName="User" doc:name="Query" config-ref="SuccessFactors_Configuration" >
</successfactors:query>
<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>
<logger level="INFO" doc:name="Logger" message="#[payload]"/>
</flow>
<flow name="Create-Entry" >
<http:listener doc:name="Listener"
config-ref="HTTP_Listener_config" path="/create"/>
<ee:transform doc:name="Transform Message" >
<ee:message >
<ee:set-payload ><![CDATA[var nowTime = (now() as String {format:"yyyy-MM-dd"} ++ "T00:00Z[UTC]") as DateTime
---
{
effectiveStartDate: nowTime ,
mdfSystemExternalCode:"TV60" ++ uuid(),
cust_effectiveStatus:"A"
}]]></ee:set-payload>
</ee:message>
</ee:transform>
<successfactors:create-entity doc:name="Create entity" config-ref="SuccessFactors_Configuration" entitySetName="cust_VendorInfo"/>
<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>
<logger level="INFO" doc:name="Logger" message="#[payload]"/>
</flow>
<flow name="Get-Entity-by-Id" >
<http:listener doc:name="Listener"
config-ref="HTTP_Listener_config" path="/getById"/>
<ee:transform doc:name="Transform Message" >
<ee:message >
<ee:set-payload ><![CDATA[%dw 2.0
output application/java
---
{
userId: "PSADMIN"
}]]></ee:set-payload>
</ee:message>
</ee:transform>
<successfactors:get-entity-by-id entitySetName="User" doc:name="Get entity by id"
config-ref="SuccessFactors_Configuration" />
<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>
<logger level="INFO" doc:name="Logger" message="#[payload]"/>
</flow>
<flow name="Update" >
<http:listener doc:name="Listener" config-ref="HTTP_Listener_config" path="/update"/>
<ee:transform doc:name="Transform Message" >
<ee:message>
<ee:set-payload><![CDATA[var nowTime = (now() as String {format:"yyyy-MM-dd"} ++ "T00:00Z[UTC]") as DateTime
---
{
effectiveStartDate: nowTime ,
mdfSystemExternalCode:"TV60" ++ uuid(),
cust_effectiveStatus:"A"
}]]></ee:set-payload>
</ee:message>
</ee:transform>
<successfactors:create-entity entitySetName="cust_VendorInfo" doc:name="Create entity"
config-ref="SuccessFactors_Configuration" />
<ee:transform doc:name="Transform Message" >
<ee:message >
<ee:set-payload ><![CDATA[output application/java
var nowTime = (now() as String {format:"yyyy-MM-dd"} ++ "T00:00Z[UTC]") as DateTime
---
{
effectiveStartDate: payload.effectiveStartDate,
mdfSystemExternalCode: payload.mdfSystemExternalCode,
cust_effectiveStatus: payload.cust_effectiveStatus
}]]></ee:set-payload>
</ee:message>
</ee:transform>
<successfactors:update entitySetName="cust_VendorInfo" doc:name="Update"
config-ref="SuccessFactors_Configuration"/>
<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>
<logger level="INFO" doc:name="Logger" message="#[payload]"/>
</flow>
<flow name="Delete-Entry" >
<http:listener doc:name="Listener"
config-ref="HTTP_Listener_config" path="/delete"/>
<ee:transform doc:name="Transform Message" >
<ee:message>
<ee:set-payload><![CDATA[var nowTime = (now() as String {format:"yyyy-MM-dd"} ++ "T00:00Z[UTC]") as DateTime
---
{
effectiveStartDate: nowTime ,
mdfSystemExternalCode:"TV60" ++ uuid(),
cust_effectiveStatus:"A"
}]]></ee:set-payload>
</ee:message>
</ee:transform>
<successfactors:create-entity entitySetName="cust_VendorInfo" doc:name="Create entity"
config-ref="SuccessFactors_Configuration" />
<ee:transform doc:name="Transform Message" >
<ee:message>
<ee:set-payload><![CDATA[output application/java
var nowTime = (now() as String {format:"yyyy-MM-dd"} ++ "T00:00Z[UTC]") as DateTime
---
{
effectiveStartDate: payload.effectiveStartDate,
mdfSystemExternalCode: payload.mdfSystemExternalCode,
}]]></ee:set-payload>
</ee:message>
</ee:transform>
<successfactors:delete-entity entitySetName="cust_VendorInfo" doc:name="Delete entity"
config-ref="SuccessFactors_Configuration" />
<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>
<logger level="INFO" doc:name="Logger" message="#[payload]"/>
</flow>
</mule>
xml