activiti7---工作流activiti的创建步骤

1.使用activiti的插件actiBPM画一个流程图

activiti7---工作流activiti的创建步骤

2.流程定义与部署

       //创建ProcessEngine对象
        ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
        //得到RepositoryService,用于加载流程图,部署流程图
        RepositoryService repositoryService = processEngine.getRepositoryService();
        //部署
        Deployment deployment = repositoryService.createDeployment().addClasspathResource("process/ServiceTaskTest.bpmn").name("test").deploy();
涉及的表:
act_re_deployment  部署信息
act_re_procdef     流程定义的一些信息
act_ge_bytearray   流程定义的bpmn文件及png文件

3.执行流程实例

 ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
 ProcessInstance processInstance = processEngine.getRuntimeService().startProcessInstanceByKey("myProcess_1");

processInstanceKey可在流程图中获取:

activiti7---工作流activiti的创建步骤

涉及的表:

 act_ru_execution   流程实例执行表,记录当前流程的执行情况
act_ru_task        任务执行表,记录当前执行的任务
act_ru_identitylink  任务参与者,记录当前参与任务的用户或组
act_hi_taskinst:已经执行完的历史任务信息
act_hi_procinst:流程实例的历史表,存放执行完毕的流程实例信息
act_hi_actinst:历史任务表,记录所有任务

注意:act_ru_*记录正在执行的任务,执行完则删除,确保小表操作

4.获取当前任务列表

 ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
//执行流程时获取的processInstance
List<Task> list= taskService.createTaskQuery().processInstanceId(processInstance.getId()).list();
        list.forEach(task -> {
            System.out.println("任务ID:" + task.getId());
            System.out.println("任务名称:" + task.getName());
            System.out.println("任务创建时间:" + task.getCreateTime());
            System.out.println("任务的处理人:" + task.getAssignee());
            System.out.println("任务的实例ID:" + task.getProcessDefinitionId());
            System.out.println("执行对象的ID:" + task.getExecutionId());
            System.out.println("任务的班里人:" + task.getAssignee());
            System.out.println("流程定义ID:" + task.getProcessInstanceId());
        });

5.获取指定用户当前任务列表

ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
String asssignee = "admin";
List<Task> list = processEngine.getTaskService().createTaskQuery().taskAssignee(asssignee).list();

list.forEach(task -> {
            System.out.println("任务ID:" + task.getId());
            System.out.println("任务名称:" + task.getName());
            System.out.println("任务创建时间:" + task.getCreateTime());
            System.out.println("任务的处理人:" + task.getAssignee());
            System.out.println("任务的实例ID:" + task.getProcessDefinitionId());
            System.out.println("执行对象的ID:" + task.getExecutionId());
            System.out.println("任务的班里人:" + task.getAssignee());
            System.out.println("流程定义ID:" + task.getProcessInstanceId());
        });

6.完成任务

ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
 //创建tastServervice
TaskService taskService = processEngine.getTaskService();
taskService.complete(taskId);

 

上一篇:activiti--bpmnmodel


下一篇:Activiti开发案例之activiti-app更换数据源