当前位置: 首页 > news >正文

免费网站你懂我意思正能量不用下载win优化大师

免费网站你懂我意思正能量不用下载,win优化大师,音乐介绍网站怎么做的,做家乡网站源代码貌似国际主流认知工作流通常不支持撤回/驳回,流程只能向前进行。而撤回/驳回算是一种中国特色吧。 因此Camunda对于流程修改也仅仅提供了runtimeService.createProcessInstanceModification(instanceId)来修改流程。对于撤回/驳回这种操作得自己想办法。通常的撤回/…

貌似国际主流认知工作流通常不支持撤回/驳回,流程只能向前进行。而撤回/驳回算是一种中国特色吧。
因此Camunda对于流程修改也仅仅提供了runtimeService.createProcessInstanceModification(instanceId)来修改流程。对于撤回/驳回这种操作得自己想办法。通常的撤回/驳回逻辑如下。通过取消流程然后再某个节点重新发起流程

        //.cancelActivityInstance(instanceId)//这里传入的参数instanceId准确来说应该是act_ru_execution当中的act_ins_id字段//可以通过runtimeService.getActivityInstance()来获取所有的ActivityInstance;然后调用ActivityInstance.getid()作为参数传入//在多实例的情况下ActivityInstance为树结构。这里传入instanceId会直接删除主流程和子流程的所有执行实例。this.runtimeService.createProcessInstanceModification(instanceId).cancelActivityInstance(instanceId).startBeforeActivity(taskDefinitionKey).execute();

但是这里对于复杂点的撤回是远远不够的。因为撤回的逻辑是需要判断下一个节点的任务是否执行完成的。下一节点任务未完成我才能进行撤回。而下一节点的可能性非常的多,处理用户节点这种简单的情况,还包括网关,子流程等复杂情况。除此之外,如果当前节点是会签节点,上面通过重启节点的方式来撤回是有问题的。。
目前的方式只能分别进行判断,貌似也没想到其他好方法。这里提供简单的思路,等后面对camunda的学习更加深入后在进行修改调整。
1、首先根据taskDefinitionKey获取当前节点

//        ModelElementInstance modelElemen = bpmnModelInstance.getModelElementById(taskDefinitionKey);
//        UserTask userTask = bpmnModelInstance.getModelElementById(taskDefinitionKey);FlowNode currentNode = (FlowNode) bpmnModelInstance.getModelElementById(taskDefinitionKey);

2、获取下一个节点

        FlowNode nextNode = currentNode.getSucceedingNodes().singleResult();String typeName = nextNode.getElementType().getTypeName();String taskDefKey = nextNode.getId();

3、下一个节点的情况很多,除了用户任务,还包括服务任务,网关,子流程等。常见的就先判断用户任务与网关。(注意获取后一节点所有已经完成的任务需要获取最新的,因为用户之前可能撤回过)

        ArrayList<HistoricTaskInstance> completeList = new ArrayList<>();if(nextNode instanceof UserTask){//1、获取刚刚审核的任务//2、获取后一个节点在前一个节点(也就是1刚刚获取到的任务结果)后所有完成的任务completeList.addAll(list);}else if(nextNode instanceof Gateway){//1、获取网关节点后的任务节点List<FlowNode> afterGatewayList = nextNode.getSucceedingNodes().list();for (FlowNode flowNode : afterGatewayList) {//2、获取后一个节点在前一个节点(也就是1刚刚获取到的任务结果)后所有完成的任务completeList.addAll(list);}}else {//其他情况处理不了先抛异常后面再想其他方案}if(CollectionUtil.isNotEmpty(completeList)){
// "此流程的下一节点存在已完成的任务,无法撤回“
}else {
//"进行撤回操作"}
http://www.mmbaike.com/news/110181.html

相关文章:

  • 网站建设电子商务公司网站定制
  • 那个网站做稻草交易百度搜索热度查询
  • 易语言 wordpress登录注册seo优化百度技术排名教程
  • 小区网站建设nba体育新闻
  • 个人网站备案名称安顺seo
  • 贵阳营销型_网站建设广东新闻今日最新闻
  • 公司建设网站计入什么分录成都网站维护
  • 怎么做美食的视频网站各大网站收录查询
  • 什么网站百度容易收录宁波关键词优化平台
  • 网站建设的发票怎么做会计分录外链屏蔽逐步解除
  • 珠海网站制作定制怎么样推广最有效最快速
  • 专业提供深圳网站设计公司云南网站推广公司
  • 商务网站开发课程建言成都公司网站seo
  • 朝西村网站建设公司谷歌seo
  • 自己做的网站响应速度慢外贸营销型网站设计
  • dw做链接网站无法显示该页面分销平台
  • 北京中国建设部网站权威解读当前经济热点问题
  • 网站欢迎页制作班级优化大师下载安装最新版
  • wordpress 关键词排名关键词优化的作用
  • 微信网站制作入门seo视频教程百度云
  • 广州营销型网站建设哪家好本地免费发布信息网站
  • W做网站淘宝怎么优化关键词排名
  • 帮人负责做网站叫什么工作在线建站平台
  • 海纳网站建设外链收录网站
  • wordpress插件删除六年级上册数学优化设计答案
  • 中国电子商务网站建设情况磁力岛引擎
  • 淘宝店铺装网站导航怎么做做小程序公司哪家好
  • 怎么查看网站跳出率全网网站快速排名推广软件
  • excel做网站网络推广有效果吗
  • wd wordpress优化方法