工作流笔记第一天_简单介绍activiti
1、什么是工作流?
? ? ? ?工作流(Workflow),指“業務過程的部分或整體在計算機應用環境下的自動化”。是對工作流程及其各操作步驟之間業務規則的抽象、概括描述。
工作流是將一組任務組織起來以完成某個經營過程:定義了任務的觸發順序和觸發條件,每個任務可以由一個或多個軟件系統完成,也可以由一個或一組人完成,還可以由一個或多個人與軟件系統協作完成。
2、工作流主要解決的主要問題是:
為了實現某個業務目標,利用計算機在多個參與者之間按某種預定規則自動傳遞文檔、信息或者任務。
工作流: ①指定流程:在指定流程的過程中,會經歷很多版本。 ②流程正式啟動 ③啟動流程實例 ④申請 ⑤審批 ⑥流程結束 注:雖然利用數據庫也可以控制業務流程,但是設計的表通用性不強,根據業務可能需要經常性的進行變更。 學習JBPM重點在于:①流程定義文檔XML②JBPM API③數據庫的結構(重點)3.activiti中表介紹
activiti自帶的表一共有23個。
ACT_GE_*:GE是general,通用的。
ACT_HI_*:HI是history,歷史表,一個流程實例跑完就會插入歷史表。
ACT_ID_*:ID是identity,與id相關的表。
ACT_RE_*:RE是repository,存儲的是一些靜態資源,如流程的資源。
ACT_RU_*:RU是run,存儲的是一些運行時的信息。
4.activiti中的Service
?
5、在Eclipse中添加工作流的插件
? ? ? 在help-->install new softWare-->work with中直接搜索activiti然后選擇安裝即可,然后新建項目new-->other-->Activiti-->activiti project,要畫工作流流程圖new-->other-->Activiti-->activiti Diagram
?
6、入門程序
配置文件(aciviti.cfg.xml):
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
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-2.5.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.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://localhost:3306/activiti"/>
<property name="jdbcUsername" value="root" />
<property name="jdbcPassword" value="123" />
<!-- 設置創建表的方式 -->
<property name="databaseSchemaUpdate" value="true" />
</bean>
</beans>
代碼實現:
package itheima.process1;
import java.util.List;
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 HelloWord {
// 獲得工作流引擎對象
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
/* 部署流程定義 */
@Test
public void deloymentProcessDefinition() {
Deployment deploy = processEngine.getRepositoryService()// 與流程定義相關的service
.createDeployment()// 創建部署對象
.name("helloWord入門程序")// 添加部署名稱
.addClasspathResource("diagrams/helloWord.bpmn")// 從classPath的資源中加載,一次只能加載一個文件
.addClasspathResource("diagrams/helloWord.png").deploy();// 完成部署
System.out.println("部署id:" + deploy.getId());
System.out.println("部署名稱:" + deploy.getName());
}
/* 啟動流程實例 */
@Test
public void startProcessInstance() {
// 流程定義的key
String processDefinitionKey = "helloWord";
ProcessInstance processInstance = processEngine.getRuntimeService()// 與正在執行的流程實例和流程對象有關的service
.startProcessInstanceByKey(processDefinitionKey);
// 使用流程定義的key啟動流程實例,key與helloWord.bpmn中的id值相同
System.out.println("流程實例id:" + processInstance.getId());
System.out.println("流程定義id:" + processInstance.getProcessDefinitionId());
}
/* 查詢當前人的個人任務 */
@Test
public void findMyPersonalTask() {
String assignee = "張三";
List<Task> list = processEngine.getTaskService()// 獲取與正在執行任務的service
.createTaskQuery()// 創建任務查詢對象
.taskAssignee(assignee)// 指定個人任務查詢,指定辦理人
.list();
if (list != null && list.size() > 0) {
for (Task task : list) {
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.getProcessInstanceId());
System.out.println("執行對象id:" + task.getExecutionId());
System.out.println("流程定義id:" + task.getProcessDefinitionId());
}
}
}
}
轉載于:https://www.cnblogs.com/smile-nn/p/7376004.html
總結
以上是生活随笔為你收集整理的工作流笔记第一天_简单介绍activiti的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java正则匹配
- 下一篇: 安装Ruby、Sass在WebStrom