Flex Gateway新着情報
Governance新着情報
Monitoring API ManagerSAP SuccessFactors 用 Anypoint Connector (SuccessFactors Connector) では、SuccessFactors によって公開されている SFAPI API を使用してエンティティをクエリ、作成、更新、削除できます。本製品の詳細は、 SuccessFactors HCM スイートサイトを参照してください。
リリースノート: 『SuccessFactors Connector リリースノート』
Exchange: SuccessFactors Connector
この情報を使用するには、SAP SuccessFactors に精通して、 SAP アカウントを持っている必要があります。
このコネクタを使用するには、SuccessFactors Connector がインストールされている Anypoint Studio
が稼動している必要があります。
Anypoint Studio で、Studio タスクバーの Exchange アイコンをクリックします。
Anypoint Platform のログイン情報で Exchange にサインインします。
Anypoint Exchange で [Provided by MuleSoft (MuleSoft による提供)] をクリックします。
Mule 3 Connector を検索して [Install (インストール)] をクリックします。
SuccessFactors Connector を Mule アプリケーションで使用するには、まず Anypoint Studio で新しい Mule プロジェクトを作成します。
Anypoint Studio で、[File (ファイル)] > [New (新規)] > [Mule Project (Mule プロジェクト)] をクリックします。
新しいプロジェクトの名前を入力し、残りのオプションをデフォルト値のままにします。
Git を使用する場合、[Create a default .gitignore file (デフォルトの gitignore ファイルを作成)] を選択し (Studio プロジェクトの場合は無視設定)、[Next (次へ)] をクリックします。
[Finish (完了)] をクリックして、プロジェクトを作成します。
コネクタを Studio キャンバスにドラッグすると、Mule アプリケーションの設定 XML に名前空間とスキーマの場所が自動的に入力されます。
名前空間:
xmlns:successfactors="http://www.mulesoft.org/schema/mule/successfactors"
スキーマの場所:
http://www.mulesoft.org/schema/mule/successfactors/current/mule-successfactors.xsd
Studio の XML エディターまたは他のテキストエディターで Mule アプリケーションを手動でコーディングする場合、設定 XML のヘッダーの <mule>
タグ内で名前空間およびスキーマの場所を定義します。
Mule アプリケーションで SuccessFactors Connector を使用するには、アプリケーション内のすべての SuccessFactors Connector が使用できるグローバル設定要素を設定します。
キャンバスの下部にある [Global Elements (グローバル要素)] タブをクリックします。
[Global Mule Configuration Elements (グローバル Mule 設定要素)] 画面で、[Create (作成)] をクリックします。
[Choose Global Type (グローバル種別の選択)] ウィザードで、[Connector Configuration (コネクタ設定)] を展開し、[SuccessFactors] を選択します。
[OK] をクリックします。
以下の指示に従ってパラメーターを設定します。
項目 | 説明 |
---|---|
Name (名前) |
後ほど参照できるように設定の名前を入力します。 |
Username (ユーザー名) |
SuccessFactors にログインして API にアクセスするためのユーザー名。 |
Password (パスワード) |
そのユーザー名のパスワード。 |
Company ID (会社 ID) |
情報を管理する SuccessFactors の組織の ID。 |
Connection Timeout (接続タイムアウト) |
クライアントがタイムアウトするまで接続の確立を試みる時間 (ミリ秒) を指定します。0 を指定すると、接続の確立を無期限に試行します。 |
Receive Timeout (受信タイムアウト) |
クライアントがタイムアウトするまで応答を待機する時間 (ミリ秒) を指定します。0 を指定すると無限に待ちます。 |
WSDL Location (WSDL の場所) |
SFAPI SOAP 1.1 WSDL の場所。 |
Fetch all entities (すべてのエンティティを取得) |
すべての操作で利用できるエンティティの完全なリストを表示するには、このチェックボックスをオンにします。このリストの作成には非常に長い時間を要するため、このチェックボックスはオフにしておくことを強くお勧めします。このチェックボックスをオフにした場合は、[Entity List (エンティティリスト)] 項目を設定してください。 |
Entity List (エンティティリスト) |
[Fetch all entities (すべてのエンティティを取得)] チェックボックスをオフにした場合は必須です。作業するすべてのエンティティ名のリストを入力してください。 |
[Test Connection (接続をテスト)] をクリックし、「Connection Successful (接続に成功しました)」のメッセージが返されることを確認してください。
[OK] をクリックして、グローバルコネクタ設定を保存します。
Mule アプリケーションで SuccessFactors Connector を使用するには、アプリケーション内のすべての SuccessFactors Connector が使用できるグローバル設定要素を設定します。
設定ファイルに SuccessFactors 名前空間を含めます。
<?xml version="1.0" encoding="UTF-8"?>
<mule xmlns:successfactors="http://www.mulesoft.org/schema/mule/successfactors"
xmlns="http://www.mulesoft.org/schema/mule/core"
xmlns:doc="http://www.mulesoft.org/schema/mule/documentation"
xmlns:spring="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-current.xsd
http://www.mulesoft.org/schema/mule/core
http://www.mulesoft.org/schema/mule/core/current/mule.xsd
http://www.mulesoft.org/schema/mule/successfactors http://www.mulesoft.org/schema/mule/successfactors/current/mule-successfactors.xsd">
</mule>
xml
次のグローバル設定コードを使用して、フローの外側と上にグローバル SuccessFactors 設定を作成します。
<successfactors:config name="Success_Factors__Configuration" username="${username}" password="${password}" companyId="${companyId}" wsdlLocation="${wsdlLocation}" doc:name="Success Factors: Configuration" fetchAllEntities="false">
<successfactors:entity-list>
<successfactors:entity-list>Goal$1</successfactors:entity-list>
<successfactors:entity-list>picklistlabel</successfactors:entity-list>
<successfactors:entity-list>picklistoption</successfactors:entity-list>
<successfactors:entity-list>TrendData_sysOverallCompetency</successfactors:entity-list>
<successfactors:entity-list>user</successfactors:entity-list>
</successfactors:entity-list>
</successfactors:config>
xml
項目 | 説明 |
---|---|
Name (名前) |
後ほど参照できるように設定の名前を入力します。 |
Username (ユーザー名) |
SuccessFactors にログインして API にアクセスするためのユーザー名。 |
Password (パスワード) |
そのユーザー名のパスワード。 |
Company ID (会社 ID) |
情報を管理する SuccessFactors の組織の ID。 |
Connection Timeout (接続タイムアウト) |
クライアントがタイムアウトするまで接続の確立を試みる時間 (ミリ秒) を指定します。0 を指定すると、接続の確立を無期限に試行します。 |
Receive Timeout (受信タイムアウト) |
クライアントがタイムアウトするまで応答を待機する時間 (ミリ秒) を指定します。0 を指定すると無限に待ちます。 |
WSDL Location (WSDL の場所) |
SFAPI SOAP 1.1 WSDL の場所。 |
Fetch all entities (すべてのエンティティを取得) |
すべての操作で利用できるエンティティの完全なリストを表示するには、true に設定します。このリストの作成には非常に長い時間を要するため、このチェックボックスはオフにしておくことを強くお勧めします。false に設定した場合は、[Entity List (エンティティリスト)] 項目を設定してください。 |
Entity List (エンティティリスト) |
[Fetch all entities (すべてのエンティティを取得)] パラメーターを false に設定した場合は必須です。作業するすべてのエンティティ名のリストを入力してください。 |
操作の詳細を見るには、 SuccessFactors Connector テクニカルリファレンスを参照し、ご利用のコネクタバージョンの APIdoc をクリックしてください。
Maven 対応の Mule アプリケーションをコーディングしている場合は、次のスニペットを pom.xml
ファイルに含める必要があります。
<dependency>
<groupId></groupId>
<artifactId></artifactId>
<version>x.y.z</version>
</dependency>
xml
x.y.z
を使用しているコネクタに対応するバージョンに置き換えます。
最新の pom.xml
ファイル情報を取得するには、 Anypoint Exchange でコネクタにアクセスし、[Dependency Snippets (連動関係スニペット)] をクリックします。
SuccessFactors Connector は操作ベースのコネクタであり、SFAPI API によって公開されている Web サービス操作を呼び出すことができます。
このマニュアルセクションでは、このコネクタのシンプルなユースケースシナリオを簡単に説明します。
すべてのユースケース例は、1 つの Mule アプリケーションに保存されています。ユースケースのフロー XMLを参照してください。
このフローは、組織内のエンティティのリストを取得します。
コネクタ自身は、選択する操作以外は追加の設定を必要としません。
テストするため、Studio でフローを実行し、ブラウザーウィンドウを開きます。http://localhost:8081/
にアクセスして、[List Entities] セクションにある [List (リスト)] ボタンをクリックします。
このフローは、組織内のエンティティから利用できるメタデータをすべて取得します。
Describe Entities 操作では、メタデータを取得するエンティティに対応する文字列のリストのみを指定する必要があります。次の例では、先行するエンドポイントから送信されたペイロードを取るように次の入力を設定します。
コネクタ用の入力を設計するには、Transform Message コンポーネントを介して利用できる Dataweave を使用します。出力は、HTTP Connector からのクエリパラメーター「entity」を唯一の要素として含むリストです。
Transform Message コンポーネント内で、DataWeave エディターに次の DataWeave コードを追加します。
%dw 1.0 %output application/java --- [inboundProperties."http.query.params".'entity']
text
Studio でフローを実行してテストし、ブラウザーウィンドウを開きます。http://localhost:8081/
にアクセスします。[List Entities] セクションにある [List (リスト)] をクリックして、いずれかのエンティティ名をクリックします。そして、[Describe Entities] セクションにある [Describe (説明)] ボタンをクリックし、選択したエンティティで利用できるすべてのメタデータを表示します。
このフローは、SuccessFactors に対してクエリを実行して応答を表示します。
Query 操作では、クエリとページサイズを指定する必要があります。
ネイティブ (SFQL) クエリ言語を入力するか、または DataSense クエリビルダーを使用してクエリを作成できます。
ページサイズはデフォルトのままで構いません。
テストするため、Mule Studio でフローを実行し、ブラウザーウィンドウを開きます。 http://localhost:8081/query
にアクセスします。
ブラウザーにクエリの結果が表示されます。
このフローは次の処理を実行します。
新規ユーザーを挿入する (すでに存在する場合は更新する)。
更新/挿入の結果を返す。
SuccessFactors エンドポイントを Upsert 操作で設定する必要があります。まず、更新/挿入するエンティティの種別を選択します。この例では User です。[Type (種別)] ドロップダウンの内容が表示されていない場合は、右側の更新ボタンをクリックします。 DataWeave によってペイロードから入力構造が取得されます。
DataWeave は、HTTP エンドポイントのペイロードから取った JSON オブジェクトを、Upsert 操作で必要な入力であるマップに変換します。
テストするため、Mule Studio でフローを実行し、ブラウザーウィンドウを開きます。http://localhost:8081/
にアクセスし、[Upsert User] セクションにある [Submit (送信)] ボタンをクリックして、Upsert 操作の結果をブラウザーで表示します。
このフローは次の処理を実行します。
User エンティティを新しいユーザー名で更新する。
最後の更新からの出力を返す。
SuccessFactors エンドポイントを Update 操作で設定する必要があります。まず、更新するエンティティの種別を選択します。ここでは User です。[Type (種別)] ドロップダウンの内容が表示されていない場合は、右側の更新ボタンをクリックします。 DataWeave によってペイロードから入力構造が取得されます。
DataWeave は、HTTP エンドポイントのペイロードから取った JSON オブジェクトを、Update 操作で必要な入力であるマップに変換します。
テストするため、Mule Studio でフローを実行し、ブラウザーウィンドウを開きます。http://localhost:8081/
にアクセスし、[Update User (ユーザーを更新)] セクションにある [Submit (送信)] ボタンをクリックして、Update 操作の結果をブラウザーで表示します。Upsert のデモを実行してある場合は、Update ジョブの入力はすでに設定されています。
このフローは、新しい Goal$1 エンティティを挿入して、挿入からの出力を返します。
SuccessFactors エンドポイントを Insert 操作で設定する必要があります。挿入するエンティティの種別を選択します。ここでは Goal$1 です。[Type (種別)] ドロップダウンの内容が表示されていない場合は、右側の更新ボタンをクリックします。 DataWeave によってペイロードから入力構造が取得されます。
DataWeave は、HTTP エンドポイントのペイロードから取った JSON オブジェクトを、Insert 操作で必要な入力であるマップに変換します。
テストするため、Mule Studio でフローを実行し、ブラウザーウィンドウを開きます。http://localhost:8081/
にアクセスし、[Insert Goals] セクションにある [Submit (送信)] ボタンをクリックして、Insert 操作の結果をブラウザーで表示します。
このフローは、既存の Goal エンティティを削除して、削除からの出力を返します。
SuccessFactors エンドポイントを Delete 操作で設定する必要があります。削除するエンティティの種別を選択します。[Type (種別)] ドロップダウンの内容が表示されていない場合は、右側の更新ボタンをクリックします。 DataWeave によってペイロードから入力構造が取得されます。
DataWeave は、HTTP エンドポイントのペイロードから取った JSON オブジェクトを、Delete 操作で必要な入力であるマップに変換します。
テストするため、Mule Studio でフローを実行し、ブラウザーウィンドウを開きます。http://localhost:8081/
にアクセスし、[Delete Goals] セクションにある [Submit (送信)] ボタンをクリックして、Delete 操作の結果をブラウザーで表示します。Insert のデモを実行してある場合は、Delete ジョブの入力はすでに設定されています。
ユースケースの例を実行するには、次のコードを XML エディターに貼り付けます。
<?xml version="1.0" encoding="UTF-8"?>
<mule xmlns:scripting="http://www.mulesoft.org/schema/mule/scripting"
xmlns:tracking="http://www.mulesoft.org/schema/mule/ee/tracking"
xmlns:dw="http://www.mulesoft.org/schema/mule/ee/dw"
xmlns:json="http://www.mulesoft.org/schema/mule/json" xmlns:successfactors="http://www.mulesoft.org/schema/mule/successfactors" xmlns:mulexml="http://www.mulesoft.org/schema/mule/xml"
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:spring="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-current.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/xml
http://www.mulesoft.org/schema/mule/xml/current/mule-xml.xsd
http://www.mulesoft.org/schema/mule/ee/dw
http://www.mulesoft.org/schema/mule/ee/dw/current/dw.xsd
http://www.mulesoft.org/schema/mule/successfactors
http://www.mulesoft.org/schema/mule/successfactors/current/mule-successfactors.xsd
http://www.mulesoft.org/schema/mule/json
http://www.mulesoft.org/schema/mule/json/current/mule-json.xsd
http://www.mulesoft.org/schema/mule/ee/tracking
http://www.mulesoft.org/schema/mule/ee/tracking/current/mule-tracking-ee.xsd
http://www.mulesoft.org/schema/mule/scripting
http://www.mulesoft.org/schema/mule/scripting/current/mule-scripting.xsd">
<http:listener-config name="HTTP_Listener_Configuration" host="0.0.0.0" port="8081"
doc:name="HTTP Listener Configuration"/>
<successfactors:config name="Success_Factors__Configuration" username="${username}"
password="${password}" companyId="${companyId}" wsdlLocation="${wsdlLocation}"
doc:name="Success Factors: Configuration">
<successfactors:entity-list>
<successfactors:entity-list>Goal$1</successfactors:entity-list>
<successfactors:entity-list>picklistlabel</successfactors:entity-list>
<successfactors:entity-list>picklistoption</successfactors:entity-list>
<successfactors:entity-list>TrendData_sysOverallCompetency</successfactors:entity-list>
<successfactors:entity-list>user</successfactors:entity-list>
</successfactors:entity-list>
</successfactors:config>
<scripting:transformer name="EntityForCrudObject" doc:name="Groovy">
<scripting:script engine="Groovy" file="src/main/resources/EntityForCrudObject.groovy"></scripting:script>
</scripting:transformer>
<scripting:transformer name="AddIdToEntity" doc:name="Groovy">
<scripting:script engine="Groovy" file="src/main/resources/AddIdToEntity.groovy"></scripting:script>
</scripting:transformer>
<flow name="htmlFormFlow">
<http:listener config-ref="HTTP_Listener_Configuration" path="/" doc:name="/"/>
<parse-template location="form.html" doc:name="Parse Template"/>
<set-property propertyName="Content-Type" value="text/html" doc:name="Property"/>
</flow>
<flow name="listEntitiesFlow">
<http:listener config-ref="HTTP_Listener_Configuration" path="list" doc:name="/list"/>
<successfactors:list-entities config-ref="Success_Factors__Configuration" doc:name="Success Factors"/>
<json:object-to-json-transformer doc:name="Object to JSON"/>
</flow>
<flow name="describeEntitiesFlow">
<http:listener config-ref="HTTP_Listener_Configuration" path="describe" doc:name="/describe"/>
<dw:transform-message doc:name="Transform Message">
<dw:input-variable variableName="entity"/>
<dw:input-inbound-property doc:sample="map_string_string.dwl" propertyName="http.query.params"/>
<dw:input-inbound-property propertyName="http.uri.params"/>
<dw:set-payload><![CDATA[%dw 1.0%output application/java
---
[inboundProperties."http.query.params".'entity']]]></dw:set-payload>
</dw:transform-message>
<successfactors:describe-entities config-ref="Success_Factors__Configuration" doc:name="Success Factors"/>
<json:object-to-json-transformer doc:name="Object to JSON"/>
</flow>
<flow name="queryFlow">
<http:listener config-ref="HTTP_Listener_Configuration" path="query" doc:name="/query"/>
<successfactors:query config-ref="Success_Factors__Configuration" doc:name="Success Factors"
queryString="dsql:SELECT email,externalId,firstName,lastName,username FROM user"/>
<json:object-to-json-transformer doc:name="Object to JSON"/>
</flow>
<flow name="submitQueryFlow">
<http:listener config-ref="HTTP_Listener_Configuration" path="submitQueryJob" doc:name="/submitQueryJob"/>
<dw:transform-message doc:name="Transform Message">
<dw:set-payload><![CDATA[%dw 1.0
%output application/java
---
inboundProperties."http.query.params".'query']]></dw:set-payload>
</dw:transform-message>
<successfactors:submit-query-job config-ref="Success_Factors__Configuration" doc:name="Success Factors"/>
<json:object-to-json-transformer doc:name="Object to JSON"/>
</flow>
<flow name="getJobResultFlow">
<http:listener config-ref="HTTP_Listener_Configuration" path="getJobResult" doc:name="/getJobResult"/>
<dw:transform-message doc:name="Transform Message">
<dw:input-inbound-property propertyName="http.query.params" doc:sample="map_string_string_1.dwl"/>
<dw:set-payload><![CDATA[%dw 1.0
%output application/java
---
{
format: "csv",
taskId: inboundProperties."http.query.params".'taskId'
} as :object {
class : "com.successfactors.sfapi.sfobject.GetJobResult"
}]]></dw:set-payload>
</dw:transform-message>
<successfactors:get-job-result config-ref="Success_Factors__Configuration" doc:name="Success Factors"/>
</flow>
<flow name="upsertFlow">
<http:listener config-ref="HTTP_Listener_Configuration" path="upsert" doc:name="/upsert" allowedMethods="POST,"/>
<dw:transform-message doc:name="Transform Message">
<dw:input-payload doc:sample="json.json"/>
<dw:set-payload><![CDATA[%dw 1.0
%output application/java
---
// Some output fields were skipped as the structure is too deep (more than 2 levels).
// To add missing fields click on the scaffold icon (second on the toolbar).
payload]]></dw:set-payload>
</dw:transform-message>
<logger message="Executing upsert: #[payload]" level="INFO" doc:name="Logger"/>
<successfactors:upsert config-ref="Success_Factors__Configuration" type="user" doc:name="Update/Insert a User"
doc:description="try to create a new user, if the user exists only updates it">
<successfactors:input ref="#[payload]"/>
</successfactors:upsert>
<json:object-to-json-transformer doc:name="Object to JSON"/>
<logger message="Upsert result: #[payload]" level="INFO" doc:name="Logger"/>
</flow>
<flow name="updateFlow">
<http:listener config-ref="HTTP_Listener_Configuration" path="/update" doc:name="/update"/>
<dw:transform-message doc:name="Transform Message">
<dw:input-payload doc:sample="json_1.json"/>
<dw:set-payload><![CDATA[%dw 1.0
%output application/java
---
payload]]></dw:set-payload>
</dw:transform-message>
<logger message="Executing update: #[payload]" level="INFO" doc:name="Logger"/>
<successfactors:update config-ref="Success_Factors__Configuration" type="user" doc:name="Update a User">
<successfactors:input ref="#[payload]"/>
</successfactors:update>
<json:object-to-json-transformer doc:name="Object to JSON"/>
<logger message="Update result: #[payload]" level="INFO" doc:name="Logger"/>
</flow>
<flow name="insertFlow">
<http:listener config-ref="HTTP_Listener_Configuration" path="/insert" doc:name="/insert"/>
<dw:transform-message doc:name="Transform Message">
<dw:input-payload doc:sample="json_2.json"/>
<dw:set-payload><![CDATA[%dw 1.0
%output application/java
---
payload]]></dw:set-payload>
</dw:transform-message>
<logger message="Executing insert: #[payload]" level="INFO" doc:name="Logger"/>
<successfactors:insert config-ref="Success_Factors__Configuration" type="Goal$1" doc:name="Insert a Goal$1"/>
<json:object-to-json-transformer doc:name="Object to JSON"/>
<logger message="Insert result: #[payload]" level="INFO" doc:name="Logger"/>
</flow>
<flow name="deleteFlow">
<http:listener config-ref="HTTP_Listener_Configuration" path="/delete" doc:name="/delete"/>
<dw:transform-message doc:name="Transform Message">
<dw:input-payload doc:sample="json_3.json"/>
<dw:set-payload><![CDATA[%dw 1.0
%output application/java
---
payload]]></dw:set-payload>
</dw:transform-message>
<logger message="Executing delete: #[payload]" level="INFO" doc:name="Logger"/>
<successfactors:delete config-ref="Success_Factors__Configuration" type="Goal$1" doc:name="Delete a Goal$1"/>
<json:object-to-json-transformer doc:name="Object to JSON"/>
<logger message="Delete result: #[payload]" level="INFO" doc:name="Logger"/>
</flow>
<flow name="queryNativeFlow">
<http:listener config-ref="HTTP_Listener_Configuration" path="queryNative" doc:name="/queryNative"/>
<dw:transform-message doc:name="Transform Message">
<dw:set-payload><![CDATA[%dw 1.0
%output application/java
---
inboundProperties."http.query.params".'query']]></dw:set-payload>
</dw:transform-message>
<successfactors:query config-ref="Success_Factors__Configuration" queryString="#[payload]" doc:name="Success Factors"/>
<json:object-to-json-transformer doc:name="Object to JSON"/>
</flow>
</mule>
xml