连接:activiti 表名称的解释
工做流从流程定义到建立一个流程实例完成执行步骤(省略bpmn的画法)
工做流的全部操做都是使用流程引擎来进行操做的,流程引擎只是存储流程的过程,而不存储具体的业务数据,须要自行创建相关的表,工做流的特色是流程和业务的关联具体步骤以下。
上面就是一个最简单从上往下执行的流程的执行步骤,本章节都是以代码作示例,代码很少,可是都执行一遍,你会对整个activiti的流程有个大概的了解html
建立流程引擎java
通常java中使用工做流,都是和spring框架结合进行使用的,具体状况后续添加。mysql
//普通方法的建立
/** * Description:建立流程引擎 * * @author cy * @date 2018年08月03日 16:34 * version 1.0 */ public class CreateEngine { public static void main(String[] args) { //流程引擎的建立,使用流程引擎配置文件,也就是建立23+张表 ProcessEngineConfiguration processEngineConfigurationFromResource = ProcessEngineConfiguration.createStandaloneProcessEngineConfiguration(); //设置数据库信息 processEngineConfigurationFromResource.setJdbcUrl("jdbc:mysql://localhost:3306/cheng?useUnicode=true&characterEncoding=utf-8"); processEngineConfigurationFromResource.setJdbcDriver("com.mysql.jdbc.Driver"); processEngineConfigurationFromResource.setJdbcUsername("root"); processEngineConfigurationFromResource.setJdbcPassword("admin"); processEngineConfigurationFromResource.setDatabaseSchemaUpdate(processEngineConfigurationFromResource.DB_SCHEMA_UPDATE_TRUE);//对数据库进行更新 processEngineConfigurationFromResource.buildProcessEngine();//建立引擎 System.out.println("建立引擎成功"); } }
流程部署spring
/* * 获取流程引擎对象,下面的方法会默认查找classpath目录下的名称为activi.cfg.xml * 里面bean的id为processEngineConfiguration的ProcessEngineConfiguration引擎配置对象来获取ProcessEngine对象 */ private ProcessEngine engine = ProcessEngines.getDefaultProcessEngine(); //部署一个流程 @Test public void deployProcessDefinition(){ //根据引擎获取资源service RepositoryService repositoryService = engine.getRepositoryService(); //部署bpmn文件 String bpmnName="purchasingflow.bpmn"; InputStream bpmnIn = this.getClass().getClassLoader().getResourceAsStream("diagram/purchasingflow.bpmn"); //部署bpmn生成的图片 String pngName="purchasingflow.png"; InputStream pngIn = this.getClass().getClassLoader().getResourceAsStream("diagram/purchasingflow.png"); //添加这两个文件进行部署 Deployment deployment = repositoryService.createDeployment() .addInputStream(bpmnName, bpmnIn) .addInputStream(pngName, pngIn) .deploy(); System.out.println("部署id:"+deployment.getId()); System.out.println("部署的name:"+deployment.getDeploymentTime()); }
查询流程的定义sql
//查询流程定义 @Test public void queryProcessDefinition(){ RepositoryService repositoryService = engine.getRepositoryService(); //建立流程定义查询对象 ProcessDefinitionQuery definitionQuery = repositoryService.createProcessDefinitionQuery(); String processDefinitionKey = "purchasingflow"; //设置流程定义的key的查询条件 definitionQuery.processDefinitionKey(processDefinitionKey); //查询全部的流程定义 List<ProcessDefinition> processDefinitionList = definitionQuery.list(); for(ProcessDefinition definition:processDefinitionList){ System.out.println("-------------------------"); System.out.println("流程定义id:"+definition.getId()); System.out.println("流程资源名:"+definition.getResourceName()); System.out.println("流程部署id:"+definition.getDeploymentId()); } }
启动一个流程实例数据库
//启动一个流程实例 @Test public void startProcessInstance(){ RuntimeService runtimeService = engine.getRuntimeService(); String processDefinitionKey = "purchasingflow"; //根据流程定义的key启动一个流程实例 ProcessInstance processInstance = runtimeService.startProcessInstanceByKey(processDefinitionKey); System.out.println("流程实例id:"+processInstance.getId()); System.out.println("流程定义id:"+processInstance.getProcessDefinitionId()); }
查询当前处理人的任务api
//查询当前用户的代办任务 @Test public void queryProcessInstance(){ //查询任务使用的service TaskService taskService = engine.getTaskService(); //获取任务查询对象 TaskQuery taskQuery = taskService.createTaskQuery(); taskQuery.taskAssignee("zhangsan"); //查询该条件下的全部的任务 List<Task> tasks =taskQuery.list(); for(Task task:tasks){ System.out.println("当前任务id:"+task.getId()); System.out.println("当前任务所属流程定义id:"+task.getProcessDefinitionId()); System.out.println("当前任务的key:"+task.getTaskDefinitionKey()); } }
完成一个流程框架
//完成一个流程 @Test public void completeProcessInstance(){ //任务的id,后期整合后会经过当前登陆人身份查询到该用户的任务,而后获取到该id String taskId="402"; TaskService taskService = engine.getTaskService(); //根据任务id完成该任务 taskService.complete(taskId); }