2017-06-01 51 views
1

我想在Workday中使用他們的API編輯自定義員工數據,但實際的自定義數據格式未在文檔中指定。另外,我無法找到檢索其他工作人員數據的方法。谷歌沒有找到任何使用他們的API的例子(Edit_Worker_Additional_Data函數)。使用Workday API編輯工作人員額外數據

回答

2

這就是SOAP請求的樣子,包括所有可選參數。

<?xml version="1.0" encoding="UTF-8"?> 
<env:Envelope 
    xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" 
    xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
    <env:Body> 
     <wd:Edit_Worker_Additional_Data_Request 
      xmlns:wd="urn:com.workday/bsvc" 
      wd:version="v28.0"> 
      <wd:Business_Process_Parameters> 
       <wd:Auto_Complete>true</wd:Auto_Complete> 
       <wd:Run_Now>true</wd:Run_Now> 
       <wd:Comment_Data> 
        <wd:Comment>abcdef</wd:Comment> 
        <wd:Worker_Reference> 
         <wd:ID wd:type="Contingent_Worker_ID">abcdef</wd:ID> 
        </wd:Worker_Reference> 
       </wd:Comment_Data> 
      </wd:Business_Process_Parameters> 

      <wd:Worker_Custom_Object_Data> 
       <wd:Effective_Date>2017-07-20</wd:Effective_Date> 
       <wd:Worker_Reference> 
        <wd:ID wd:type="Contingent_Worker_ID">abcdef</wd:ID> 
       </wd:Worker_Reference> 
       <wd:Business_Object_Additional_Data></wd:Business_Object_Additional_Data> 
      </wd:Worker_Custom_Object_Data> 
     </wd:Edit_Worker_Additional_Data_Request> 
    </env:Body> 
</env:Envelope> 

你必須定義內

<wd:Business_Object_Additional_Data></wd:Business_Object_Additional_Data> 

自定義對象(或其他數據)的元素。如果您的自定義對象定義爲「的TestObject」例如,你需要兩個對象和字段參考ID,它看起來像這樣:

<wd:Business_Object_Additional_Data> 
      <cus:TestObject> 
       <cus:TestObjectField>Value</cus:TestObjectField> 
      </cus:TestObject> 
</wd:Business_Object_Additional_Data> 
2

如果您使用的是Java,下面是使用Workday API更新工作人員數據的示例。 這不是Edit_Worker_Additional_Data,但它們的工作都非常相似,也許這段代碼可以幫助別人開始。這裏的所有Java類都是使用jaxws-maven-plugin從wsdl生成的,WorkdayCredentials類除外,請參閱Workday Soap API - User Name/Password

public void updateWorkerContactInfo(Worker worker) throws WorkerDataException, 
      WorkerDataInvalidException { 
     HumanResourcesPort hrPort = hrService.getHumanResources(); 

     BindingProvider bp = (BindingProvider) hrPort; 

     WorkdayCredentials.addWorkdayCredentials(bp, 
       config.getWdIntegrationUsername(), 
       config.getWdIntegrationPassword()); 

     MaintainContactInformationForPersonEventRequestType body 
      = new MaintainContactInformationForPersonEventRequestType(); 

     body.setAddOnly(false); 

     BusinessProcessParametersType params = new BusinessProcessParametersType(); 
     params.setAutoComplete(false); 
     params.setRunNow(false); 

     body.setBusinessProcessParameters(params); 

     ContactInformationForPersonEventDataType contactData 
      = new ContactInformationForPersonEventDataType(); 

     edu.bowdoin.workdayservice.data.hr.WorkerObjectType workerObjectType 
      = new edu.bowdoin.workdayservice.data.hr.WorkerObjectType(); 

     edu.bowdoin.workdayservice.data.hr.WorkerObjectIDType idType 
      = new edu.bowdoin.workdayservice.data.hr.WorkerObjectIDType(); 

     idType.setType("Employee_ID"); 
     idType.setValue(worker.getWorkerId()); 

     workerObjectType.getID().add(idType); 

     contactData.setWorkerReference(workerObjectType); 

     Date effectiveDate = new Date(); 

     // set the effective date to the hire date + 1 day, this has to be 
     // greater than any other change to the worker address data, for 
     // example during the new hire process 
     if (worker.getHireDate() != null) { 

      DateTime hireDate = new DateTime(worker.getHireDate()); 
      DateTime hireDatePlus1Day = hireDate.plusDays(1); 
      DateTime today = DateTime.now(); 

      // only use hire date plus 1 if it is after today's date 
      if (hireDatePlus1Day.isAfter(today)) { 
       effectiveDate = hireDatePlus1Day.toDate(); 
      } 
     } 

     contactData.setEffectiveDate(dateToXMLGregorian(effectiveDate)); 

     ContactInformationDataType contactDataType 
      = new ContactInformationDataType(); 

     EmailAddressInformationDataType emailAddressDataType 
      = new EmailAddressInformationDataType(); 

     emailAddressDataType.setEmailAddress(worker.getPrimaryWorkEmail()); 

     CommunicationMethodUsageInformationDataType usageDataType 
      = new CommunicationMethodUsageInformationDataType(); 
     usageDataType.setPublic(true); 

     CommunicationUsageTypeDataType usageTypeData 
      = new CommunicationUsageTypeDataType(); 
     usageTypeData.setPrimary(true); 

     CommunicationUsageTypeObjectType usageTypeObjectType 
      = new CommunicationUsageTypeObjectType(); 

     CommunicationUsageTypeObjectIDType usageTypeObjectID 
      = new CommunicationUsageTypeObjectIDType(); 
     usageTypeObjectID.setType("Communication_Usage_Type_ID"); 
     usageTypeObjectID.setValue("WORK"); 

     usageTypeObjectType.getID().add(usageTypeObjectID); 

     usageTypeData.setTypeReference(usageTypeObjectType); 

     usageDataType.getTypeData().add(usageTypeData); 

     emailAddressDataType.getUsageData().add(usageDataType); 

     contactDataType.getEmailAddressData().add(emailAddressDataType); 
     contactData.setWorkerContactInformationData(contactDataType); 

     body.setMaintainContactInformationData(contactData); 

     try { 
      hrPort.maintainContactInformation(body); 
     } catch (edu.bowdoin.workdayservice.data.hr.ProcessingFaultMsg e) { 
      throw new WorkerDataException(e.getMessage(), e); 
     } catch (edu.bowdoin.workdayservice.data.hr.ValidationFaultMsg e) { 
      throw new WorkerDataInvalidException(e.getMessage(), e); 
     } finally { 

     } 
    }