開源ERP技術整合系列--第17篇git
用日誌記錄「開源軟件」的誕生github
【點亮星標】----祈盼着一個鼓勵spring
博主開源地址:數據庫
最經常使用的工做流引擎Activiti和JBPM,我當初是如何選擇的呢?要考慮學習成本、現有功能、兼容性、版本穩定性、可擴展性等等。less
(1)Activiti的創始人Tom Baeyens是JBPM以前版本的核心人物,從這個層面出發Activiti工做流引擎的是站在巨人的肩膀上打造的,確定會積累不少以前的經驗,並解決不少以前遇到的問題。ide
(2)Activiti使用了咱們更經常使用的技術,例如IOC、AOP、MyBatis、WebService、Restful,核心引擎則是基於以前版本的PVM,接口設計優雅;而JBPM徹底捨棄了以前的引擎,基於JBoss的Drools Flow實現,接口層面的設計十分混亂。spring-boot
(3)Activiti作了更多的擴展功能,好比相對完整的表單設計,流程的熱部署、更加豐富的IDE插件。學習
下面來講說Activiti框架的核心功能
一、7個接口:工做流引擎能夠想象成一個服務端,部署好之後,是須要客戶端的調用才能實現對工做流程的操做。
二、28張表:表記錄了用戶信息、流程信息、歷史信息等各類數據
資源庫流程規則表 act_re_deployment 部署信息表 act_re_model 流程設計模型部署表 act_re_procdef 流程定義數據表 運行時數據庫表 act_ru_execution 運行時流程執行實例表 act_ru_identitylink 運行時流程人員表,主要存儲任務節點與參與者的相關信息 act_ru_task 運行時任務節點表 act_ru_variable 運行時流程變量數據表 歷史數據庫表 act_hi_actinst 歷史節點表 act_hi_attachment 歷史附件表 act_ih_comment 歷史意見表 act_hi_identitylink 歷史流程人員表 act_hi_detail 歷史詳情表,提供歷史變量的查詢 act_hi_procinst 歷史流程實例表 act_hi_taskinst 歷史任務實例表 act_hi_varinst 歷史變量表 組織機構表 act_id_group 用戶組信息表 act_id_info 用戶擴展信息表 act_id_membership 用戶與用戶組對應信息表 act_id_user 用戶信息表 通用數據表 act_ge_bytearray 二進制數據表 act_ge_property 屬性數據表存儲整個流程引擎級別的數據
三、BPMN業務流程模型:能夠經過流程圖的方式配置業務流程、分支、條件等,最終生成引擎可識別的xml文件
BPMN2.0是一套創建工做流程模型的標準。下面說幾個重點的元素和符號。
(1)事件:經常使用的是開始事件、結束事件,用於標識流程的開始和結束
(2)活動:經常使用的是任務,用於描述流程節點中的一項工做
(3)網關:經常使用包括並行網關、排他網關,並行即同時流轉多個分支,排他即只流轉其中一個分支
(1)修改POM添加依賴
<dependency> <groupId>org.activiti</groupId> <artifactId>activiti-spring-boot-starter-basic</artifactId> <version>6.0.0</version> </dependency>
(2)將BPMN2.0規範的XML文件拷貝到項目目錄下:/resources/processes
(3)構建表結構,修改springBoot主配置文件application.properties
spring.activiti.database-schema-update=true
設置成true之後,會在項目啓動的時候自動建立Activiti表結構,首次數據表建好後建議改爲false
(4)Activiti相關配置,修改springBoot主配置文件application.properties
#保存歷史數據得級別,分爲none、activity、audit(默認)、full spring.activiti.history-level=full #是否校驗流程文件,默認校驗resources下的processes文件夾裏的流程文件 spring.activiti.check-process-definitions=false #修改默認的流程文件存儲位置 spring.activiti.process-definition-location-prefix=classpath:/processes/
(5)經過註解方式訪問經常使用接口
@Autowired private RuntimeService runtimeService; @Autowired private TaskService taskService; @Autowired private IdentityService identityService; @Autowired private RepositoryService repositoryService; @Autowired private ProcessEngine processEngine; @Autowired private HistoryService historyService;
若是您對咱們正在作的開源軟件感興趣,歡迎各類形式的合做,做爲貢獻者或直接加入咱們!讓咱們一塊兒打造一套開源的企業級信息化解決方案。
【碼雲】或【GitHub】搜索「赤龍ERP」點擊星標,亦可加入咱們! 讓咱們從小開始作點偉大的事!與開發者交流 kzca2000