Anypoint Studio での Workday の使用方法

このコネクタは、連動関係として Mule アプリケーションに追加すれば Anypoint Studio で使用できます。

Studio でコネクタをインストールする

  1. Anypoint Studio で Mule プロジェクトを開きます。

  2. コネクタを連動関係として pom.xml ファイルに追加します。

    <dependency>
      <groupId>org.mule.connectors</groupId>
      <artifactId>mule-workday-connector</artifactId>
      <version>9.0.0</version>
    </dependency>

Studio 7 での設定

  1. コネクタをドラッグして Studio キャンバスにドロップします。

  2. コネクタのグローバル要素を設定します。

    項目 説明

    Username (ユーザ名)

    ログインに使用するユーザ名を入力します。

    Password (パスワード)

    対応するパスワードを入力します。

    Tenant Name (テナント名)

    Workday テナント ID を入力します。通常は、「acme_pt1」のようにサフィックス「pt_1」が付加されます。

    Host Name (ホスト名)

    Workday のいずれかのクラウドサーバのホスト名を入力します。デフォルト値: impl-cc.workday.com。

    Custom Transport (カスタムトランスポート)

    接続アイドルタイムアウトおよび応答タイムアウト。プロキシ接続をセットアップします。

[Test Connection (接続をテスト)] ボタンを使用して接続性を検証するために、Workday コネクタは Get_Workday_Account_Signons_Request 操作で Identity_Management WSDL サービスを使用します。サービスアカウントにそのサービスで操作を実行する権限があることを確認してください。権限がない場合、[Test Connection (接続をテスト)] の使用は失敗します。

ユースケース: Studio

Workday インシデントテーブルキーを取得する

Workday インスタンスの [Incident (インシデント)] テーブルからキーを取得するために Mule フローを作成します。

  1. Studio で新しい Mule アプリケーションを作成し、新規フローのソースとして [HTTP Listener (HTTP リスナ)] を選択します。

  2. 新しい HTTP リスナ設定のグローバル要素を追加します。

    1. [Host (ホスト)] および [Port (ポート)] パラメータに次の値を入力します。

      パラメータ

      Host (ホスト)

      0.0.0.0

      Port (ポート)

      8081

    2. [Save (保存)] をクリックします。

  3. 新しいグローバル設定を HTTP リスナに割り当てます。

  4. HTTP リスナのパスに /incident/get という値を設定します。

  5. 新しい Workday コンポーネントをドラッグしてフローにドロップします。

  6. [General (一般)] タブの環境値を使用して Workday コネクタのグローバル要素を設定します。

  7. コネクタの前に [Transform Message (メッセージの変換)] を追加し、次のような出力を追加します。

    %dw 2.0
    output application/xml
    ns ns0 urn:com.workday/bsvc
    ---
    {
    ns0#Put_Applicant_Request @(ns0#version: "v28.0"): {
    	ns0#Applicant_Data: {
    		ns0#Personal_Data: {
    			ns0#Name_Data: {
    				ns0#Legal_Name_Data: {
    					ns0#Name_Detail_Data: {
    						ns0#Country_Reference: {
    							ns0#ID @(ns0#"type": "ISO_3166-1_Alpha-2_Code"): payload.countryIDValue
    						},
    						ns0#First_Name: payload.firstName,
    						ns0#Last_Name: payload.lastName
    					}
    				}
    			},
    			ns0#Contact_Data: {
    				ns0#Email_Address_Data: {
    					ns0#Email_Address: payload.email,
    					ns0#Usage_Data @(ns0#Public: true): {
    						ns0#Type_Data @(ns0#Primary: true): {
    							ns0#Type_Reference: {
    								ns0#ID @(ns0#"type": "Communication_Usage_Type_ID"): "Home"
    							}
    						}
    					}
    				}
    			}
    		},
    		ns0#Recruiting_Data: {
    			ns0#Ineligible_for_Hire: false,
    			ns0#Positions_Considered_for_Reference: {
    				ns0#ID @(ns0#"type": "Position_ID"): payload.applicantPositionIDValue
    			}
    		},
    		ns0#Background_Check_Data: {
    			ns0#Status_Date: payload.statusDate,
    			ns0#Status_Reference: {
    				ns0#ID @(ns0#"type": "Background_Check_Status_ID"): payload.backgroundCheckStatusIDValue
    			}
    		}
    	}
    }
    }
  8. プロジェクトを保存し、Mule アプリケーションとして実行します。

  9. アプリケーションをテストするため、http://127.0.0.1:8081/incident/get に移動します。

