系统做复杂的模型不是全量传输,最复杂的是增量模型,增量模型的设计完善,程序的复杂度几何倍增长,今天就讨论下SuccessFactor与HCM集成的增量原理。
首先我们看看同步步骤,见下图
同步过程中有多次数据交互,所以同步的日志不仅能在HCM系统中查询,在SuccessFactors中也能查询相关数据,而且还有相关报表导出,方便数据核对。
首先我们看看从HCM发送抽取命令, 发送语句如下:
SELECT associated_employee_information,email_information,employment_information,job_information,payment_information,person,personal_information,phone_information from CompoundEmployee WHERE replicationTargetSystem = 'CLNTHMDxxx' AND replicationContentType IN ('EMPLOYEE_MASTER_DATA','EMPLOYEE_ORG_ASSIGNMENT') AND last_modified_on >= to_datetime('2022-06-30T14:10:43Z') AND isContingentWorker IN ('0') AND effective_end_date >= to_date('2021-05-01') AND hiringNotCompleted = 'false'
注意:SF的API分两种一种是SFAPI,一种是ODATAAPI,SFAPI基本用于标准集成CPI包,其他基本都是用odataapi.
问题:系统为什么会用SFAPI,下面分析下使用sfapi的的场景。
我们可以用soupui工具验证SFAPI的使用场景,
步骤是:①登入获取session;
②通过session查询数据。
中国的API地址是:https://api15.sapsf.cn/sfapi/v1/soap?wsdl
确定后右边会有树形结构,其中核心方法就登入login与查询query
我们先登入,登入需要输入公司标识,用户名,密码相关输入参数,点上面绿色的执行,就能获取到session信息。
然后复制session信息到下图红色方框内并输入查询语句,右边就是返回的数据
现在我们做一次测试,我在前台修改Email相关信息,修改时间是2022-07-01-23点左右,格林威治标准时间2022-07-01T14:59:29.000Z
如果我多一秒,数据就无法获取到,
CompoundEmployee是一个汇总表,select后面的每个表的last_modified_on的时间都会和HCM发送过来的SQL语句对比,只要其中一张表的数据满足条件,这个人相关的信息都会组装成XML文件传输回来,select后面的表名,就是配置的模板对象。
所以为什么CPI的集成包用SFapi,就是因为封装一层。
-----------------------------------------------------------------------------
下面看看HCM发送query语句界面,不输入修改日期与输入修改日期,sql是如何组装,首先是不输入日期,SAP每次发送query,都有一张表存储发送的状态并记录发送时间与接受时间,如果收到的数据在SAP中处理完毕,状态就会更新成成功,下次发送query就会以这个时间作为基准。
然后是输入修改日期,因为没输入分秒,所以就是24小时内的都获取
所以上述就是增量模式的概念,每次发送query并不是获取全量数据,如果把下面的时间全部删除,系统其实就是全量抽取,前提是配置模板时候有个初始化时间
----------------------------------------------------------------------------
上面描述的API的区别,下面介绍的是HCM处理数据后,需要把员工状态返回给EC,这样下次HCM发送query语句的时候,除根据时间,SF还会抓取失败的员工,因为员工在HCM复制失败后,ec有个状态存储。
发送消息需要单独配置,配置步骤如下:
1 需要在CPI中单独复制一个场景包并配置相关参数
2 需要在HCM端激活相关的webservice
3 需要配置是否开启通知开关,在这里找很久
4 t77s0需要新增一个配置选项
以上是相关的配置工作。
下面是程序源代码位置,有兴趣可以研究下,我开始配置一直没反应,就是通过这段源代码去查,有个表的激活没打上。
在配置过程中,SF段也需要配置相关参数,这里就不描述,因为涉及到后台,没权限。下图是CPI报错的提示,涉及到部分SF的配置问题