美文网首页
Camunda流程设计器

Camunda流程设计器

作者: 追风还是少年 | 来源:发表于2023-12-21 23:48 被阅读0次

    Camunda Modeler设计器变量使用el表达式,如:${}

    事件

    image.png

    开始事件:

    • initiator
      流程启动人
      通过identityService.setAuthenticatedUserId(startProcessBo.getUserId())设置的就是流程启东人
        public String startProcess(StartProcessBo startProcessBo) {
            identityService.setAuthenticatedUserId(startProcessBo.getUserId());
            ProcessInstance processInstance = runtimeService.startProcessInstanceByKey(
                    startProcessBo.getDefinitionKey(),
                    startProcessBo.getBusinessKey(),
                    startProcessBo.getVariables()
            );
            return processInstance.getProcessInstanceId();
        }
    

    User Task

    image.png
    • Assignee
      任务处理人
    • Candidate groups
      候选组
    • Candidate users
      候选用户
    • Due date
      到期日
    • Follow up date
      跟进日期,是指任务的约定完成日期或截止日期。
      有助于任务管理和优先级设定
    • Priority
      优先级

    send task

    image.png

    (1)在同一流程定义中发送消息

    @Slf4j
    @Component("sendMessage")
    public class SendMessage implements JavaDelegate {
        @Override
        public void execute(DelegateExecution execution) throws Exception {
            execution.getProcessEngineServices().getRuntimeService()
                    .createMessageCorrelation("messageName").processInstanceBusinessKey(execution.getBusinessKey()).correlate();
        }
    }
    

    (2)一个流程定义发送消息,另一个流程定义接收消息
    启动流程

    public class Test{
    StartProcessBo startProcessBo = new StartProcessBo();     
    startProcessBo.setBusinessKey(String.valueOf(carOrderCollectDetect.getOrderCollectId()));
    startProcessBo.setDefinitionKey(carDetectDefinitionKey);
    VariableMap variableMap = Variables.createVariables();
    variableMap.put("test","test");
    bpmFormService.startProcess(startProcessBo);
    }
    
    @Slf4j
    @Component("sendMessageHandler")
    public class SendMessageHandler implements JavaDelegate {
    
        @Override
        public void execute(DelegateExecution execution) throws Exception {
    
            execution.getProcessEngineServices().getRuntimeService()
                    .createMessageCorrelation("messageName").processInstanceBusinessKey(execution.getBusinessKey()).correlate();
    
        }
    }
    

    会签

    同一个审批节点,需要多个人审批:

    • 会签:几个审批人,要全部同意

    ${nrOfInstances == nrOfCompletedInstances}

    ${nrOfCompletedInstances == nrOfInstances || !approve }

    • 或签:几个审批人,只要有一个同意
      ${1 == nrOfCompletedInstances}
    • 加签:增加审批人
    runtimeService.createProcessInstanceModification(processInstanceId)
                    .startBeforeActivity(activityId)
                    .setVariable("user",user)
                    .execute();
    

    nrOfInstances 实例的数目
    nrOfCompletedInstances 完成实例的数目
    nrOfActiveInstances 未完成实例的数目
    loopCounter 循环计数器,办理人在列表中的索引。

    事务

    默认是同步调用,service task 抛出异常会回滚到上一个user task,如果需要不回滚到上一个user task,需要配置service task 为异步延续,只要就只回滚当前service task

    相关文章

      网友评论

          本文标题:Camunda流程设计器

          本文链接:https://www.haomeiwen.com/subject/cbmfndtx.html