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

免费网站你懂我意思正能量不用下载公司宣传网站制作

免费网站你懂我意思正能量不用下载,公司宣传网站制作,聊城汽车网站建设,上海网站建设 找德华专业貌似国际主流认知工作流通常不支持撤回/驳回,流程只能向前进行。而撤回/驳回算是一种中国特色吧。 因此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.dt0577.cn/news/54251.html

相关文章:

  • 免费的app制作软件百度关键词优化是什么意思
  • wordpress 文章卡片历下区百度seo
  • 360推广登录入口官网南京seo推广公司
  • 网站建设属于服务还是货物手机百度关键词优化
  • 做venn图的网站互联网运营推广是做什么的
  • WordPress网站图片预加载营销软文是什么
  • 自己做网站哪种好做sem优化托管
  • 葫芦岛市营商环境建设管理局网站竞价排名名词解释
  • 网站建设维护实训总结it培训班大概需要多少钱
  • 网站开发+自动生成缩略图北京推广优化经理
  • 抚顺盘古网站建设18240014805抖音广告投放平台官网
  • 哪个网站可以做头像品牌整合推广
  • 望江县城乡建设局网站商丘网站建设公司
  • wordpress网站图片丢失化妆品营销推广方案
  • 百度怎样做网站并宣传网站优化设计方案
  • wordpress链接打不开seo方案怎么做
  • 如何修改网站备案企业网站建设推广
  • 网站跳转链接生成seo舆情优化
  • 石家庄网站建站软文代理平台
  • 高端网站设计找哪个公司全网网络营销
  • 佛山免费网站制作谷歌广告推广怎么做
  • 网络营销五个特点seo公司推荐推广平台
  • 电商网站开发背景百度推广费用预算表
  • 购物网站的文化建设问题义乌百度广告公司
  • 3d做号网站如何建网站要什么条件
  • 建设网站的价值站长素材免费下载
  • 微信 存储wordpress企业网站seo哪里好
  • 建网站是怎么造成的重庆seo代理计费
  • 购物分享网站怎么做的企业宣传软文范例
  • 四川掌上电力app下载seo文案范例