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

佛山网站搜索排名自建房外观设计网站推荐

佛山网站搜索排名,自建房外观设计网站推荐,网站制作报价是否合法,wordpress w3 total cache 编码错误貌似国际主流认知工作流通常不支持撤回/驳回,流程只能向前进行。而撤回/驳回算是一种中国特色吧。 因此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.yayakq.cn/news/410114/

相关文章:

  • 响应式网站模板xd宁波建设工程学校招生简章
  • 网站 颜色标准公司网站怎样做维护
  • 上海推广网站校园网站开发目的
  • 企业网站板块手机如果做网站
  • 云南网站设计哪家专业wordpress 模板 旅游
  • 工厂 电商网站建设互联网中厂有哪些公司
  • 中山半江红网站建设wordpress 评论 回复 递归
  • 二级医院做网站wordpress怎么添加数据库连接
  • 首都在线官网网站佛山网站网站建设
  • 可以随意做配搭的网站广东省网站设计师
  • 北京市房山建设培训学校网站中国设计网官网入口
  • 网站开发的名称叫什么外国风格网站建设用途
  • 太原网站域名搭建外贸网站哪个好
  • 无后台基础怎么建设网站梧州seo
  • 网站利润分析wordpress win10
  • 亦庄专业网站开发公司温岭 网站建设
  • 开发做一个网站的流程wordpress建设的是模板网站吗
  • 重庆企业免费建站公司牌子制作
  • 邢台网站改版制作公司dw网页制作教程合集
  • 网站建1设公司网页版微信二维码已失效
  • 中国设计师个人网站淘宝上做网站的生意怎么样
  • 上海十大网站建设摄影主题 wordpress
  • 宝安网站设计最好的公司wordpress编辑权限
  • 怎么注册国外网站一个网站费用
  • 个人网站建设规划论文100个电商平台
  • 电商网站设计的准则是什么广西建网站公司
  • 可以做360度全景图的网站大型网站快速排名
  • 网站优化怎么做分录小游戏网页版入口
  • 营销型企业网站特点网页布局图片
  • 可以做头像的网站网站建设无法访问网站