Web流程设计器—外部服务节点kscript调用模式
适用版本:EAS_V8.6私有云
其他版本待出补丁
场景一,与异构系统集成:
我们在使用工作流的时候可能会需要与其他系统或者其他模块进行协同,比如工作流中有一步是需要员工签署合同,这一步给员工发送短信,员工通过短信打开页面签署合同,签署完后,回调工作流,需要想在员工签署完后,才驱动工作流往下走,进行企业签署。
登记服务:
在使用外部服务节点之前,首先需要登记可以被工作流使用的外部服务,服务通过编写脚本代码实现,本文档只介绍kscirpt调用模式。
路径:应用→企业建模→业务流程管理→WEB流程设计器→流程资源→外部服务→新增→编写自定义业务脚本→保存
假设业务脚本为一个自定义的java类,方法:
com.kingdee.bos.workflow.othersysTest.OtherSysTest的sendMessage(...)
脚本调用java类com.kingdee.bos.workflow.othersysTest.OtherSysTest的sendMessage()方法:
流程设计:
路径:应用→企业建模→业务流程管理→WEB流程设计器→流程设计→新建流程→添加外部服务节点→打开节点→选中登记的外部服务→配置入参出参
打开外部服务节点,选择刚刚我们新增的外部服务,并且填入相应出入参数:
Web流程设计器配置好之后发布流程,就可以提交单据触发工作流了,流程运转到外部服务节点后,会先执行刚刚我们编写的脚本代码:
工作流运转到外部服务节点后会暂停,保持节点闪烁状态,不过本文中的案例只是模拟客户签署合同后回调工作流,所以在流程转到到外部服务节点,执行外部服务,执行完毕时就会回调工作流,驱使流程往下运转:
可以看到,在客户签署合同回调工作流后,工作流往下运转到了二级审批节点
回调工作流:
只有调用了回调工作流的代码,工作流才会继续往下运转,与异构系统集成的回调方式:
1,通过openApi调用回调接口
2,自定义webservice接口之后,再调用工厂类直接回调
使用openAPI的形式回调
(注:openAPI常见问题及学习资料详见:https://vip.kingdee.com/article/175622642354077952)
登录方式一:普通用户密码方式(需先登录再调用回调接口)
返回格式:
{
"data":"{"token":"qZbT9PATjqwuINItQwIZxCSYjesmiDtSYVIPuvV3LzPty2feKpVeFdJrcRnUS9iL"},
"errCode":0,
"errMsg":"执行成功"
}
username : 用户
password : 密码
dcName : 数据中心代码
language : 语言
slnName : eas
authPattern :验证方式 默认 "BaseDB" ; 其他认证方式KEY可从easAuthPatterns.xml中获取。如BaseTrdLtpaToken可动态切上下文
isEncodePwd 密码是否加密方式传递,0未加密,1加密(加密方式为DES,key为username,可以引用common.jar )
errCode 为0代表执行成功,其他为失败
登录方式二:LtpaToken 免密码方式
http://localhost:6888/easportal/openapi/login?user=zj001&dcName=EAS850BETA3&language=l2&password=AAECAzVFOUZCNDUyNUU5RkJCNUF6ajAwMQHwJDFSCal3H3RqdinkCvOAVrKI&authPattern=BaseTrdLtpaToken
username : 用户
password : ltpatoken
dcName : 数据中心代码
language : 语言
slnName : eas
authPattern : BaseTrdLtpaToken
errCode 为0代表执行成功,其他为失败
调用:
http://ip:port/easportal/openapi/api?token=?
请求body
{
"api": " callBackEasWorkflow",
"data": ["otherSysTaskId","返回值"]
}
返回结果
{
"data":"{}",
"errCode":0,
"errMsg":"执行成功"
}
result 为最终执行的结果
api:openApi接口方法的唯一标识,回调工作流默认为callBackEasWorkflow(此接口已由该功能一并带出)
data:接口参数,分别传入回调工作流的唯一标识”otherSysTaskId” 和 返回值
自定义WebService的形式回调
回调接口本身并未提供webservice接口,但是现场的开发可以自定义一个webservice接口,供第三方调用,在自定义的webservice接口中,可以调用工作流回调接口的工厂类。示例如下:
场景二,与同系统的其他模块集成:
这种业务场景主要用于处理当前系统中非常耗时的任务,避免堵塞其他流程的运转。
服务登记,与流程设计与场景一的相同。唯一不同的是对应回调方式,直接在业务代码中执行回调:
直接使用工厂类回调:
OtherSysTaskFactory.getLocalInstance(ctx).callback(otherSysTaskId, resultValue);
其中otherSysTaskId是回调工作流的唯一标识,在上下文中可以获取:ctx.get("otherSysTaskId")
resultValue则是完全自定义的要返回给工作流的返回值
Web流程设计器—外部服务节点kscript调用模式
本文2024-09-22 19:55:40发表“eas cloud知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-eas-110334.html