Activiti 簡易教程

一搭建環境

1.1?? JDK 6+

activiti?運行在版本?6以上的?JDK上。轉到?Oracle Java SE下載頁面,點擊按鈕“下載?JDK”。網頁中也有安裝說明。要核實安裝是否成功,在命令行上運行?javaversion。將打印出安裝的?JDK的版本。

1.2?? Ant 1.8.1+

?Ant[http://ant.apache.org/bindownload.cgi]下載頁面下載最新穩定版的?Ant。解壓文件,確保其?bin文件夾在操作系統的?path?下。在命令行上運行?antversion?來檢查?Ant是否安裝成功。成功將打印安裝的?Ant?版本。

1.3?? Eclipse 3.7+

?Eclipse的下載頁面下載?Eclipse Classic(Eclipse JEE)版的?eclipse。解壓下載的文件,然后就可以運行?eclipse路徑下的eclipse?文件了。

下載地址:http://www.eclipse.org/downloads/packages/release/indigo/sr2

1.4?? Activiti -eclipse designer插件安裝

?????????在安裝Activiti -eclipse designer插件前先安裝maven插件,m2e(eclipse)插件在Install New SoftWare安裝時會出現些問題,按以下步驟安裝即可。

1.4.1?先安裝GEF插件

maven插件安裝的時候會依賴這個插件,在Eclipse -> help -> Install New SoftWare中安裝,update site:http://download.eclipse.org/tools/gef/updates/interim/

1.4.2?安裝SVN插件

Eclipse -> help -> Install New SoftWare中安裝,update site:http://subclipse.tigris.org/update_1.6.x

1.4.3安裝Maven插件

方式一:在線安裝

?????????Eclipse -> help -> Install New SoftWare中安裝,update site:http://nexus.tesla.io:8081/nexus/content/sites/m2e.extras/m2e/1.5.0/N/LATEST/

順便eclipse m2e支持sitehttp://www.eclipse.org/m2e/download/

?????????如在線安裝不成功,報[the selected did not contain any resources that can run on server maven project]錯誤,建議采用方式二安裝。

方式二:本地安裝

?????????下載maven?eclipse-maven3-plugin插件(eclipse-maven3-plugin為本人CSDN上傳)

Maven site:?http://ant.apache.org/bindownload.cgi

eclipse-maven3-plugin site:?http://download.csdn.net/detail/yangyi22/5663245

?????????eclipse目錄下建立myplugins目錄,將eclipse-maven3-plugin解壓后文件復制進去,建立links目錄,新建maven.link文件(名字隨意取)添加文本:

path=…/eclipse/myplugins/maven,即讓eclipse啟動時去尋找myplugins中的插件,如本人安裝的路徑:path=D:/Java~coding~site /eclipse[indigo-jee]/eclipse/myplugins/maven

1.4.4?最后安裝Activiti -eclipse designer

打開?HelpàInstall New Software。在如下面板中,點擊Add按鈕,然后填入下列字段:lNameActiviti BPMN 2.0 designer

l?Locationhttp://activiti.org/designer/update/

?

安裝成功后,新建activiti項目,視圖如下:

?

安裝m2eclipse插件后,重啟Eclipse,如提示

Eclipse is running in a JRE, but a JDK is required

??Some Maven plugins may not work when importing projects or updating source folders.

需要修改eclipse.ini文件,新增一項配置

-vm配置項必須在–vmargs配置項前,是因為執行到-vmargs配置項已經選擇了一個默認的JVM了。

所以在–vmargs前面加上這一句:

-vm??

C:/Program Files/Java/jdk1.6.0_20/bin/javaw.exe?

二開始activiti 5.10的第一個demo

2.1???建立activiti-demo工程,選擇Activiti Project

?

創建成功后的項目:

?

activiti-demo項目添加activiti依賴包,項目右鍵Build Path->Configure Build Path->libraries -> Add External Jars選中…\activiti-5.10\setup\files\dependencies\libs下所有包添加即可。

2.2?activiti-demo工程的數據庫整合為MySQL

?????????…\activiti-5.10\setup\build\activiti-cfg目錄下的activiti.cfg.xml配置文件復制到項目src\main\resources目錄下,修改數據庫配置如下:

<!-- Database configurations -->

????<propertyname="jdbcUrl"

value="jdbc:mysql://localhost:3306/test?autoReconnect=true"/>

????<propertyname="jdbcDriver"

??? ???value="com.mysql.jdbc.Driver"/>

????<propertyname="jdbcUsername"value="root"/>

????<propertyname="jdbcPassword"value="root"/>

????<!-- Database configurations -->

????<propertyname="databaseSchemaUpdate"value="true"/>

????<!-- job executor configurations -->

????<propertyname="jobExecutorActivate"value="false"/>

2.3?設計activiti-demo工程的流程

在該項目的src/main/resource/diagrams下右鍵創建Activiti diagram,文件名為:DemoProcess.bpmn

?-->

?

此時進入Activiti Diagram Editor,在空白處點一下,下邊屬性欄中設置idnameid就是這個流程的key,后邊啟動流程的時候使用到。

?

注意:Activiti 5.8升級到5.9以后,xxx.bpmn20.xmlxxx.png已不默認生成,僅僅是生成xxx.bpmn文件,xxx.bpmn中的定義內容就如xxx.bpmn20.xml一樣。

????????另外,快捷菜單:“Create deployment artifacts”和“Import BPMN20 file”,在5.9以后去掉了。

如需設計完成流程后自動生成一個png圖片按如下處理

l??保存無法生存png圖片按以下處理

Window –> Preferences -> Activiti ->Save勾選即可

或者手動操作Activiti Designer打開xxx.bpmn文件,然后右鍵選擇Export Diagram...,在彈出的對話框中設置圖片的參數即可,一般使用默認就可以了。

在設計編輯器中保存DemoProcess.bpmn后的項目視圖如下:

?

測試類代碼??DemoProcessTest.java

[java]?view plaincopy
  1. package?main.java;??
  2. ??
  3. import?java.io.FileInputStream;??
  4. import?java.util.List;??
  5. import?org.activiti.engine.HistoryService;??
  6. import?org.activiti.engine.ProcessEngine;??
  7. import?org.activiti.engine.ProcessEngineConfiguration;??
  8. import?org.activiti.engine.RepositoryService;??
  9. import?org.activiti.engine.RuntimeService;??
  10. import?org.activiti.engine.TaskService;??
  11. import?org.activiti.engine.history.HistoricProcessInstance;??
  12. import?org.activiti.engine.runtime.ProcessInstance;??
  13. import?org.activiti.engine.task.Task;??
  14. ??
  15. /**?
  16. ?*?Activiti?5.10?demo?
  17. ?*?@author?BruceQin?
  18. ?*??
  19. ?*/??
  20. public?class?DemoProcessTest?{??
  21. ????//?diagrams實際路徑??
  22. ????private?static?String?realPath?=???
  23. ????????????"D:\\Java~coding~site\\J2EE-IDE\\Workspace\\workspace[indigo-jee]"?+??
  24. ????????????"\\activiti-demo\\src\\main\\resources\\diagrams";??
  25. ????public?static?void?main(String[]?args)?throws?Exception?{??
  26. ????????//?創建?Activiti流程引擎??
  27. ????????ProcessEngine?processEngine?=?ProcessEngineConfiguration??
  28. ????????????????.createProcessEngineConfigurationFromResource("activiti.cfg.xml")??
  29. ????????????????.buildProcessEngine();??
  30. ??????????
  31. ????????//?取得?Activiti?服務??
  32. ????????RepositoryService?repositoryService?=?processEngine.getRepositoryService();??
  33. ????????RuntimeService?runtimeService?=?processEngine.getRuntimeService();??
  34. ??
  35. ????????//?部署流程定義??
  36. ????????repositoryService??
  37. ????????????????.createDeployment()??
  38. ????????????????.addInputStream("DemoProcess.bpmn",new?FileInputStream(realPath?+?"\\DemoProcess.bpmn"))??
  39. ????????????????.addInputStream("DemoProcess.png",?new?FileInputStream(realPath?+?<a?href="file://\\DemoProcess.png">\\DemoProcess.png</a>))??
  40. ????????????????.deploy();??
  41. ??????????
  42. ????????//?啟動流程實例??
  43. ????????ProcessInstance?instance?=?processEngine??
  44. ?????????????????.getRuntimeService().startProcessInstanceByKey("DemoProcess");??
  45. ????????String?procId?=?instance.getId();??
  46. ????????System.out.println("procId:"+?procId);??
  47. ??????????
  48. ????????//?獲得第一個任務??
  49. ????????TaskService?taskService?=?processEngine.getTaskService();??
  50. ????????List<Task>?tasks?=?taskService.createTaskQuery().taskDefinitionKey("firstTask").list();??
  51. ????????for?(Task?task?:?tasks)?{??
  52. ????????????System.out.println("Following?task?is:?taskID?-"?+task.getId()+"?taskName?-"+?task.getName());??
  53. ????????????//?認領任務??
  54. ????????????taskService.claim(task.getId(),?"testUser");??
  55. ????????}??
  56. ???????????
  57. ????????//?查看testUser?現在是否能夠獲取到該任務??
  58. ????????tasks?=?taskService.createTaskQuery().taskAssignee("testUser").list();??
  59. ????????for?(Task?task?:?tasks)?{??
  60. ????????????System.out.println("Task?for?testUser:?"?+?task.getName());??
  61. ????????????//?完成任務??
  62. ????????????taskService.complete(task.getId());??
  63. ????????}??
  64. ????????System.out.println("Number?of?tasks?for?testUser:?"??
  65. ????????????????+?taskService.createTaskQuery().taskAssignee("testUser").count());??
  66. ??????????
  67. ??
  68. ????????//?獲取并認領第二個任務??
  69. ????????tasks?=?taskService.createTaskQuery().taskDefinitionKey("secondTask").list();??
  70. ????????for?(Task?task?:?tasks)?{??
  71. ????????????System.out.println("Following?task?is?:?taskID?-"?+task.getId()+"?taskName?-"+?task.getName());??
  72. ????????????taskService.claim(task.getId(),?"testUser");??
  73. ????????}??
  74. ??????????
  75. ????????//完成第二個任務結束結束流程??
  76. ????????for?(Task?task?:?tasks)?{??
  77. ????????????taskService.complete(task.getId());??
  78. ????????}??
  79. ??????????
  80. ????????//?核實流程是否結束??
  81. ????????HistoryService?historyService?=?processEngine.getHistoryService();??
  82. ????????HistoricProcessInstance?historicProcessInstance?=?historyService.createHistoricProcessInstanceQuery().processInstanceId(procId).singleResult();??
  83. ????????System.out.println("Process?instance?end?time:?"?+?historicProcessInstance.getEndTime());??
  84. ????}??
  85. }??


教程一完畢。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/388046.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/388046.shtml
英文地址,請注明出處:http://en.pswp.cn/news/388046.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

xargs命令詳解,xargs與管道的區別

在工作中經常會接觸到xargs命令&#xff0c;特別是在別人寫的腳本里面也經常會遇到&#xff0c;但是卻很容易與管道搞混淆&#xff0c;本篇會詳細講解到底什么是xargs命令&#xff0c;為什么要用xargs命令以及與管道的區別。為什么要用xargs呢&#xff0c;我們知道&#xff0c;…

pytorch回歸_PyTorch:用嶺回歸檢查泰坦尼克號下沉

pytorch回歸In this notebook, we shall use this dataset containing data about passengers from the Titanic. Based on this data, we will use a Ridge Regression model which just means a Logistic Regression model that uses L2 Regularization for predicting wheth…

Java后臺與VUE跨域交接

后臺代碼&#xff1a;package com.cn.Mr.Zhong.filter;import org.springframework.stereotype.Component;import javax.servlet.*;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;impor…

koa2 中使用 svg-captcha 生成驗證碼

1. 安裝svg-captcha $ npm install --save svg-captcha 2. 使用方法 生成有4個字符的圖片和字符串const svgCaptcha require(svg-captcha)const cap svgCaptcha.create({size: 4, // 驗證碼長度width:160,height:60,fontSize: 50,ignoreChars: 0oO1ilI, // 驗證碼字符中排除 …

Weblogic 節點啟動

1.啟動管理理節點export JAVA_OPTIONS"$JAVA_OPTIONS -Dcom.sun.xml.namespace.QName.useCompatibleSerialVersionUID1.0 -Djava.security.egdfile:/dev/./urandom"nohup ./startWebLogic.sh >admin.log &tail -f admin.log2.啟動節點ssonohup ./startManaged…

[Swift]LeetCode74. 搜索二維矩陣 | Search a 2D Matrix

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★?微信公眾號&#xff1a;山青詠芝&#xff08;shanqingyongzhi&#xff09;?博客園地址&#xff1a;山青詠芝&#xff08;https://www.cnblogs.com/strengthen/&#xff09;?GitHub地址&a…

iris數據集 測試集_IRIS數據集的探索性數據分析

iris數據集 測試集Let’s explore one of the simplest datasets, The IRIS Dataset which basically is a data about three species of a Flower type in form of its sepal length, sepal width, petal length, and petal width. The data set consists of 50 samples from …

Oracle 12c 安裝 Linuxx86_64

1)下載Oracle Database 12cRelease 1安裝介質 官方的下載地址&#xff1a; 1&#xff1a;http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html 2&#xff1a;https://edelivery.oracle.com/EPD/Download/get_form?egroup_aru_number16496…

Linux入門實驗

學習Linux要先做實驗來熟悉操作系統本次先寫點入門的操作。 關于Linux入門實驗的操作如下&#xff1a; 【例1】顯示當前使用的shell [rootcentos7 ~]# echo ${SHELL} /bin/bash 【例2】顯示當前系統使用的所有shell [rootcentos7 ~]#cat /etc/shells /bin/sh /bin/bash /usr/bi…

flink 檢查點_Flink檢查點和恢復

flink 檢查點Apache Flink is a popular real-time data processing framework. It’s gaining more and more popularity thanks to its low-latency processing at extremely high throughput in a fault-tolerant manner.Apache Flink是一種流行的實時數據處理框架。 它以容…

917. 僅僅反轉字母

給定一個字符串 S&#xff0c;返回 “反轉后的” 字符串&#xff0c;其中不是字母的字符都保留在原地&#xff0c;而所有字母的位置發生反轉。 示例 1&#xff1a; 輸入&#xff1a;"ab-cd" 輸出&#xff1a;"dc-ba"示例 2&#xff1a; 輸入&#xff1a;&q…

C# socket nat 映射 網絡 代理 轉發

using System;using System.Collections.Generic;using System.Net;using System.Net.Sockets;using System.Text;using System.Threading;namespace portmap_net{/// <summary>/// 映射器實例狀態/// </summary>sealed internal class state{#region Fields (5)pu…

python初學者_初學者使用Python的完整介紹

python初學者A magical art of teaching a computer to perform a task is called computer programming. Programming is one of the most valuable skills to have in this competitive world of computers. We, as modern humans, are living with lots of gadgets such as …

c# nat udp轉發

UdpClient myClient;Thread recvThread;//打開udp端口開始接收private void startRecv(int port){myClient new UdpClient(port);recvThread new Thread(new ThreadStart(receive));recvThread.Start();}//停止接收private void stopRecv(){recvThread.Abort();}private void…

【Code-Snippet】TextView

1. TextView文字過長&#xff0c;顯示省略號 【參考】 必須要同時設置XML和JAVA&#xff0c;而且&#xff0c;java中設置文字必須是在最后。 android:ellipsize"start|end|middle" //省略號的位置 android:singleLine"true" android:lines"2"…

Object 的靜態方法之 defineProperties 以及數據劫持效果

再提一下什么是靜態方法&#xff1a; 靜態方法&#xff1a;在類身上的方法&#xff0c;  動態方法:在實例身上的方法 Object.defineProperties(obj, props)obj&#xff1a;被添加屬性的對象props&#xff1a;添加或更新的屬性對象給對象定義屬性&#xff0c;如果存在該屬性&a…

Spring實現AOP的4種方式

Spring實現AOP的4種方式 先了解AOP的相關術語: 1.通知(Advice): 通知定義了切面是什么以及何時使用。描述了切面要完成的工作和何時需要執行這個工作。 2.連接點(Joinpoint): 程序能夠應用通知的一個“時機”&#xff0c;這些“時機”就是連接點&#xff0c;例如方法被調用時、…

如何使用Plotly在Python中為任何DataFrame繪制地圖的衛星視圖

Chart-Studio和Mapbox簡介 (Introduction to Chart-Studio and Mapbox) Folium and Geemap are arguably the best GIS libraries/tools to plot satellite-view maps or any other kinds out there, but at times they require an additional authorization to use the Google…

Java入門系列-26-JDBC

認識 JDBC JDBC (Java DataBase Connectivity) 是 Java 數據庫連接技術的簡稱&#xff0c;用于連接常用數據庫。 Sun 公司提供了 JDBC API &#xff0c;供程序員調用接口和類&#xff0c;集成在 java.sql 和 javax.sql 包中。 Sun 公司還提供了 DriverManager 類用來管理各種不…

3.19PMP試題每日一題

在房屋建造過程中&#xff0c;應該先完成衛生管道工程&#xff0c;才能進行電氣工程施工&#xff0c;這是一個&#xff1a;A、強制性依賴關系B、選擇性依賴關系C、外部依賴關系D、內部依賴關系 作者&#xff1a;Tracy19890201&#xff08;同微信號&#xff09;轉載于:https://…