Studio でタイムアウトを増やす方法

Studio 使用中の接続状態に応じて、Workday コネクタからのメタデータの取得中にタイムアウトが発生する場合があります。

症状

この状態では 2 つのタイプのエラーが考えられます。

org.mule.runtime.api.exception.MuleRuntimeException: Error while retrieving soap client id [Absence_Management]
  org.mule.runtime.api.exception.MuleRuntimeException: Error while retrieving soap client id [Absence_Management]
  Caused by: java.util.concurrent.ExecutionException:
  org.mule.wsdl.parser.exception.WsdlParsingException: Error processing
  WSDL file [https://wd3-impl-services1.workday.com/ccx/service/deakin_amu1/Absence_Management/v29.1?wsdl]:
  Unable to locate document at 'https://wd3-impl-services1.workday.com/ccx/service/deakin_amu1/Absence_Management/v29.1?wsdl&#39;.

または

org.mule.tooling.client.api.exception.TimeoutException: Mule Agent REST service timed out
  org.mule.tooling.client.api.exception.TimeoutException: Mule Agent REST service timed out
  javax.ws.rs.ProcessingException: java.net.SocketTimeoutException: Read timed out
  	at org.glassfish.jersey.client.HttpUrlConnector.apply(HttpUrlConnector.java:244)
  	at org.glassfish.jersey.client.ClientRuntime.invoke(ClientRuntime.java:245)
  	at org.glassfish.jersey.client.JerseyInvocation$1.call(JerseyInvocation.java:671)
  	at org.glassfish.jersey.client.JerseyInvocation$1.call(JerseyInvocation.java:668)
  	at org.glassfish.jersey.internal.Errors.process(Errors.java:315)
  	at org.glassfish.jersey.internal.Errors.process(Errors.java:297)
  	at org.glassfish.jersey.internal.Errors.process(Errors.java:228)
  	at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:444)
  	at org.glassfish.jersey.client.JerseyInvocation.invoke(JerseyInvocation.java:668)
  	at

解決策

これらのいずれかの状態が発生する場合、[Preferences (プリファレンス)] > [Anypoint Studio] > [Tooling (ツール設定)] で Studio の Default Connection Timeout および Default Read Timeout の値を増やします。 値を 2 倍に増やして適用し、Studio を再起動します。

ユースケース: XML

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

