Activiti开启流程实例

开始绘流程图,首先右击鼠标可以看到一下图标,都有相对应的意思

画好一个简易的流程过后,可以看到xml文件中已经有了

右击生成png格式的图片

图片点击后就是一个视图的效果

将流程文件部署

@Test
public void testDeploy() {
    //1.创建流程引擎
    ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
    //获取流程存储服务组件
    RepositoryService repositoryService = processEngine.getRepositoryService();
    //创建部署对象,配置部署信息
    Deployment deployment = repositoryService.createDeployment()
            .name("请假流程")
            .addClasspathResource("bpmn/leave.bpmn20.xml")
            .addClasspathResource("bpmn/diagram.png")
            .deploy();
    System.out.println("部署成功");
    System.out.println(deployment.getId());
    System.out.println(deployment.getName());
    System.out.println(deployment.getKey());
    processEngine.close();
}

执行成功后可以看到数据库里有相应的信息

部署成功后,我们就可以开始使用啦,老样子还是先创建个流程实例然后从里面获取运行管理类

// 启动流程实例
@Test
public void testStartProcess() {
    // 1.创建引擎
    ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
    // 2.从中获取RuntimeService
    RuntimeService runtimeService = processEngine.getRuntimeService();
    // 3.根据流程定义的id启动流程
    ProcessInstance instance = runtimeService.startProcessInstanceByKey("leave");
    // 4.输出内容
    System.out.println("流程定义id = " + instance.getProcessDefinitionId());
    System.out.println("流程实例id = " + instance.getId());
}

这里注意到Assignee是几个问号的形式,没错别怀疑这是乱码了,因为先前的Name属性中不能输入中文噢

然后开始审批任务

// 完成任务
@Test
public void testCompletTask() {
    // 还是流程引擎
    ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
    // 获取任务服务组件
    TaskService taskService = processEngine.getTaskService();
    //获取李勃蚊在leave中对应的任务 我们已知只有一个任务 可使用singleResult获取一个结果集
    Task task = taskService.createTaskQuery()
            .processDefinitionKey("leave") // 流程的key
            .taskAssignee("李勃蚊")   // 要查询的负责人
            .singleResult();// 因为可能有多个待办  所以是一个集合
    System.out.println("流程实例ID:" + task.getProcessInstanceId());
    System.out.println("任务ID:" + task.getId());
    System.out.println("任务负责人:" + task.getAssignee());
    System.out.println("任务名称:" + task.getName());
    taskService.complete(task.getId());
}

兰小鹏的审核也是一样的

// 完成任务
@Test
public void testCompletTask2() {
    // 还是流程引擎
    ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
    // 获取任务服务组件
    TaskService taskService = processEngine.getTaskService();
    //获取李勃蚊在leave中对应的任务 我们已知只有一个任务 可使用singleResult获取一个结果集
    Task task = taskService.createTaskQuery()
            .processDefinitionKey("leave") // 流程的key
            .taskAssignee("兰小鹏")   // 要查询的负责人
            .singleResult();// 因为可能有多个待办  所以是一个集合
    System.out.println("流程实例ID:" + task.getProcessInstanceId());
    System.out.println("任务ID:" + task.getId());
    System.out.println("任务负责人:" + task.getAssignee());
    System.out.println("任务名称:" + task.getName());
    taskService.complete(task.getId());
}

执行完之后去看历史记录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值