工作流學習2----入門
阿新 • • 發佈:2017-08-11
XML drive pos 流程引擎 service() created pre tails 流程
引入jar包
創建activiti表
第一種方式:使用代碼來創建activiti工作流的表
import org.activiti.engine.ProcessEngine; import org.activiti.engine.ProcessEngineConfiguration; import org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration; import org.junit.Test; public class TestActiviti { @Test publicvoid run() { // 1.創建流程引擎配置 ProcessEngineConfiguration configuration = new StandaloneProcessEngineConfiguration(); // 2設置配置對象連接數據庫 configuration.setJdbcDriver("com.mysql.jdbc.Driver"); configuration.setJdbcUrl("jdbc:mysql:///db_activiti"); configuration.setJdbcUsername("root"); configuration.setJdbcPassword("root"); // 3.設置數據生成策略 : 設置在我們程序運行的時候創建db_activiti數據庫表 configuration.setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_TRUE); // 4.獲取流程引擎對象 ProcessEngine processEngine = configuration.buildProcessEngine();//打印測試 System.out.println(processEngine); } }
第二種方式:使用配置文件創建activiti工作流表
在類路徑下創建activiti.cfg.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd"> <bean id="processEngineConfiguration" class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration"> <property name="jdbcDriver" value="com.mysql.jdbc.Driver" /> <property name="jdbcUrl" value="jdbc:mysql:///db_activiti" /> <property name="jdbcUsername" value="root" /> <property name="jdbcPassword" value="root" /> <property name="databaseSchemaUpdate" value="true" /> </bean> </beans>
然後通過代碼來加載配置文件中的內容
public class Demo { @Test public void run() { /** * 第一種: * 直接指定文件的位置和名稱,但是很少使用 */ /*// 1.創建流程引擎的配置對象:通過加載classpath下的配置文件 ProcessEngineConfiguration configuration = ProcessEngineConfiguration .createProcessEngineConfigurationFromResource("activiti.cfg.xml"); // 2.獲取流程引擎 ProcessEngine processEngine2 = configuration.buildProcessEngine(); System.out.println(processEngine2);*/ /** * 第二種: * 需要註意的幾個點:( 如果使用這種方法獲取流程引擎) * 1. 首先規定工作流的配置文件必須放在classpath的根路徑下 * 2.配置文件的名稱必須叫做activiti.cfg.xml * 這種獲取在實戰開發中比較常用 */ ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); System.out.println(processEngine); } }
入門程序:
import org.activiti.engine.ProcessEngine; import org.activiti.engine.ProcessEngines; import org.activiti.engine.repository.Deployment; import org.activiti.engine.runtime.ProcessInstance; import org.activiti.engine.task.Task; import org.junit.Test; public class QuickDemo { // 1.獲取流程引擎,作為成員變量 private ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); /** * 流程定義:ProcessDefinition * 預定義的規則被稱為流程定義 * */ @Test public void run() { // 1.獲取倉庫服務:只要跟流程定義或者部署對象有關的都是用倉庫服務,並加載資源文件,獲取部署對象 Deployment deploy = processEngine.getRepositoryService().createDeployment() .name("HelloWorldDeploy") .addClasspathResource("diagrams/HelloWorld.bpmn") .addClasspathResource("diagrams/HelloWorld.png") .deploy(); // 2.查詢信息 System.out.println(deploy.getId()); System.out.println(deploy.getName()); System.out.println(deploy.getDeploymentTime()); } /** * 啟動流程服務 * 運行服務 */ @Test public void startProcessInstance() { // 1.流程定義的key String processDefinitionKey = "HelloWorldKey"; // 2.啟動流程實例,獲取到流程實例對象 ProcessInstance processInstance = processEngine.getRuntimeService() .startProcessInstanceByKey(processDefinitionKey); // 3.打印流程實例數據 System.out.println("流程實例id:"+processInstance.getId()); System.out.println("流程部署id:"+processInstance.getDeploymentId()); System.out.println("流程定義id:"+processInstance.getProcessDefinitionId()); } /** * 查看正在執行任務實例 */ @Test public void queryUserTask() { String asssignee = "巴莫"; Task task = processEngine.getTaskService().createTaskQuery() .taskAssignee(asssignee) .singleResult(); System.out.println("TaskId:"+task.getId()); System.out.println("流程實例ID:"+task.getProcessInstanceId()); } /** * 辦理任務 */ @Test public void completeTask() { String taskId = "7504"; processEngine.getTaskService().complete(taskId); System.out.println("辦理成功!!!"); } }
有一篇別人講解的特別好,值得我們學習;
http://blog.csdn.net/zwk626542417/article/details/46594505
工作流學習2----入門