使用Kronos WFC v8.1 XML API更新职位时<OrgLocationsImport>请求失败
解决Kronos WFC v8.1 Update动作失败的问题(WFP-00335错误)
我之前也踩过这个Kronos API的坑,结合官方的《Workforce Timekeeping v8.1 Developer's Toolkit Guide》和实际调试经验,给你拆解下问题原因和可行的解决办法:
为什么会报WFP-00335错误?
Kronos里的职位(Job类型的OrgLocation)是带有效日期区间的版本化对象,你现在看到的报错,本质是因为你用Action="Update"提交请求时,没有指定有效日期范围,Kronos默认会尝试创建一个从ChangeDate到12/31/2999的新版本,但这个职位已经存在一个从6/02/2010到12/31/2999的版本,两个时间区间重叠,所以触发了“对象已存在”的冲突错误。
可行的解决方案
方案1:用<Replace>动作替代<Update>(推荐)
Kronos的<OrgLocationsImport>专门提供了Replace动作,它会自动处理版本的迭代:先把现有职位版本的过期日期设为ChangeDate的前一天,再创建一个从ChangeDate开始的新版本。这个方式比手动处理日期要简洁得多。
修改后的请求XML如下:
<Kronos_WFC version="1.0"> <Request Action="Replace"> <OrgLocationsImport ChangeDate="05/30/2018"> <OrgLocations> <OrgLocation ParentLocationPathName="ROOT/BU/DIV/SL/DEPT" LocationName="TEST" LocationType="Job" Description="Test Job Updated" > </OrgLocation> </OrgLocations> </OrgLocationsImport> </Request> </Kronos_WFC>
方案2:手动指定有效日期区间(适合需精细控制版本的场景)
如果你必须使用Update动作,需要显式定义两个步骤:先把原有职位版本的过期日期设为ChangeDate的前一天,再创建一个新的有效版本,确保两个版本的时间区间不重叠。
示例请求XML:
<Kronos_WFC version="1.0"> <Request Action="Update"> <OrgLocationsImport ChangeDate="05/30/2018"> <OrgLocations> <!-- 第一步:失效原有职位版本 --> <OrgLocation ParentLocationPathName="ROOT/BU/DIV/SL/DEPT" LocationName="TEST" LocationType="Job" EffectiveDate="06/02/2010" ExpirationDate="05/29/2018" > </OrgLocation> <!-- 第二步:创建新版本 --> <OrgLocation ParentLocationPathName="ROOT/BU/DIV/SL/DEPT" LocationName="TEST" LocationType="Job" Description="Test Job Updated" EffectiveDate="05/30/2018" ExpirationDate="12/31/2999" > </OrgLocation> </OrgLocations> </OrgLocationsImport> </Request> </Kronos_WFC>
额外提醒
- 不管用哪种方案,
ChangeDate的设置要和你期望的版本生效日期一致,它会影响Kronos对版本变更的时间记录。 - 如果你只是想修改职位的描述这类属性,
Replace动作是最省心的选择,不需要手动处理日期逻辑。
内容的提问来源于stack exchange,提问作者Stevoisiak
相关产品推荐
相关产品推荐

