能夠在項目中加入log4j,將logj4.properties文件拷入到src目錄下,這樣框架執行的sql就能夠輸出到到控制檯,log4j提供的日誌級別有如下幾種:
Fatal error warn info debug tracejava
1、部署流程定義mysql
1,在工程項目下建立源碼文件夾processsql
2,在該文件下下面新建立一個工做流流程定義文件test1.bpmn(NewàActivit Diagram)數據庫
3,在test1.bpmn文件定義請假流程或者是報銷流程apache
4,測試代碼編程
- public class ActivitiAPI {
-
- ProcessEngine processEngine= ProcessEngines.getDefaultProcessEngine();
-
- @Test
- public void deploy() {
-
- DeploymentBuilder deploymentBuilder = processEngine
- .getRepositoryService().createDeployment();
-
- deploymentBuilder.name("請假流程部署");
- deploymentBuilder.addClasspathResource("test1.bpmn");
- deploymentBuilder.addClasspathResource("test1.png");
- Deployment
- deployment =deploymentBuilder.deploy();
-
-
-
- }
- }
部署流程定義步驟:框架
1) 首先得到默認的流程引擎getDefaultProcessEngine(),在建立時會自動加載classpath下得activiti-context.xml或者是activiti.cfg.xml工具
2) 經過流程引擎獲取了一個RepositoryService對象也就是倉庫服務對象測試
3) 由倉庫的服務對象建立一個部署對象配置對象,用來封裝部署環境的相關配置。ui
4) 這是一個鏈式編程,在部署配置對象中設置顯示名,上傳規則文件相對classpath的地址。
5) 部署,也是往數據庫中存儲流程定義的過程。
6) 這一步在數據庫中將操做三張表:
a) act_re_deployment
存放流程定義的顯示名和部署時間,每部署一次增長一條記錄
b) act_re_procdef
存放流程定義的屬性信息,部署每一個新的流程定義都會在這張表中增長一條記錄。
c) act_ge_bytearray
存儲流程定義相關的部署信息。即流程定義文檔的存放地。每部署一次就會增長兩條記錄,一條是關於bpmn規則文件的,一條是圖片的(若是部署時只指定了bpmn一個文件,activiti會在部署時解析bpmn文件內容自動生成流程圖)。兩個文件不是很大,都是以二進制形式存儲在數據庫中。
2、查詢流程定義
-
- @Test
- public void queryProcessDefinition(){
-
- ProcessDefinitionQuery query = processEngine.getRepositoryService()
- .createProcessDefinitionQuery();
-
- query.processDefinitionKey("bxlc");
-
- query.orderByProcessDefinitionVersion().desc();
-
- query.listPage(0, 10);
- List<ProcessDefinition> list =query.list();
- for(ProcessDefinition pd : list) {
- System.out.println(pd.getName()+ "" + pd.getId());
- }
- }
流程定義查詢步驟:
1) 由於流程定義的信息存放在倉庫中,因此應該獲取RepositoryService。
2) 建立流程定義查詢對象,能夠在ProcessDefinitionQuery上設置查詢過濾參數
3) 調用ProcessDefinitionQuery對象的list方法,執行查詢,得到符合條件的流程定義列表
4) 由運行結果能夠看出:
a) Key和Name的值爲:bpmn文件process節點的id和name的屬性值
b) key屬性被用來區別不一樣的流程定義。
c) 帶有特定key的流程定義第一次部署時,version爲1。以後每次部署都會在當前最高版本號上加1
d) Id的值的生成規則爲:{processDefinitionKey}:{processDefinitionVersion}:{generated-id},這裏的generated-id是一個自動生成的惟一的數字
e) 重複部署一次,deploymentId的值以必定的形式變化
3、刪除流程定義
- @Test
- public void delDeployment() throwsException {
-
- RepositoryService repositoryService =processEngine.getRepositoryService();
-
- String deploymentId = "1";
-
- repositoryService.deleteDeployment(deploymentId);
-
- repositoryService.deleteDeployment(deploymentId, true);
- }
4、啓動流程實例
什麼是流程實例?根據一個流程定義具體的一次執行過程就是一個流程實例,一個流程定義對應多個流程實例(一對多關係),好比:已經定義了一個請假流程,張三同窗走了一次該流程這就是啓動一次流程實例
- @Test
- public void startProcessInstance() {
-
- String processDefinitionKey = "qjlc";
- ProcessInstance processInstance = processEngine.getRuntimeService()
- .startProcessInstanceByKey(processDefinitionKey);
- System.out.println(processInstance.getId());
- }
5、查詢流程實例列表
- @Test
- public void queryProcessInstance(){
-
- ProcessInstanceQuery query = processEngine.getRuntimeService().createProcessInstanceQuery();
- query.processDefinitionKey("qjlc");
- query.orderByProcessInstanceId().desc();
- query.listPage(0, 2);
- List<ProcessInstance> list =query.list();
- for(ProcessInstance pi : list) {
- System.out.println(pi.getId()+ " " + pi.getActivityId());
- }
- }
6、結束流程實例
- @Test
- public void deleteProcessInstance(){
- String processInstanceId = "1601";
- processEngine.getRuntimeService().deleteProcessInstance(processInstanceId, "我願意");
- }
7、查詢部署信息
- @Test
- public void queryDeployment() {
-
- DeploymentQuery query = processEngine.getRepositoryService()
- .createDeploymentQuery();
- List<Deployment> list =query.list();
- for (Deploymentdeployment : list) {
- String id = deployment.getId();
- System.out.println(id);
- }
- }
8、刪除部署信息
- @Test
- public void deleteDeployment() {
- String deploymentId = "101";
-
-
- processEngine.getRepositoryService().deleteDeployment(deploymentId,
- true);
- }
9、查詢一次流程部署對應的文件名稱(bpmn,png)和輸入流
- @Test
- public void queryProcessFile() throws Exception {
- String deploymentId = "101";
- List<String> names = processEngine.getRepositoryService()
- .getDeploymentResourceNames(deploymentId);
- for (String name :names) {
- System.out.println(name);
- InputStream in = processEngine.getRepositoryService()
- .getResourceAsStream(deploymentId,name);
-
-
- FileUtils.copyInputStreamToFile(in,new File("d:\\" + name));
- in.close();
- }
- }
10、獲取流程定義圖標(png文件)
- @Test
- public void getPng() throws Exception {
- String processDefinitionId = "qjlc:9:1204";
- InputStream pngInputStream = processEngine.getRepositoryService()
- .getProcessDiagram(processDefinitionId);
- FileUtils.copyInputStreamToFile(pngInputStream,new File("d:\\my.png"));
- }
11、 查詢我的任務列表
- @Test
- public void queryTask() {
- TaskQuery query= processEngine.getTaskService().createTaskQuery();
- String assignee = "張三";
- query.taskAssignee(assignee);
- query.orderByTaskCreateTime().desc();
- List<Task> list = query.list();
- for (Task task :list) {
- System.out.println(task.getId()+ " " + task.getName());
- }
- }
12、 辦理任務
- @Test
- public void completeTask(){
- String taskId= "404";
- processEngine.getTaskService().complete(taskId);
- }
十3、 直接將流程想下執行一步管理員用戶擁有該權限
- @Test
- public void signal(){
- String executionId = "2701";
- processEngine.getRuntimeService().signal(executionId);
- }