工作流流程自定义发起人
1 业务背景
场景一:
采购申请单数据来源于第三方系统,第三方系统同步数据到苍穹时同步发起流程走审批;此业务场景是通过api实现,在api里获取到推送过来的批量数据然后调用实体的提交操作,触发流程;提交操作会以当前登录人为流程的发起人,需求是以单据的创建人或某一个单据人员字段作为发起人,而不是当前api登录人;
场景二:
采购申请单下推生成采购单据订单,并同步发起采购订单的审批流程;此时流程默认发起人是【下推】操作人,需求该业务场景下采购订单审批流程发起人为系统人员维护的”系统默认“用户,不是【下推】操作人;
2 思路与方案
通过代码动态设置操作人,切换上下文的用户
OperateOption operateOption = OperateOption.create();
operateOption.setVariableValue("_initiator_", "人员id");
3 实现步骤
1、测试单据维护人员字段(流程发起人)
2、创建自定义API
2、编写自定义api插件
@ApiController(value = "bos", desc = "demo样例") @ApiMapping(value = "demo") public class CustomDemoController implements Serializable { @ApiPostMapping("/kdec_bill0514/saveAndSubmit") public CustomApiResult<Boolean> saveAndSubmit(@ApiParam("表单数据") Map<String, Object> map) { if(map == null) { throw new KDBizException(new ErrorCode("0002", "保存数据不能为空")); } Object idObj = map.get("billno"); if(idObj == null) { throw new KDBizException(new ErrorCode("0001", "编码不能为空")); } Object kdec_userfield = map.get("kdec_userfield"); if(kdec_userfield == null) { throw new KDBizException(new ErrorCode("0003", "流程发起人不能为空")); } DynamicObject dynamicObject = BusinessDataServiceHelper.newDynamicObject("kdec_bill0514"); dynamicObject.set("billno",idObj); dynamicObject.set("kdec_userfield",kdec_userfield); dynamicObject.set("billstatus","A"); //创建人 dynamicObject.set("creator", RequestContext.get().getCurrUserId()); OperateOption operateOption = OperateOption.create(); OperationResult operationResult = SaveServiceHelper.saveOperate("kdec_bill0514", new DynamicObject[]{dynamicObject}, operateOption); if(operationResult.isSuccess()){ List<Object> successPkIds = operationResult.getSuccessPkIds(); //流程发起人 operateOption.setVariableValue("_initiator_", kdec_userfield + ""); OperationServiceHelper.executeOperate("submit", "kdec_bill0514", successPkIds.toArray(), operateOption); return CustomApiResult.success(operationResult.isSuccess()); }else { return CustomApiResult.fail("301",operationResult.getMessage()); } } }
4 注意事项
a、此方案的重点是如何自定义实体操作人
通过代码设置实体操作人
OperateOption operateOption = OperateOption.create();
operateOption.setVariableValue("_initiator_", "人员id");
b、触发流程的操作不一定是提交操作,也可以配置其他操作,视情况调用具体的操作触发流程
5 效果图
自定义API参数传入了流程发起人id(张三)
工作流流程自定义发起人
1 业务背景场景一:采购申请单数据来源于第三方系统,第三方系统同步数据到苍穹时同步发起流程走审批;此业务场景是通过api实现,在api里...
点击下载文档
本文2024-09-23 00:54:57发表“云苍穹知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-cangqiong-142568.html
您需要登录后才可以发表评论, 登录登录 或者 注册
最新文档
热门文章