1OSF应用案例与集成2019年7月HR产品事业部2OSF应用案例3章节概述本章节培训内容OSF的应用方式第三方系统取s-HR数据信息第三方系统数据/单据对s-HR数据反写本章节预期目标掌握OSF的应用方式使用OSF实现第三方系统与s-HR系统数据集成4OSF的应用方式5OSF应用方式一、JS调用,实现前端对服务端的数据访问shr.callService({serviceName:"serviceName",param:{parmam1:"value1"},success:function(data){//回调成功}});二、服务端调用HashMapparam=newHashMap();com.kingdee.shr.base.syssetting.app.osf.OSFAppUtil.callService(ctx,“serviceName",param);三、第三方系统单点登录调用SHRClientclient=newSHRClient();Responsecount=client.execute(request,"getUnProcessAssignCount",null);6OSF应用方式一、JS调用:shr.callService({serviceName:"serviceName",param:{parmam1:"value1"},success:function(data){//回调成功}});应用场景(前端浏览器对服务器端的数据访问):1、单据编辑界面的某一字段发生改变的时候,需要通过这一字段的值携带界面上其他字段的数据;2、单据编辑界面的某一字段发生改变的时候,需要为其他的F7字段设置联动过滤条件;3、填写单据的过程中,需要调用已有的OSF进行校验7JS调用案例如调动单中,选择员工F7带出员工相关的任职信息8OSF应用方式二、服务端调用HashMapparam=newHashMap();param.put("parmam1","value1");param.put("parmam2","value2");com.kingdee.shr.base.syssetting.app.osf.OSFAppUtil.callService(ctx,“serviceName",param);应用场景:在服务端Handler或ControllerBean中,处理业务数据的时候,可能需要调用系统中的OSF来获取或写入数据;9OSF应用方式三、单点登录调用应用场景:第三方系统与s-HR系统的数据集成,需要访问或写入s-HR系统,通过HttpClient访问s-HR系统,与s-HR做数据交换;<%@pagecontentType="text/html;charset=UTF-8"%><%@pageimport="com.kingdee.shr.api.SHRClient"%><%@pageimport="com.kingdee.shr.api.Token"%><%@pageimport="com.kingdee.shr.api.Response"%><%@pageimport="java.util.Map,java.util.HashMap"%><%SHRClientshrClient=newSHRClient();Tokentoken=shrClient.loginByUser(request);Mapparam=newHashMap();param.put("personID","w4nKXLWoQISsgzWElOMf0IDvfe0=");Responsers=shrClient.execute(request,"getPersonPosOrgInfo",param);%>result:<%=rs.getData()%>
10第三方系统取s-HR数据信息11第三方系统取s-HR数据信息应用场景:第三方与s-HR做系统集成,以s-HR的组织,职位,员工作为主数据,由第三方发起,先单点登录到s-HR系统,再调用s-HR提供的OSF获取s-HR的组织,职位,员工数据后,更新到第三方系统中;实现:s-HR与K/3OA的系统集成12第三方系统取s-HR数据信息osfshr_sso_client.jar2.发起取数请求5.返回json数据http1.调用接口6.返回数据单点认证osf服务引擎s-HR系统3.认证通过4.调用osf第三方系统通过s-HR内置的OSF接口获取组织,职位,人员数据(目前只提供全量数据),第三方获取数据后,同步到系统中13第三方系统取s-HR数据信息实现步骤:一、按照前面章节介绍的单点登录配置,配置好s-HR与第三方系统单点登录;二、在第三方系统中编写取s-HR数据实现类,通过调用s-HR提供的OSF,从s-HR获取数据后,写入第三方系统;14实测外部tomcat访问s-HR获取数据从安装目录中获取httpclient相关依赖jar:W:\eas\server\lib\common\trd配置文件放进WEB-INFreadExp.zip15packagecom.kingdee.test;importjava.util.HashMap;/***取s-HR系统主数据写入第三方系统代码样例**/publicclassSyncMainDataFromSHRTool{publicstaticvoidmain(String[]args){//s-HR服务器的地址,部署到测试环境,应该是取shr-ssoClient.properties的server.urlStringserverUrl="http://127.0.0.1:6888/shr";//创建单点登录包的SHRClient对象,用于调用s-HR的OSFcom.kingdee.shr.api.SHRClientshrClient=newcom.kingdee.shr.api.SHRClient();try{//调用s-HR系统,服务名为inteOAGetAdminOrgDataService的OSF获取s-HR系统的组织信息com.kingdee.shr.api.Responseresponse=shrClient.executeService(serverUrl,"inteOAGetAdminOrgDataService",newHashMap());System.out.println(response.getData().toString());//response为OSF返回的结果JSON串,需要解析JSON串后,按照情况新增或更新到第三方系统//...处理代码...}catch(Exceptione){//调用有异常发生,可能是单点没有配置好,OSF调用发生异常等等//需要处理异常信息e.printStackTrace();}}}第三方系统取s-HR数据信息第三方集成代码示例:ssoLoginExp.zip16第三方系统获取s-HR主数据信息-主要OSF组织取数接口(全量):inteOAGetAdminOrgDataService职位取数接口(全量):inteOAGetPositionDataService人员取数接口(全量):inteOAGetPersonDataService½ðµûs-HRV8.5OSF½Ó¿Ú˵Ã÷¼°¿ª·¢Ö¸17第三方系统获取s-HR主数据信息-主要OSF人员取数接口(全量):inteOAGetPersonDataService参数参数名称描述birthday出生日期出生日期sex性别男性为1,女性为2status用户状态1启用,2禁用loginid员工编码员工编码fnumber员工编码员工编码descn员工描述员工描述username用户名(姓名)用户名(姓名)dept_id所在部门ID所在部门IDorg_number所在部门编码所在部门编码email电子邮箱电子邮箱address通信地址通信地址officephone办公室电话办公室电话eas_loginid用户编码,唯一标识用户编码,唯一标识easuser_id员工ID员工IDhomephone家庭电话家庭电话mobile手机号码手机号码fcreateTime创建时间创建时间fLastUpdateTime最后修改时间最后修改时间enterDate入职日期入职日期18系统预置的OSF预置OSF示例OSF名称serviceName参数参数说明取员工工资数据getUserPayDataperiodParam取期间参数格式:yyyyMM如果参数为空,取最近发放的期次对应的时间取职位的上级,同级,下级人数getPositionReferDetailpositionID职位id字符串获取人员的基本信息getPersonDetailInfopersonId员工id字符串获取人员的任职信息getPersonPosOrgInfopersonId员工id字符串获取职位的基本信息getPositionInfoServicepositionId职位id字符串注意:1、预置的OSF不容许修改2、除了标准产品列出可以调用的OSF外,其它未在文档中说明的OSF不要使用,标准仅供参考3、当标准产品的OSF返回字段不能满足现场的需求时,需要客户化重新定制开发19第三方系统单据/数据写入s-HR系统20第三方系统单据/数据写入s-HR系统应用场景:第三方系统与s-HR做系统集成:以s-HR的组织,职位,员工作为主数据;第三方系统与s-HR的主数据集成后,第三方的业务数据或单据审批通过后,写入s-HR系统;实现:OA系统的单据与s-HR考勤相关单据数据集成21第三方系统单据/数据写入s-HR系统osfshr_sso_client.jar2.发起维护数据请求5.返回结果http1.调用接口6.返回结果单点认证osf服务引擎s-HR系统3.认证通过4.调用osf第三方系统第三方系统按照s-HR的接口要求调用s-HR内置的OSF接口,可以将数据/单据更新到s-HR系统;调用过程如下图:22第三方系统单据/数据写入s-HR系统实现过程:一、搭建s-HR开发环境,编写写入的OSF(如果调用已存在的OSF,则可不做此步)在s-HR系统中实现一个写入数据的OSF,把OSF注册,启用;把编译后的OSF类文件放到customer.jar中,将jar包部署到系统Server\lib\addon\customer目录下;二、按照前面章节介绍的单点登录配置,配置好s-HR与第三方系统的单点登录;三、在第三方系统中编写一个类,获取第三方系统的数据或单据,调用s-HR提供的OSF,写入s-HR系统;23第三方系统单据/数据写入s-HR系统S-HRjava代码示例:24第三方系统单据/数据写入s-HR系统Osf配置及部署:shr_custom.zip部署位置:25第三方系统单据/数据写入s-HR系统外部系统代码示例:writeExp.zip26运行结果27总结OSF应用方式第三方系统取s-HR主数据信息第三方系统数据/单据数据写入s-HR系统28员工管理员工信息数据结构单据继承体系和扩展开发单据开发29员工信息数据结构30P30员工信息维护基本信息页签信息31P31员工基本信息管理和页签信息管理32P32员工、职位、组织和任职33P33员工明细表查询逻辑Ô±¹¤Ã÷ϸ²éѯSQL.sql34单据继承体系35P35入职单入职扩展开发uipk=com.kingdee.eas.hr.affair.app.EmpEnrollBizBill.form36P36通过UIPK找到视图找到实体37P37打开你的BOS设计器了解单据继承体系38P38代码继承WEB端部署于addon的代码服务端部署于SP的代码Js继承在视图配置中也非常明显。39P39入职单简单扩展开发任务:给员工扩展一个属性,例如现住址,要求入职时就填写好,并且入职单生效后,员工基本信息能存储。前端要求:如果保存时,现住地未填写,提示用户填写。Java端要求:入职单提交生效后,也需要保存进员工。40P40第一步-入职单实体扩展如果是扩展标准产品已有实体,使用动态扩展配置。如果是新的单据实体,请使用BOS工具重新开发。41P41实体扩展-从业务单元引入42P42入职单-扩展字段员工入职分录加一个nowLiveAddr,并且保存,启用43P43员工扩展在实体节点,右键,导入实体,选择员工_个人信息。如果搜索不到实体,可以在弹出框按F7,在空白框输入实体路径com.kingdee.eas.basedata.person.app.Person,点击确定。44P44员工实体加字段目的是为了写到员工的nowLiveAddr,员工必须扩展一个字段45P45第二步-视图扩展入职视图中添加uipk=com.kingdee.eas.hr.affair.app.EmpEnrollBizBill.form46P46员工编辑界面视图扩展员工编辑界面视图中添加uipk=com.kingdee.eas.basedata.person.app.Person.form47P47第三步-JS扩展视图中加jsClass为自己写的JS类,并且继承标准产品,部署到E:\EAS850_TRUNK\eas\server\deploy\easweb.ear\shr_web.war\addon\customer\web\js48P48JS代码效果customer_js.zip49P49第四步-扩展ControllerBeanÈëÖ°µ¥controllerBeanEX-src.重写HRAffairBizBillControllerBean的方法,实现反写员工的nowLiveAddr字段50P50打包部署到服务端,需重启服务使用Eclipse的Export打包功能51P51第五步-DEP启用扩展ControllerBeanEX在动态扩展平台中配置”入职单”实体的“实体扩展属性”,保存启用。controllerBeanEx=com.kingdee.customer.app.EmpEnrollBizBillControllerBeanEx52P52字段反写成功53P53遗留提问查看信息变更记录,这里显示的“现住地扩展字段”却是空的。为什么?怎么处理???54P54历史实体也需要扩展55附录:如何申请License56新建用户是本人的手机号57附:云平台导入可使用s-HR的正常用户可以体验s-HR58填写完Excel后批量导入。59重新生成License60客户端登录administrator导入License61Thanksterimakasih感謝谢谢ありがとうขอบคุ�ณ