<mule xmlns:workday="http://www.mulesoft.org/schema/mule/workday"
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/workday
http://www.mulesoft.org/schema/mule/workday/current/mule-workday.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>
	<configuration-properties file="mule-app.properties"/>
	<workday:config name="Workday_Config" doc:name="Workday Config" >
		<workday:basic-connection username="${workday.username}"
		password="${workday.password}" tenantName="${workday.tenantName}"
		hostName="${workday.hostName}">
			<workday:transport >
				<workday:default-http-message-dispatcher-provider />
			</workday:transport>
		</workday:basic-connection>
	</workday:config>
	<flow name="payroll-gbr-get-form">
		<http:listener config-ref="HTTP_Listener_config" path="/" doc:name="/"  />
		<parse-template location="form.html" doc:name="Parse Template"  />
	</flow>
	<flow name="create-position" >
		<http:listener config-ref="HTTP_Listener_config" path="/create-position"
		doc:name="/create-position" />
		<logger level="INFO" doc:name="Logger" />
		<ee:transform doc:name="Transform Message" >
			<ee:message >
				<ee:set-payload ><![CDATA[%dw 2.0
output application/xml
ns ns0 urn:com.workday/bsvc
---
{
	ns0#Create_Position_Request @(ns0#version: "v28.0"): {
		ns0#Business_Process_Parameters: {
			ns0#Auto_Complete: true,
			ns0#Run_Now: true
		},
		ns0#Create_Position_Data: {
			ns0#Supervisory_Organization_Reference: {
				ns0#ID @(ns0#"type":"Organization_Reference_ID"): payload.organizationReferenceID
			},
			ns0#Position_Data: {
				ns0#Job_Posting_Title: payload.jobPostingTitle
			},
			ns0#Position_Group_Restrictions_Data: {
				ns0#Availability_Date: payload.availabilityDate,
				ns0#Earliest_Hire_Date: payload.earliestHireDate
			},
			ns0#Edit_Assign_Organization_Sub_Process: {
				ns0#Business_Sub_Process_Parameters: {
					ns0#Skip: true
				}
			},
			ns0#Request_Default_Compensation_Sub_Process: {
				ns0#Business_Sub_Process_Parameters: {
					ns0#Skip: true
				}
			},

			ns0#Assign_Pay_Group_Sub_Process: {
				ns0#Business_Sub_Process_Parameters: {
					ns0#Skip: true
				}
			},
			ns0#Assign_Costing_Allocation_Sub_Process: {
				ns0#Business_Sub_Process_Parameters: {
					ns0#Skip: true
				}
			}
		}
	}
}]]></ee:set-payload>
	</ee:message>
	<ee:variables >
	<ee:set-variable variableName="myPayload" ><![CDATA[%dw 2.0
output application/xml
ns ns0 urn:com.workday/bsvc
---
{
	ns0#Create_Position_Request @(ns0#version: "v28.0"): {
		ns0#Business_Process_Parameters: {
			ns0#Auto_Complete: true,
			ns0#Run_Now: true
		},
		ns0#Create_Position_Data: {
			ns0#Supervisory_Organization_Reference: {
				ns0#ID @(ns0#"type":"Organization_Reference_ID"): payload.organizationReferenceID
			},
			ns0#Position_Data: {
				ns0#Job_Posting_Title: payload.jobPostingTitle
			},
			ns0#Position_Group_Restrictions_Data: {
				ns0#Availability_Date: payload.availabilityDate,
				ns0#Earliest_Hire_Date: payload.earliestHireDate
			},
			ns0#Edit_Assign_Organization_Sub_Process: {
				ns0#Business_Sub_Process_Parameters: {
					ns0#Skip: true
				}
			},
			ns0#Request_Default_Compensation_Sub_Process: {
				ns0#Business_Sub_Process_Parameters: {
					ns0#Skip: true
				}
			},

			ns0#Assign_Pay_Group_Sub_Process: {
				ns0#Business_Sub_Process_Parameters: {
					ns0#Skip: true
				}
			},
			ns0#Assign_Costing_Allocation_Sub_Process: {
				ns0#Business_Sub_Process_Parameters: {
					ns0#Skip: true
				}
			}
		}
	}
}]]></ee:set-variable>
			</ee:variables>
		</ee:transform>
		<workday:invoke config-ref="Workday_Config" doc:name="Staffing-Create_Position"
		service="Staffing" operation="Create_Position">
			<workday:message >
				<workday:body ><![CDATA[#[vars.myPayload]]]></workday:body>
			</workday:message>
		</workday:invoke>
		<ee:transform doc:name="Transform Message" >
			<ee:message >
				<ee:set-payload ><![CDATA[%dw 2.0
output application/json
ns ns0 urn:com.workday/bsvc
---
{
	ID: payload.body.Create_Position_Response.Position_Reference[1]
}]]></ee:set-payload>
			</ee:message>
		</ee:transform>
		<logger level="INFO" doc:name="Logger"  />
	</flow>
</mule>

Was this article helpful?

💙 Thanks for your feedback!

Edit on GitHub