轻共享最佳实践 | EAS应付单集成到星瀚共享
1 业务场景
目前我们很多项目都存在EAS和星瀚共享集成的情况,即EAS单据进入星瀚共享审核,审核完成后再在EAS生成后续单据或凭证。在售前以及实施交付中存在很多问题:
1、如果用星瀚标准产品对接EAS的单据,则存在客户需重复购买相同模块、整体报价过高的情况。
2、如果完全二开单据对接,整体实施工作量报价比较高,各个项目的经验无法沉淀、重复利用。
3、如果为了节省实施工作量,只传输少量字段到星瀚共享,导致不能使用智能审核、复杂的任务分配规则、质量抽取方案、数据分析以及预览生成凭证等功能。
2 解决方案
基于以上问题,星瀚标准产品研发提供了轻共享集成工具,可以支持异构系统单据快速集成进星瀚共享。现在我们就以EAS应付单为例,讲解如何通过轻共享集成工具进入星瀚共享完成审核和返回审核结果。整体的解决方案是在星瀚共享中制作应付共享工单用于承载EAS应付单数据,并通过集成云来完成数据的同步,通过共享工单提供的微服务返回共享审批记录。
具体数据流转如下图:
EAS应付单提交后,苍穹集成云监控到提交操作,触发集成方案同步数据到星瀚共享应付工单。数据同步完成触发应付工单的提交操作,发起星瀚工作流,通过星瀚共享节点创建共享任务进入星瀚共享平台等待审批。EAS应付单同步数据的同时,发起EAS工作流,工作流中只设置一个等待共享审批节点。星瀚共享审批完成后,通过集成云服务流程调用EAS的接口返回审批结果给EAS,EAS等待共享审批节点接收到审批结果后,根据审批结果返回给EAS工作流来决定工作流走向是审批通过,还是审批不通过打回给提单人。
3 前提说明
已经在EAS部署了SP包并配置好EAS的连接配置。已经完成组织、用户、以及其它需要的基础数据的集成同步工作。
具体可参考《集成服务云EAS连接器部署手册》
https://club.kdcloud.com/article/14205?productLineId=29&isKnowledge=2
4 操作步骤
步骤1:整理工单字段模板
按路径【财务云】—【共享任务中心】—【共享工单管理】—【新增】—【导入字段】下载工单模板,如下图:
根据客户需求整理工单字段信息如下:
整理字段时注意如下几种情况:
1. 字段编码不能重复,即使分属不同分录的也不能重复。
2. 如果只是进共享审批,工单在星瀚没有后续的用途,例如生成凭证、数据分析,一些字段的基础数据可不做同步,直接选用单行文本,到时同步基础数据的名称过来即可。
3. 对于属于分录的字段,面板类型需选择分录面板,面板如果不是工单预置或已经添加好的,在EXCEL里填写新面板名称和编码即可,导入时会自动生成。
****小窍门:如果没有字段信息文档,可从集成云已经生成的EAS集成对象上导出WORD文档即可获得EAS单据的所有字段信息,再根据共享工单需要选择使用。
步骤2:建立应付共享工单
把上一步整理的EXCEL导入后,工单按模板生成对应的字段和面板,如下图:
此时只需要再选择基础资料、组织等的内容、录入下拉列表(枚举)的内容就完成整张单据的设计,保存后可预览布局,对布局不满意的可再进行调整。
**注:新建的工单系统默认是全局共享的,工单所属的共享中心有维护权限。如果存在多个共享中心并且每个共享中心所管理的工单不一样,注意新建工单时应选择不同的共享中心,新建后设置不同的隔离策略。
步骤3:建立星瀚工作流
建立星瀚工作流的目的是为了创建星瀚共享任务,使工单能进入共享任务中心进行处理。
一般EAS的单据不会在星瀚进行业务审批,所以建这个工作流时,只需要设置一个共享工作流节点即可。
步骤4:建立集成方案
建立集成方案前,需要建立集成双方需要用到的集成对象,如下图的向导页可引导建立集成对象:
第1步,为当前工单生成集成对象,选择集成对象的数据源,一般是“预置当前苍穹”。点击【同步集成对象】即可完成。一张单据生成的集成对象包含很多内容,单据本身和分录都生成实体类型的集成对象,所使用的每个枚举字段也都对应生成枚举型集成对象,如下图为一张应付工单生成的集成对象。
第2步,由于集成云可以自动为EAS系统生成所有单据的集成对象,所以此步略过无需操作。(如果是其它异构系统,集成云很少能自动生成集成对象,此步不可略过)。
第3步,生成集成方案。点击【去生成集成方案】按钮打开集成方案维护列表,此时点击新增按钮打开集成方案的集成方案新增界面,源对象选择EAS的应付单,目标对象选择工单生成的集成对象。
在方案进行字段映射时,由于工单字段大部分是项目上自定义的,系统会自动加上开发商标识,所以生成的集成对象的字段也是带开发商标识的,而EAS的集成对象不带开发商标识,此时用集成方案的自动映射功能,很少有字段能自动映射上,此时需要手工进行字段映射(集成云后续提供智能映射能解决此问题)。
特殊字段配置说明:
1、服务流程编码:需要配置上后续用于返回审批记录的集成云的服务流程编码,供共享任务提交后调用返回审批记录给异构系统。
2、连接配置:配置的内容为服务流程的编码,此服务流程用于构建查看源单的URL。如不用可不配置
3、源单单据类型:手工输入字符串,作为异构单据类型的区分。
做字段映射时有以下几个小技巧:
1、选择源对象字段时需双击鼠标才能打开弹出窗口
2、对于基础数据类型字段做映射时,例如上图中的币别,双击打开源字段选择界面,由于这个币别字段是单据头字段,则只需要在应付单的列表上选择字段即可(枚举型字段的映射也是相同)。选择好后,选择合适的值转换规则即完成基础资料型字段的映射。
3、对于基础资料型的字段只需要在工单上展示名称或者编码等,不做基础数据同步的情况,此时在选择源对象字段映射时,在左边列表上找到对应字段后在右边列表上选择名称或者编码即可,例如下图中的付款银行。
字段映射建立好后,需要配置数据同步完成后触发的操作:如下图,数据同步后触发单据的提交操作。提交操作自动发起工作流去进入共享审核。
步骤5:设置启动方案
本案例在EAS端应付单提交后不经过一线审批了,即应付单提交后即可进行单据数据同步,我们采用集成云监控EAS事件的方式来触发同步。做法很简单,在集成方案列表上选中我们上一步完成的集成方案,创建启动方案即可,如下图:
新建集成方案时,只需要设置2个地方,如下图:
1、启动类型设置为“事件触发”
2、触发事件选为“集合提交”
如非监控操作,可使用代码来调用启动方案,具体可参考
https://club.kdcloud.com/article/107424159478908416?productLineId=29&isKnowledge=2
步骤6:EAS端开发和流程配置说明
EAS端的开发主要有2项:
1、提供OpenAPI供星瀚端调用返回单据的共享审批记录。
2、提供一个方法可配置为工作流节点,等待共享返回审批结果并反馈给工作流决定流程的分支走向,同时直接把审批结果写入工作流审批记录表。
以上接口可EAS所有的单据共用同一套接口。具体开发过程见以下附件
步骤7:配置服务流程返回审批记录
配置服务流程的主要目的是调用EAS的OpenAPI返回共享审批记录。共享任务池中的共享工单,每次审批结束,会自动触发调用工单上配置的服务流程编码,将审批记录同步给异构系统
1) 依次点击【集成管理】-【服务流程】-【服务流程】点击新增按钮;
2) 依次填写【编码】、【名称】,【启动方式】选择“人工启动”,新增流程变量,变量类别为简单值,变量名billid,勾选是否输入参数,点击保存。
3) 依赖资源的资源类别选择数据源,引用资源选择EAS对应版本,别名改为tar
4) 点击【流程图】按钮,增加一个【脚本】节点
5) 配置脚本,其中IP和端口等信息需改为异构系统对应的环境信息
脚本示例代码:
//调用微服务接口获取审批记录
var record = invokeMicroService('ssc', 'task', 'GeneralDataService', 'getApprovalRecordByBillId', String(billid));
if(record == null || record.length == 0){
throw("请求参数为空");
}
//EAS单点登录
var loginUrl = "http://{ip}:{port}/easportal/openapi/login?authPattern=BaseDB&dcName={数据中心编码} &isEncodePwd=0&language=l2&password="+ tar.password + "&user=" + tar.user;
var session = HttpInvoke(loginUrl,"");
if (session.result.errCode != 0) {
throw("调用AccessToken失败:" + session.result);
}
var success = FastJsonParse(session.result.data);
var recordList = [record];
var recordJsonStr = String.FormatJson(recordList);
var paramMap = {};
paramMap.api = "API接口的名称";
paramMap.data = recordJsonStr;
var paramJson = String.FormatJson(paramMap);
var url = "http://{ip}:{port}/easportal/openapi/api?token=" + success.token;
var charset = "utf-8";
var notifyResult = HttpPost(url, paramJson, charset, null, null);
微服务调用获取审批记录,返回的审批结果是个Map<String,Object>集合,包含以下参数
参数名称 | 参数类型 | 是否必传 | 说明 |
isCompleted | boolean | 是 | 共享节点是否完成审批 |
jsonString | String | 是 | json格式字符串,内容为审批结果 |
billId | String | 是 | 星瀚单据ID |
billType | String | 是 | 星瀚单据类型 |
sourcebilltype | String | 是 | 异构系统的单据类型 |
sourcebillid | String | 是 | 异构类型的单据id |
其中jsonString的结构:
参数名称 | 参数类型 | 是否必传 | 说明 |
approvalDate | String | 是 | 审批日期 |
approvalMessage | String | 是 | 审批意见 |
approvalResult | String | 是 | 审批结果 |
decisionValue | String | 是 | 决策项值 |
personId | String | 是 | 审批人ID |
personName | String | 是 | 审批人名称 |
personNumber | String | 是 | 审批人工号 |
taskType | String | 是 | 审批类型 |
failedReason | String | 是 | 批退原因 |
返回结果示例:
[{
"billId": "1626714358719458304",
"billType": "awrp_yfd",
"jsonString": "[{\"approvalDate\":\"2023-02-28 14:41:10\",\"approvalMessage\":\"同意\",\"approvalResult\":\"审核通过\",\"decisionValue\":\"\",\"failedReason\":\"\",\"historyTaskId\":\"1630464121432455168\",\"personId\":\"1413826741960441856\",\"personName\":\"康\",\"personNumber\":\"ID-000003\",\"taskType\":\"共享审核\",\"userName\":\"kang\"}]",
"isCompleted": true,
"sourcebilltype":"yf",
"sourcebillid":"6K1Pj6rtQ4qpRHcf30TD3EjaOnE="
}]
按照以上步骤实施和开发后,即可完成EAS应付单集成到星瀚共享,应付共享工单在共享任务中心的配置和其他单据进共享配置没有不同,这里不再赘述。
轻共享最佳实践 | EAS应付单集成到星瀚共享
本文2024-09-22 22:55:01发表“云星瀚知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-xinghan-129683.html