SAP SuccessFactors Connector 4.1 - 例 - Mule 4

この例では、以下の方法を含め、SAP SuccessFactors のいくつかの標準操作を呼び出すフローを作成する方法を示します。

始める前に

これらのフローを構築して実行するには、以下が必要です。

  • OpenJDK 8 または 11

  • Anypoint Studio 7.1 以降

  • Mule 4.2.2 以降

  • SuccessFactors Connector 3.x 以降。

  • OData API 要求を送信するための SuccessFactors ログイン情報。

  • DataWeave 2.0

Mule プロジェクトを作成する

Studio で、コネクタを追加および設定する新しい Mule プロジェクトを作成します。

  1. Studio で、​[File (ファイル)] > [New (新規)] > [Mule Project (Mule プロジェクト)]​ を選択します。

  2. [Project Name (プロジェクト名)]​ に Mule プロジェクトの名前を入力します。
    この例では ​successfactors-operations​ という名前を使用します。

  3. [Finish (完了)]​ をクリックします。

ログイン情報の指定

  1. Package Explorer​ で ​/src/main/resources/​ の下に ​mule-app.properties​ という名前のファイルを作成します。

  2. SuccessFactors に接続するためのログイン情報を指定します。例:

    config.companyId=<your-company-id>
    config.userName=<successfactors-username>
    config.password=<successfactors-password>
  3. ファイルを保存します。

コネクタのグローバル要素を設定する

対象の SuccessFactors システムにアクセスするためにコネクタが必要とする認証ログイン情報を指定するようにグローバル要素を設定します。

  1. Studio キャンバスの下部にある ​[Global Elements (グローバル要素)]​ をクリックします。

  2. [SAP SuccessFactors Config (SAP SuccessFactors 設定)]​ を選択して ​[Edit (編集)]​ をクリックします。

  3. [SAP SuccessFactors Configuration (SAP SuccessFactors 設定)] ウィンドウで、次のように接続ログイン情報を入力します。

    • Company ID (会社 ID)​: ${config.companyId}

    • User Name (ユーザー名)​: ${config.userName}

    • Password (パスワード)​: ${config.password}

  4. [Data Center’s Endpoint URL (データセンターのエンドポイント URL)]​ ドロップダウンから SuccessFactor の Web API URL を選択します。

    次のイメージは、基本認証の設定例を示しています。

    [Global Element Properties (グローバル要素プロパティ)] ウィンドウでの基本認証
  5. [OK]​ をクリックします。

  6. [Test Connection (接続をテスト)]​ をクリックして、SAP SuccessFactors への接続を確認します。

    成功メッセージが表示されます。

Query 操作フローの作成

Query​ 操作を使用して指定された種別のエンティティに対してクエリを実行するフローを作成します。

  1. [Mule Palette (Mule パレット)]​ ビューで、​[HTTP] > [Listener]​ を選択します。

  2. [Listener]​ を Studio キャンバスにドラッグします。

  3. [Listener (リスナー)]​ 設定画面で、必要に応じて ​[Display Name (表示名)]​ 項目の値を変更します。

  4. [Path (パス)]​ 項目に「​/list​」を指定します。

  5. [Connector configuration (コネクタ設定)]​ 項目の横にあるプラス記号 (​+​) をクリックして、アプリケーション内の HTTP ​Listener​ のすべてのインスタンスで使用できるグローバル要素を設定します。

    1. [General (一般)]​ タブで、コネクタの接続情報を指定します。

    2. [Test Connection (接続をテスト)]​ をクリックして、Mule が指定されたサーバーに接続できることを確認します。

    3. [OK]​ をクリックします。

  6. [Mule Palette (Mule パレット)]​ ビューで ​[SAP SuccessFactors]​ を選択し、​[Query]​ 操作を選択して Studio キャンバスの ​[Listener]​ 操作の右にドラッグします。

  7. [Mule Palette (Mule パレット)]​ の左ペインで ​[Favorites (お気に入り)]​ をクリックします。

  8. [Transform Message]​ を選択して Studio キャンバスの ​[Query]​ 操作の右にドラッグします。
    Transform Message​ コンポーネントでは、データ構造と形式を変換し、コネクタが想定する出力 (この場合は ​application/json​) を生成します。

    %dw 2.0
    output application/json
    ---
    payload
  9. フローの最後に ​payload​ (または ​#[payload]​) をメッセージとして使用する ​Logger​ コンポーネントを追加します。

次の画像は、SuccessFactors の ​Query​ 操作フローを示しています。

HTTP Listener ソース、SuccessFactory の Query 操作、Transform Message および Logger コンポーネントを使用する Mule フロー

クエリを作成するための XML

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>

フローをテストする

フローをテストする手順は、次のとおりです。

  1. アプリケーションを実行します。

  2. ブラウザーを開きます。

  3. http://localhost:8081/list​ に移動します。

SuccessFactors のエントリの作成例

次のフローでは、SuccessFactors の ​Create entity​ 操作を使用して SuccessFactors のエントリを作成します。

HTTP Listener ソース、SuccessFactors の Create entity 操作、Transform Message および Logger コンポーネントを使用する Mule フロー

エンティティを作成するための XML

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>

フローをテストする

フローをテストする手順は、次のとおりです。

  1. アプリケーションを実行します。

  2. ブラウザーを開きます。

  3. http://localhost:8081/create​ に移動します。

ID でエンティティを取得するフロー

次のフローでは、​Get entity by id​ 操作を使用して ID でエンティティを取得します。

HTTP Listener ソース、SuccessFactors の Get entity by id 操作、Transform Message および Logger コンポーネントを使用する Mule フロー

ID でエンティティを取得するための XML

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>

フローをテストする

フローをテストする手順は、次のとおりです。

  1. アプリケーションを実行します。

  2. ブラウザーを開きます。

  3. http://localhost:8081/getById​ に移動します。

SuccessFactors のエントリの更新

次のフローでは、SuccessFactors の ​Update​ 操作を使用して SuccessFactors のエントリを更新します。

HTTP Listener ソース、SuccessFactors の Create entity および Update 操作、Transform Message および Logger コンポーネントを使用する Mule フロー

エンティティを更新するための XML

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>

フローをテストする

フローをテストする手順は、次のとおりです。

  1. アプリケーションを実行します。

  2. ブラウザーを開きます。

  3. http://localhost:8081/update​ に移動します。

SuccessFactors のエントリの削除

次のフローでは、SuccessFactors の ​Delete entity​ 操作を使用して SuccessFactors のエントリを削除します。

HTTP Listener ソース、SuccessFactors の Create entity および Delete entity 操作、Transform Message および Logger コンポーネントを使用する Mule フロー

エンティティを更新するための XML

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>

フローをテストする

フローをテストする手順は、次のとおりです。

  1. アプリケーションを実行します。

  2. ブラウザーを開きます。

  3. http://localhost:8081/delete​ に移動します。

SuccessFactor 操作の XML

これらの例のすべてのフローをすばやく 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>