flowable整合方案

一、官方文檔

英文版:https://flowable.com/open-source/docs
中文版:http://www.shareniu.com/flowable6.5_zh_document/bpm/index.html

二、概述

flowable基于bpmn2.0標(biāo)準(zhǔn)。BPMN(Business Process Model & Note)業(yè)務(wù)流程建模與標(biāo)注

BPMN基礎(chǔ)

1)流對(duì)象(Flow):
事件:圓圈表示,一個(gè)業(yè)務(wù)流程期間發(fā)生的東西,事件影響流程的流動(dòng)。
活動(dòng):圓角矩形表示,要處理的工作。
條件:菱形表示,控制序列流的分支與合并(網(wǎng)關(guān))
2)連接對(duì)象(Connection):用于將流對(duì)象連接起來。順序流、消息流和關(guān)聯(lián)。
3)泳道(Swimlane)
4)人工信息(Artifact):人員、組

flowable流程定義

流程定義文件示意.png

三、SpringBoot整合Flawable

參考
http://www.itdecent.cn/p/e8f4e9a7bd8a
https://blog.csdn.net/liuwenjun05101/article/details/103419364

1、依賴引入

<dependency>
            <groupId>org.flowable</groupId>
            <artifactId>flowable-spring-boot-starter</artifactId>
            <version>6.4.1</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.45</version>
        </dependency>

2、數(shù)據(jù)庫(kù)表說明

https://blog.csdn.net/huangjun0210/article/details/84951615
ACT_RE_
’RE’表示repository(存儲(chǔ))。RepositoryService接口操作的表。帶此前綴的表包含的是靜態(tài)信息,如,流程定義,流程的資源(圖片,規(guī)則等)。
ACT_RU_
’RU’表示runtime。這是運(yùn)行時(shí)的表存儲(chǔ)著流程變量,用戶任務(wù),變量,職責(zé)(job)等運(yùn)行時(shí)的數(shù)據(jù)。flowable只存儲(chǔ)實(shí)例執(zhí)行期間的運(yùn)行時(shí)數(shù)據(jù),當(dāng)流程實(shí)例結(jié)束時(shí),將刪除這些記錄。這就保證了這些運(yùn)行時(shí)的表小且快。
ACT_ID_
’ID’表示identity(組織機(jī)構(gòu))。這些表包含標(biāo)識(shí)的信息,如用戶,用戶組,等等。
ACT_HI_
’HI’表示history。就是這些表包含著歷史的相關(guān)數(shù)據(jù),如結(jié)束的流程實(shí)例,變量,任務(wù),等等。
ACT_GE_
普通數(shù)據(jù),各種情況都使用的數(shù)據(jù)。

3、創(chuàng)建流程

創(chuàng)建流程

@GetMapping("add")
    @ApiOperation(value = "創(chuàng)建流程")
    public String addExpense(@ApiParam(value = "流程Key", example = "holidayRequest") @RequestParam String processKey,
                             String userId, String days, String reason) {
        Map<String, Object> map = new HashMap<>();
        map.put("employee", userId);
        map.put("nrOfHolidays", days);
        map.put("description", reason);

        ProcessInstance processInstance = runtimeService.startProcessInstanceByKey(processKey, map);
        return "提交成功,流程ID為:" + processInstance.getId();
    }

其中的processKey為流程定義的流程標(biāo)識(shí)(ID),流程標(biāo)識(shí)(ID)從哪里來,流程定義的本質(zhì)是一個(gè)bpmn標(biāo)準(zhǔn)的xml文件,我們肯定不能手寫文件。

使用tyflow-ui-1.0.0創(chuàng)建流程定義

flowable提供了tyflow-ui-1.0.0包,下載后用tomcat部署起來,訪問ip:port可以進(jìn)入流程定義界面,進(jìn)行可視化流程定義。定義好的流程定義可以導(dǎo)出成bpmn文件,如果僅僅想用這個(gè)流程引擎不要界面的話,可以通過這種方式得到bmpn文件,放入項(xiàng)目目錄,可以供創(chuàng)建流程時(shí)引用。
若同時(shí)將tyflow-ui-1.0.0包的數(shù)據(jù)庫(kù)連接設(shè)置為和流程引擎相同的數(shù)據(jù)庫(kù),也可以直接使用數(shù)據(jù)庫(kù)的act_re_procdef表的定義。

四、常見問題

1、部署tyflow-ui-1.0.0后,原flowable服務(wù)啟動(dòng)不起來

通過tomcat部署tyflow-ui-1.0.0(從官網(wǎng)下載),數(shù)據(jù)庫(kù)鏈接配置為服務(wù)所在的數(shù)據(jù)庫(kù),可以進(jìn)行對(duì)流程定義信息進(jìn)行編輯。但要注意,tomcat啟動(dòng)時(shí),會(huì)自動(dòng)更新數(shù)據(jù)庫(kù)中act_ge_property、act_id_property兩個(gè)表的schema.version版本信息。如果org.flowable包的版本要和tyflow-ui-1.0.0的版本不一致,flowable就啟動(dòng)不了了,強(qiáng)行修改act_ge_property、act_id_property后,tyflow-ui-1.0.0又啟動(dòng)不了。所以兩者版本在開始就要保持一致。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容