Activiti工作流--流程定義--之三
阿新 • • 發佈:2018-12-15
由於概念性的東西這裡就不在做更多的介紹了,下面直接對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:tx="http://www.springframework.org/schema/tx"
xmlns:aop="http://www.springframework.org/schema/aop"
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/tx
http://www.springframework.org/schema/tx/spring-tx.xsd
http://www.springframework.org/schema/aop
http://www.springframework. org/schema/aop/spring-aop.xsd">
<bean id = "processEngineConfiguration"
class = "org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration">
<property name="jdbcDriver" value="com.mysql.jdbc.Driver"></property>
<property name="jdbcUrl" value="jdbc:mysql://127.0.0.1:3306/activiti?useUnicode=true&characterEncoding=utf-8"></property>
<property name="jdbcUsername" value="root"></property>
<property name="jdbcPassword" value="root"></property>
<property name="databaseSchemaUpdate" value="false"></property>
</bean>
</beans>
下面中的步驟都是在一個類下面進行的,利用Junit4進行測試 這裡就以請假流程為例進行介紹
初始化引擎
private ProcessEngine processEngine = null;
@Before
public void initProcessEngine(){
processEngine = ProcessEngines.getDefaultProcessEngine();
}
流程定義好後,需要進行部署
流程的定義需要在eclipse中定義好(這裡以eclipse為例),定義好之後會生成兩個檔案
@Test
public void testLeaveProcessDeploy(){
//建立部署構建器
/*RepositoryService repositoryService = processEngine.getRepositoryService();
DeploymentBuilder deploymentBuilder = repositoryService.createDeployment();
//新增資源
deploymentBuilder.addClasspathResource("diagram/leave.bpmn");
deploymentBuilder.addClasspathResource("diagram/leave.png");
deploymentBuilder.name("請假流程");
//進行部署
Deployment deployment = deploymentBuilder.deploy();*/
//avtiviti支援鏈式程式設計
Deployment deployment = processEngine.getRepositoryService()
.createDeployment()
.addClasspathResource("diagram/leave.bpmn")
.addClasspathResource("diagram/leave.png")
.name("請假流程")
.deploy();
System.out.println("流程部署ID:"+deployment.getId());
System.out.println("流程部署名稱:"+deployment.getName());
}
流程啟動
@Test
public void testStartLeaveProcess(){
String processDefinitionKey = "leave";
ProcessInstance processInstance = processEngine.getRuntimeService()
.startProcessInstanceByKey(processDefinitionKey);
System.out.println("流程部署的ID:"+processInstance.getDeploymentId());
System.out.println("流程定義的ID:"+processInstance.getProcessDefinitionId());
System.out.println("流程例項的ID:"+processInstance.getProcessInstanceId());
}
流程的處理
@Test
public void testQueryTask(){
String assignee = "李四";
String processInstanceId = "7501";
List<Task> listTask = processEngine.getTaskService()
.createTaskQuery()
.taskAssignee(assignee)
.processInstanceId(processInstanceId)
.list();
if (listTask != null && listTask.size() > 0) {
for (Task task : listTask) {
System.out.println("流程定義的ID:"+task.getProcessDefinitionId());
System.out.println("流程例項的ID:"+task.getProcessInstanceId());
System.out.println("執行物件ID:"+task.getExecutionId());
System.out.println("任務ID:"+task.getId());
System.out.println("任務名稱:"+task.getName());
System.out.println("任務建立的時間:"+task.getCreateTime());
System.out.println("================================");
}
}
}
流程處理過程
@Test
public void testCompleteTask(){
String taskId = "27502";
processEngine.getTaskService()
.complete(taskId);
System.out.println("任務完成");
}