BPMN流程图开发

1.会签任务

执行监听

流程图

在这里插入图片描述

开始任务前置JAVA代码

//获取我的节点
Task task = taskService.createTaskQuery().taskAssignee(loginName).processInstanceId(processInstance.getId()).singleResult();
//将相关变量放入节点本地变量,查询历史各节点信息时使用
taskService.setVariablesLocal(task.getId(), map);
//完成节点
taskService.complete(task.getId(), map);
//因为图中配置了监听器,后面开始进入监听器

执行监听器逻辑代码

流程图中有配置java类的全路径

public class MultInstancesStartListener implements ExecutionListener {
    @Override
    public void notify(DelegateExecution execution) {

        List<String> assigneeList = new ArrayList<>();
        assigneeList.add("lj");
        assigneeList.add("gw");
        assigneeList.add("hmxs");

        execution.setVariable("assigneeList", assigneeList);
        execution.setVariable("up", 0);
    }
}

多实例、任务监听器

流程图-常规–多实例

在这里插入图片描述

完成条件:

${nrOfCompletedInstances == nrOfInstances}
存这些变量的表:
act_ru_variable

在这里插入图片描述

变量说明:

1.nrOfInstances 实例总数。

2.nrOfCompletedInstances 当前还没有完成的实例 nr是number单词缩写 。

3.loopCounter 已经循环的次数。

4.nrOfActiveInstances 已经完成的实例个数。

流程图-监听器

在这里插入图片描述

任务监听器逻辑代码

public class MultInstancesCompleteListener implements TaskListener {
    @Override
    public void notify(DelegateTask delegateTask) {
        DelegateExecution execution = delegateTask.getExecution();
        Object type = delegateTask.getVariableLocal("type");
        if(type != null){
            if(StringUtils.equals(type.toString(), "act_common_approve_001")){
                Object up = execution.getVariable("up");
                if(up != null){
                    Integer integer_up = Integer.valueOf(up.toString());
                    execution.setVariable("up", integer_up+1);
                }
            }
        }
    }
}

gateway表达式

批准:
在这里插入图片描述
返回:
在这里插入图片描述

2.超时非中断

定时边界事件(非中断)

在这里插入图片描述

在这里插入图片描述
时间格式为 ISO 8601日期格式与持续时间格式
格式说明

3.超时转派

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

4.定时捕获

在这里插入图片描述
.说明

5.子流程调用

调用方

在这里插入图片描述

被调用方

在这里插入图片描述

6.服务任务流程

调用Java类

流程图配置

在这里插入图片描述

在这里插入图片描述

Java代码

可以在流程中传递变量

public class ServerListener1 implements JavaDelegate {
    @Override
    public void execute(DelegateExecution execution) {
        execution.getProcessDefinitionId();
        execution.getProcessInstanceId();
        execution.setVariable("name", "ttz");
    }
}
public class ServerListener2 implements JavaDelegate {
    @Override
    public void execute(DelegateExecution execution) {
        Object name = execution.getVariable("name");
        System.err.println(name);
    }
}

7.流程回退

流程图配置

创建时候的监听:

监听图配置

在这里插入图片描述
在这里插入图片描述

创建时候的监听的Java代码
public class TKSetBackParamListener implements TaskListener {

    private Expression backMsgKey;

    private TaskService taskService = SpringUtils.getBean(TaskService.class);
    private RuntimeService runtimeService = SpringUtils.getBean(RuntimeService.class);
    private RepositoryService repositoryService = SpringUtils.getBean(RepositoryService.class);


    @Override
    public void notify(DelegateTask delegateTask) {
        String backMsgKey = this.backMsgKey.getValue(delegateTask).toString();
        String processInstanceId = delegateTask.getProcessInstanceId();
        runtimeService.setVariable(processInstanceId, "backMsgKey", this.backMsgKey.getValue(delegateTask).toString());
    }
}

结束时候的监听:

监听图配置

在这里插入图片描述

结束时候的监听的Java代码
public class TKOffBackParamListener implements TaskListener {
    private RuntimeService runtimeService = SpringUtils.getBean(RuntimeService.class);

    @Override
    public void notify(DelegateTask delegateTask) {
        String processInstanceId = delegateTask.getProcessInstanceId();
        this.runtimeService.setVariable(processInstanceId, "backMsgKey", null);
    }
}

消息中间事件捕获:

在这里插入图片描述

回退Java代码

ProcessInstance processInstance = this.runtimeService.createProcessInstanceQuery()
                .processInstanceId(instanceId)
                .singleResult();

        Object o = runtimeService.getVariable(instanceId, "backMsgKey");
        String backMsgKey = "";
        if(o != null){
            backMsgKey = o.toString();
        }
        if(StringUtils.isBlank(backMsgKey)){
            return AjaxResult.error();
        }
        Execution execution = this.runtimeService.createExecutionQuery()
                .messageEventSubscriptionName(backMsgKey)
                .processInstanceId(instanceId)
                .singleResult();

        this.runtimeService.messageEventReceived(backMsgKey, execution.getId());

回退流程图

在这里插入图片描述

8.任务节点监听

create

在这里插入图片描述

        //完成节点
        taskService.complete(task.getId(), map);

后进入监听

public class TKCreateListener implements TaskListener {

    private Expression param;

    @Override
    public void notify(DelegateTask delegateTask) {
        System.err.println("Create, param=["+param.getValue(delegateTask).toString()+"]");
    }
}

assignment

在这里插入图片描述

//检查任务的受理人
taskService.claim(taskId, loginName);

后进入监听

public class TKAssignmentListener implements TaskListener {
    private Expression param;
    @Override
    public void notify(DelegateTask delegateTask) {
        System.err.println("Assignment, param=["+param.getValue(delegateTask).toString()+"]");
    }
}

complete

在这里插入图片描述

taskService.complete(taskId, map);

执行后进入监听

public class TKCompleteListener implements TaskListener {
    private Expression param;
    @Override
    public void notify(DelegateTask delegateTask) {
        System.err.println("Complete, param=["+param.getValue(delegateTask).toString()+"]");
    }
}

紧接着进入 delete

public class TKDeleteListener implements TaskListener {
    private Expression param;
    @Override
    public void notify(DelegateTask delegateTask) {
        System.err.println("Delete, param=["+param.getValue(delegateTask).toString()+"]");
    }
}

delete

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值