0
点赞
收藏
分享

微信扫一扫

03、Activiti入门案例


入门案例步骤:流程定义、部署流程定义、启动一个流程实例、任务查询、任务处理

一、流程定义

1、新建流程

03、Activiti入门案例_Activiti入门案例

03、Activiti入门案例_Test_02

03、Activiti入门案例_Test_03

这样就进入了流程设计页面

2、绘制流程图、

03、Activiti入门案例_System_04

3、指定流程定义的key、

03、Activiti入门案例_任务处理_05

4、指定任务负责人 

03、Activiti入门案例_System_06

03、Activiti入门案例_Test_07

5、流程保存为图片

先将holiday.bpmn改为holiday.xml、如下图

03、Activiti入门案例_Test_08

03、Activiti入门案例_任务处理_09

如果有乱码、就修改idea工具、然后重启idea、

 

03、Activiti入门案例_System_10

最后一行追加一条命令: -Dfile.encoding=UTF-8

然后就保存为图片到diagram文件里、然后再将holiday.xml改回之前的holiday.bpmn

03、Activiti入门案例_Activiti入门案例_11

这样流程图就画好了。会有二个文件:holiday.bpmn 和holiday.png

二、部署流程定义

部署流程定义就是要将上边绘制的图形即流程定义(.bpmn)部署在工作流程引擎activiti中

使用processEngine创建RepositoryService、方法如下:

//2、部署流程定义
    @Test
    public void createActivitiDefined() {
        //获取repositoryService
        RepositoryService repositoryService = processEngine.getRepositoryService();
        //部署对象
        Deployment deployment = repositoryService.createDeployment()
                .addClasspathResource("diagram/holiday.bpmn")
                .addClasspathResource("diagram/holiday.png")
                .name("请假申请流程")
                .deploy();
        System.out.println("流程部署id= " + deployment.getId());
        System.out.println("流程部署名称 = " + deployment.getName());
    }


/**
 * 流程定义的部署
 * activiti表有哪些?
 *  act_re_deployment  部署信息
    act_re_procdef     流程定义的一些信息
    act_ge_bytearray   流程定义的bpmn文件及png文件
 */

 执行此操作后activiti会将上边代码中指定的bpm文件和图片文件保存在activiti数据库。

三、启动一个实例

流程定义部署在activiti后就可以通过工作流管理业务流程了,也就是说上边部署的请假申请流程可以使用了。一个流程可以有很多实例、对于请假申请流程,张三发起一个请假申请单需要启动一个流程实例

//3、启动一个流程实例(一个流程可以有多个实例)
    @Test
    public void startProcessInstance(){
        //获取RunTimeService
        RuntimeService runtimeService = processEngine.getRuntimeService();

        //根据流程定义的key启动流程
        ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("holiday");

        System.out.println("流程定义的id:"+processInstance.getProcessDefinitionId());
        System.out.println("流程实例id:" +processInstance.getId() );
        System.out.println("当前活动的id:"+processInstance.getActivityId());
    }

/**
 * 启动流程实例:
 *     前提是先已经完成流程定义的部署工作
 *
 *     背后影响的表:
 *       act_hi_actinst     已完成的活动信息
         act_hi_identitylink   参与者信息
         act_hi_procinst   流程实例
         act_hi_taskinst   任务实例
         act_ru_execution   执行表
         act_ru_identitylink   参与者信息
         act_ru_task  任务
 */

四、任务查询

流程启动后,各各任务的负责人就可以查询自己当前需要处理的任务,查询出来的任务都是该用户的待办任务。

//4、任务查询
    @Test
    public void findPersonalTaskList(){
        //任务负责人
        String assignee = "zhangsan";
        //创建TaskService
        TaskService taskService = processEngine.getTaskService();
        List<Task> list = taskService.createTaskQuery().processDefinitionKey("holiday").taskAssignee(assignee).list();

        for (Task task : list) {
            System.out.println("流程实例id: " + task.getProcessInstanceId());
            System.out.println("任务id: " + task.getId());
            System.out.println("任务负责人id: " + task.getAssignee());
            System.out.println("任务名称id: " + task.getName());
        }
    }

五、任务处理

任务负责人查询待办任务,选择任务进行处理,完成任务

//5、任务处理
    @Test
    public void completeTask(){
        //任务id
        String taskId = "7505";
        //创建TaskService
        TaskService taskService = processEngine.getTaskService();
        //完成任务
        taskService.complete(taskId);
    }

/**
 * 流程定义的部署
 * activiti表有哪些?
 *  act_re_deployment  部署信息
    act_re_procdef     流程定义的一些信息
    act_ge_bytearray   流程定义的bpmn文件及png文件
 */

 

举报

相关推荐

0 条评论