1. 版本
報表服務器版本 | JAR包 | 流程插件版本 | JDK |
---|---|---|---|
10.0 | 2018-12-27及以上 | V1.0.8 | 1.8 |
2. 描述
流程引擎插件适用於偶發的,由具體人員主動發起的任務流程,支持靈活審批和動态流轉,可以支撐一般的辦公場景。
流程圖繪制:拖拽控件可視化編輯,BPMN2.0 規範
流程執行:發起流程、從模板發起、定時發起
流程監控:獨立的待辦、已辦頁面、審批前撤回
分支結構支三種網關:互斥、并行、包容
條件流轉:可靈活調整流程方向
會簽轉辦:可自由設置節點處理人
而上報适用於由管理員(領導層)發起的,低級别人員填寫,逐級審批,規則,周期固定的任務流程。
3. 插件安裝
3.1 獲取插件
插件無法在設計器内,以及設計器附帶啓動的工程中安裝使用,需要獨立部署,推薦使用 Tomcat 容器。
Tomcat 服務器部署好後,以管理員身份登錄決策平台,在 管理系統>插件管理 下搜索「流程引擎」安裝;或者前往 帆軟市場 下載「流程引擎」進行插件包本地安裝,安裝過程詳細點擊 服務器插件管理。流程引擎插件将會從合作夥伴的服務器上下載程序文件,解壓并釋放到 FineReport 中對應的目錄,請保持外網訪問。
注:若在本地設計器内直接安裝流程引擎插件,将會出現如下所示的報錯:
3.2 初始配置
3.2.1 配置引擎外部數據庫
1)成功安裝流程引擎插件後刷新決策系統,會發現 管理系統>系統管理 下多了一個 流程引擎 頁面,具體情況如下圖所示:
如果「下載服務」下的按鈕灰化并顯示「文件下載中」的話,請等待插件更新數據。
2)流程引擎需要依賴外部數據庫使用。插件下載完成後,請根據實際情況配置外部數據庫連接和賬戶密碼。
點擊保存按鈕。
若想确保數據庫配置信息的正确性,建議先把相同的配置信息在 FineReport 設計器裏連接一下,确認可連接成功後再點擊保存按鈕,在彈出的對話框中點擊确定。
注1:搭配外置數據庫:目前支持Mysql、SQL Server、Oracle。
注2:如果後期數據庫遷移需要調整數據連接,也可以在此處修改,重啓後即可生效(無需再進行下一步)。
3)保存數據庫配置成功後,系統會彈出頂部提示,先不要重啓容器,點擊「安裝服務」下的安裝服務按鈕,在彈出的對話框中點擊确認。
等待安裝完成頂部出現類似提示信息後,手動重啓容器,啓動完成後以管理員身份登錄決策系統,此時在管理系統>系統管理>流程引擎 頁面可發現,安裝服務下的按鈕已變爲「服務已安裝」,且爲灰色禁用狀态。
注:初次安裝重啓後自動創建相關表結構。
此時查看剛剛配置的數據庫,發現在手動重啓容器的過程中,原本爲空的數據庫中出現了流程引擎插件自動創建的數據表。
3.2.2 挂載引擎頁面
點擊管理系統>目錄管理,新建一個目錄,選中該目錄,在該目錄中點擊添加鏈接會彈出對話框,在鏈接路徑中輸入以下表格中所提供的鏈接,即在 「webroot」 (替換爲實際的工程名)後加上對應的路徑,下面的列表展示了插件提供的所有鏈接及對應的頁面說明。
創建流程圖的鏈接爲:http://localhost:8080/webroot/processDiagram/create
流程引擎插件共提供六個鏈接,其中每個鏈接的「鏈接路徑」格式爲:http://localhost:8080/webroot/具體鏈接結尾
注:「8080」爲實際端口号,「webroot」爲 Tomcat獨立部署 時實際工程名。
下表爲PC端流程引擎插件所提供的所有鏈接結尾:
名稱 | 鏈接(結尾請注意大小寫和擴展名) | 說明 |
---|---|---|
創建流程圖 | /processDiagram/create | 管理員端:流程圖繪制器頁面,可以制作新的流程模型 |
部署列表 | /static/jsp/adminjsp/proDeployInfo.jsp | 管理員端:對流程模型進行相關操作,比如部署/删除等 |
所有流程列表 | /static/jsp/adminjsp/control.jsp | 管理員端:對正在執行或已經結束的流程進行管理,包括詳情查看和删除 |
新建流程 | /static/jsp/frontEnd/startProcess.jsp | 用戶端:展示所有可以發起的流程,點擊連接立即發起 |
待辦 | /static/jsp/frontEnd/daibanTask.jsp | 用戶端:所有尚未結束的流程中停留在該用戶節點的列表 |
已辦 | /static/jsp/frontEnd/selHisProcess.jsp | 用戶端:該用戶發起的所有當前節點不是本人的流程 |
下表爲移動端流程引擎插件所提供的所有鏈接結尾(支持配置到 FineMobile、企業微信、釘釘):
名稱 | 鏈接(結尾請注意大小寫和擴展名) | 說明 |
---|---|---|
新建流程 | /static/jsp/mobile/workflowListMobile.jsp | 用戶端:展示所有可以發起的流程,點擊連接立即發起 |
待辦 | /static/jsp/mobile/daibanListMobile.jsp | 用戶端:所有尚未結束的流程中停留在該用戶節點的列表 |
已辦 | /static/jsp/mobile/yibanListMobile.jsp | 用戶端:該用戶發起的所有當前節點不是本人的流程 |
注1:本插件需要依賴報表決策平台,暫時不能獨立連接使用或直接嵌入其他系統。
注2:請用管理員身份登錄 Tomcat 部署成功的決策平台,将這六個鏈接添加到目錄下使用。
3.3 插件更新
每當合作夥伴更新功能時,流程引擎插件将會提升一次版本号,這樣用戶将會收到更新提示。升級流程引擎插件将會從合作夥伴的服務器下載最新的程序文件,請保持外網訪問。用戶需要進入“流程引擎”界面,等待下載完成後點擊第三項的“安裝服務”按鈕,等待重啓提示出現後重啓容器即可,插件将會自動覆蓋相應的文件以實現更新。
3.4 删除插件
删除流程引擎插件将會自動清除流程程序文件,請在删除插件後重啓容器。請注意您的流程數據庫不會被清除。
4. 創建第一個流程
4.1 流程繪制界面介紹
1) 布局和按鈕
工具欄:提供了保存撤銷,剪切複制等基本功能,并支持對齊放大等美觀功能。
節點區:提供了事件,任務,網關等流程元素。
畫布區:将節點拖拽到畫布,再加上連接線構成最終的流程圖。
屬性欄:點擊畫布中的具體節點或連接線,此處會出現對應的屬性配置項。
2)節點說明
插件當前版本支持三種類型的節點:事件,任務,網關。
事件:用來表明流程的生命周期中發生了什麽事。在 BPMN2 規範中,事件總是畫成一個圓圈。
Gateway:是 BPMN2 規範中的流程定義元素,中文可稱爲「網關」,「決策」,「判斷」。網關用來控制流程的執行流向,當在拆分路徑時産生令牌,在合并路徑時消費令牌。
任務:是業務流程定義的核心元素,中文可稱爲「活動」,「節點」,「步驟」。一個活動可以是流程中一個基本處理單元。
4.2 簡單的一級和多級審批
4.2.1 開始節點
流程總是需要一個開始節點,在簡單的一級和多級審批中,采用「開始事件」作爲開始節點。将節點區中的「開始事件」拖拽到畫布區中,如下圖所示:
觀察下方的屬性欄,「名稱」一欄可以爲當前節點添加備注,點擊「請填寫」,将自動展開一個文本框,支持鍵入中文,文本框中輸入的内容會展現在畫布區該節點的周圍,如下圖所示:
絕大部分節點元素和連接線都支持添加名稱,名稱顯示的位置略有不同,如下圖所示:
節點名稱會出現在「任務列表」中标明流程當前的狀态,如果沒有配置名稱,就會出現如下圖所示的提醒:
4.2.2 用戶任務
用戶任務是最爲常用的流程節點,用來表示業務流程中由人參與完成的工作。當引擎處理到該節點時,給指定的用戶(參與者)或者一組用戶(如部門、角色)創建待處理的任務項,等待用戶的處理。在當前的流程繪制器中,除了手動拖拽用戶任務節點到畫布之外,還有一種方式創建用戶任務。
首先選中之前創建的開始節點,然後在其附近出現的快捷工具箱中點擊用戶任務的小 ICON,如下圖所示,即可生成用戶任務并自動與開始節點相連接。
如果采用直接拖拽的形式添加了用戶任務,還需要爲兩個節點之間添加連接線:按住下圖所示的連接線标志,拖拽到用戶任務節點上,直到節點周圍出現綠色标記松開鼠标,即可創建連接線。
在複雜的流程結構中,經常會出現需要手工操作連接線的情況。鼠标移動到連接線上,連接線兩端會出現可以操作的綠色原點,按住綠點不放拖拽到其他節點可以讓連接線連接的對象改變。
用戶任務的屬性部分比較複雜,這裏只介紹基礎的審批過程中會用到的一些。
首先是「分配用戶」,分配用戶指的是該用戶任務節點需要誰來完成,點擊「添加辦理人」後的請選擇辦理人會彈出一個分配用戶的對話框。
在辦理人中可以添加用戶名以指定流轉到對應的用戶(比如 Lily)。
注:開始節點後緊跟的第一個用戶任務節點, 是發起人節點,必須要填寫一個公式,該公式要求指定一個變量名來保存發起人用戶名信息,公式語法:${變量名稱} 例如 ${people},如下圖所示:
這個變量可以利用到後面的流程中,比如再新建一個用戶任務節點,給新節點分配用戶的時候,依然填寫 ${people},這樣就建立了一個自己審核自己的流程。
當然通常情況下,需要設置一個不一樣的人員來審核發起人提交的信息。除了直接填寫一個 Lily,還可以在下面的用戶樹當中選擇。
如果流程中需要多個節點,添加多個用戶任務并指定相應的審核人員即可。在這裏我們用兩個審核節點做爲示範。
其次是「表單編号屬性」,表單編号實際上就是每個節點所要挂載的 cpt 路徑,點擊後面的請填寫會彈出對話框,打開一個文件樹,用戶選擇對應的模板即可。
不同的節點支持挂載不同的模板,比如某些情況下,填報人和審批人需要看到不同的模板,或者需要多個填報人填報不同模板的數據。
注流程引擎提供了一個參數幫助用戶主動管理填報上來的數據,即 「requestid」。每當流程執行的時候,都會生成一個唯一的 「requestid」。可以在數據連接中使用這種方式來過濾每條流程所能看到的數據。(具體使用方法詳見流程插件示例)
例如: select * from qingjia where id ='${requestid}'
注:插件目前只支持挂載 cpt 模板,使用老填報預覽,不能使用表單。必須設置模板填報屬性,支持數據校驗。
4.2.3 退回
既然有審核操作,則會産生「通過」和「退回」兩種選項。「通過」則進行正常流轉無需其他操作,本插件在用戶任務中自帶支持退回的功能,不需要畫額外的連接線。
點擊「審核節點2」,在屬性欄中找到「是否能退回」,勾選即可。
這樣任務在執行過程中就會出現「退回按鈕」,插件支持越級回退,點擊的彈出框中可以指定要退回到哪個節點并且可以添加退回備注。
4.2.4 按鈕名稱
請注意上一節截圖中的按鈕,提交,保存和駁回,有些時候不能恰當的表述個性化流程中的實際操作,比如「提交」實際上應該是「審核」。
此時就可以在用戶任務屬性欄中找到「提交按鈕名稱」和「退回按鈕名稱」這兩項,點擊後面的「請填寫」會出現類似「名稱」的文本框,鍵入即可替換默認的按鈕文字,支持中文。

4.2.5 結束節點
流程有始有終,在兩個審核節點之後,如果沒有回退,任務就應該結束了,此時如圖點擊工具箱中的結束事件 ICON 即可自動生成結束事件并與該節點相連接。
當然也可以手動拖拽結束事件到畫布中來,并自行添加連接線。如下圖所示就是一個完整的二級審批流程。
4.3 節點自動流轉
1) 一般自動流轉
該屬性只适應於「添加辦理人」欄位中的單任務辦理人,「搶占式」與「會簽」不适用走到該節點系統會自動辦理,但不會觸發模板提交事件。
找到用戶任務屬性欄中的「是否自動流轉」勾選即可生效。
2)二次默認通過
通常和退回搭配使用,比如兩級審核,第一級已經通過,第二級駁回了申請,跨級回退到了申請人。申請人修改申請後,使用二次默認通過功能,任務就會自動跳過第一級審核人,提高了效率。
在用戶任務屬性欄中找到「第一次通過,下次默認通過」勾選即可生效。
4.4 指定處理人的流程
比如在一個通用的功能疊代任務流程中,任務流轉到研發小組長,需要小組長來手動分配具體的研發來開發這個功能,這個人是無法在流程中事先指定的,具有比較高的靈活性。插件支持這種場景。首先我們在研發小組長的節點屬性欄中找到「下個任務節點辦理人」,在後面的文本框中輸入某個單元格值,比如 B8,引擎執行到這裏的時候将會解析此節點對應挂載 cpt 模板的 B8 單元格,将 B8 單元格的值保存到引擎中。在設計實踐中,通常 B8 單元格會是一個下拉菜單控件,裏面包含了研發組員列表。
在後續的研發組員的節點屬性欄中找到「添加辦理人」,在辦理人欄中填入 ${B8} 即可。(類似於開始節點中${people}的變量引用)
4.5 候選、會簽與轉辦
4.5.1 候選(搶占式辦理)
在「添加辦理人」的時候,我們會發現對話框中還提供了輸入「候選人」的地方,這裏可以指定多個辦理人,每個辦理人都可以收到任務,但是只要其中一個完成審批,那麽其他人就看不見任務了,相當於組任務。比如财務部門的發票報銷審核處理等。這個不同於會簽。請注意使用候選功能處理搶占式場景時,保持「辦理人」一欄爲空。

4.5.2 會簽(多用戶同時辦理)
有時候一個節點需要多個用戶同時确認才能往下流轉,會簽就提供了這樣的功能。首先在節點屬性欄中找到「節點類型」一項。引擎提供了兩種模式,「parallel」模式表示所有的會簽人都能同時收到待辦,「sequenial」表示會簽人會接連收到待辦。
然後,在節點屬性欄中找到「添加會簽人」屬性,點擊後面的請填寫會彈出添加會簽人對話框,在這裏可以勾選多個會簽用戶。
4.5.3 加簽——增加會簽參與人
在特定流程中的某些審批項可能不僅是辦理人可以獨立處理的,比如預算審批不僅需要主管領導還需要财務部門負責人,需要靈活指定加簽人。
在确認正确選擇「節點類型」一項之後,找到「是否加簽」一項并勾選。
此時,該節點的流程詳情頁右下角會增加一個加簽的按鈕,點擊之後會彈出人員選擇框,可以添加新的會簽人。
4.5.4 轉辦——移交處理人
有這樣的場景:部長有事,某個審批任務可以暫時交由副部長處理。這時候就需要轉辦功能。在節點屬性欄中找到「是否允許轉辦」屬性,勾選即可。流程執行過程中會出現轉辦按鈕,點擊會彈出用戶列表,選擇一個用戶即可将任務移交給對方。
4.6 三種網關類型(動态流轉)
4.6.1 互斥網關
互斥網關定義了一組分支的唯一決策,所有流出的分支被按順序評估,第一個條件被評估爲 True (當多個條件爲true時,第一個決策被執行)的分支被執行,并且不再繼續評估下面的分支。如果所有分支條件決策都爲 False 且該網關定義了一個默認的連線,那麽該默認分支将被執行。如果沒有可到達的分支,抛出異常,該網關所處的分支被中斷,在流程建模設計上應避免這種情況發生。互斥網關有分支和合并兩種行爲,允許一進一出。
下圖給出一個排他網關的示例。網關 A 評估後繼三個分支,如果變量 Var1 等於 1 執行 Service1 路徑,如果變量 Var1 等於 2 執行 Service3 路徑,如果都不通過執行 Service2 路徑;如果 Service1 或 Service2 被執行,網關 B 做路徑合并,後繼 Service4 路徑被執行,流程結束;如果Service3 被執行,流程結束。
可以通過拖拽或者點擊工具箱 ICON 來創建互斥網關。
選擇一條連接線,在下面的屬性欄中找到「條件」,即可爲該連接線添加判斷條件,條件應該是一個輸出值爲布爾值的帆軟公式,例如 B8>7 ,引擎将會基於網關前的用戶任務挂載的 cpt 模板計算該公式的結果。例如一個請假流程中,如果填報的時長超過一周,就需要人事經理來審批而不僅僅是部門領導。
注1:條件并不是寫在網關,而是寫在連接線上。
注2:「默認流」功能暫時無效,請勿勾選。
4.6.2 并行網關
并行網關用於無條件的拆分或合并分支,該類網關對連線條件是忽略的。并行網關有分支和合并兩種行爲,允許多進多出。
下圖給出一個并行網關的示例。網關 A 拆分了三個分支,Service1 和 Service2 執行完畢後被網關 B 合并繼續執行 Service4;網關 C 等待Service4 和 Service3 執行完畢後,流程結束。
注:引擎執行并行分支時,同一時刻只執行一個路徑直至該路徑被中斷或結束,然後再依次執行完剩餘的路徑,而不是在同一時刻同時執行 Service1,Service2 和 Service3 路徑。
4.6.3 包容性網關
包容網關是排他網關和并行網關的綜合體。當進行決策判斷時,與排他網關所不同的是,所有條件爲 True 的後繼分支都會被依次執行,如果所有分支條件決策都爲 False 且該網關定義了一個默認的連線,那麽該默認分支将被執行。如果沒有可到達的分支,抛出異常,該網關所處的分支被中斷,在流程設計上應避免這種情況發生。包容網關有分支和合并兩種行爲,允許多進多出。
下圖給出一個包容網關的示例。網關 A 評估後繼三個分支,如果變量 str1 等於 a 執行 Service1 路徑,如果變量 str2 等於 b 執行 Service2 路徑,如果變量 str3 等於 c 執行 Service3 路徑;網關 B 做路徑合并,流程結束。
4.6.4 最佳實踐——巧用 FR 公式靈活流轉
還可以利用 FR 公式中豐富的擴展函數來實現更加靈活的流轉。
公式 | 場景 |
AND(B1>2,C15=10000) 以及類似的邏輯類函數 | 合并多個條件等 |
搭配互斥網關的随機函數 RANDBETWEEN(-1,1)=1 | 随機流轉 |
2008-08-08>TODAY() 等日期時間類函數 | 在某個特定時間流轉到特定人 |
SQL('dev','select * from ww',1,1)=1 等數據庫類函數 | 訪問異構系統數據信息輔助流轉 |
$fine_username='admin' | 支持使用參數 |
4.7 兩種定時事件
待補充
4.8 服務任務和郵件任務
待補充
5. 部署流程模型
5.1 流程分類管理
進入「部署列表」頁面,通過設置多個分類方便用戶快速找到對應的流程。點擊新增按鈕可以增加一個分類,在分類名稱列中輸入類名并點擊保存。
5.2 部署流程模型
流程圖繪制完畢後點擊左上角的保存按鈕,在彈出的對話框中輸入模型的名稱,并選擇之前在「流程分類管理」裏設置好的分類點擊保存并退出按鈕。
進入「模型列表」頁面,找到剛剛保存的流程模型,點擊部署按鈕,部署成功按鈕會變成「已部署」,用戶就可以在「新建流程」頁面找到剛剛繪制的流程。
還可以爲流程模型設置訪問權限,即只有選定的人才能發起對應的流程,進入到「部署列表」頁面,點擊對應模型的設置權限按鈕。在彈出的對話框中勾選相應的對象給予流程發起權限,支持選擇「部門-崗位-人員」或者「角色-人員」,點擊确定即可生效。
爲了方便權限的複用和管理,插件提供流程權限導入導出的功能,點擊保存權限超鏈可以将當前的權限用一個别稱保存下來。
其他流程導入權限時可以快速應用。
6. 流程執行與監控
6.1 發起流程
用戶進入「新建流程」頁面将會看到所有已經部署好的流程,根據流程圖保存時選擇的分類分開排布。
點擊一個流程名稱即可發起該流程。進入流程詳情頁面。
注:如果該流程不被部署,任務是不會真正創建的。
還可以在其他普通的模板中發起一個流程,只需要寫簡單的 JS 把下面的字符串拼接成 URL 并在新 Tab 頁打開即可,注意需要在平台内打開。
JS 寫法格式如下:
processInfo/authority?depid=depid&proname=encodeURI(name)&processDefinitionID=processDefinitionID&userName=userName
完整的 JS 實例如下:
window.parent.FS.tabPane.addItem({
title: "技術問題反饋",
src: "http://localhost:8080/webroot/processInfo/authority?depid=5006&proname=encodeURI(流程圖)&processDefinitionID=process:1:5009&userName=admin"
})
JS 發起流程有三個關於流程的參數,參數值可以在流程表 act_re_procdef 裏查詢到,參數說明如下表所示:
公式 | 場景 |
---|---|
depid | 需要流程部署id |
name | 流程名稱 |
processDefinitionID | 流程定義id |
6.2 待辦和已辦
6.2.1 待辦系統消息提醒
當某個流程流轉到當前用戶節點時,會在右下角彈出提醒,提示用戶處理特定流程的待辦事務,點擊處理超鏈接則可以主動跳轉到對應的流程詳情頁面。
如果當前用戶不在線,則在用戶下一次登錄時彈出提示框。
同其他系統消息類似,還可以在右上角登錄用戶旁邊的鈴铛看到消息提醒,點擊可以進入對應的流程詳情頁面。
或者查看全部消息可以在系統消息列表中,看到所有類似的消息提醒。同樣,點擊後面的「處理」超鏈接可以直接進入對應的流程詳情頁面。
6.2.2 待辦頁面
「待辦頁面」顯示所有尚未結束的流程中停留在該用戶節點的列表。包括「待辦任務列表」和「待辦保存列表」。
點擊操作列中的辦理可以跳轉到對應的任務。
流轉回發起人的待辦可由發起人自行删除。
6.2.3 已申請和已辦理
「已申請」頁面顯示該用戶發起的所有流程,可以執行詳情或撤回操作。
「已辦理」頁面顯示當前用戶參與過的流程,可以執行詳情操作。
「詳情」操作将會打開一個類似的流程詳情頁面,顯示流程内容,流程圖和審批意見,但是用戶将沒有對應的操作權限。
6.3 撤回和保存
用戶新建流程之後,需要修改,可以在下個環節處理前點擊「已辦」頁面對應流程的撤回按鈕。
該操作将會把這個任務恢複到流程發起之初,用戶可以在「待辦」列表中找到該任務,并重新辦理。
原本已辦頁面中的操作項将會變成「詳情」和「删除」,删除操作将會直接關閉這個任務。
此外,某些流程處理環節可能比較複雜,無法一次性完成,所以流程引擎提供了保存的功能來存儲當前的工作狀态(填報暫存)。點擊流程節點任務頁面右下角的保存按鈕,保存後的流程可以在待辦保存列表中找到。
6.4 審批意見
流程詳情頁的下方可以提交意見,并添加有關附件,所有環節的意見都會按照順序顯示在下面的批注信息中。
可以在繪制流程圖的時候,指定是否需要某個用戶任務節點強制填寫意見。如果勾選了該項,用戶未填意見時系統會彈框提示,流程無法流轉。
6.5 流程圖
進入流程詳情頁面,點擊流程圖,可以看到該流程對應的流程圖,并可以直觀的看到流程的進展情況。
6.6 管理員管控流程執行
進入「所有流程列表」頁面,可以看到所有進行中或者已經完成的流程,管理員可以随時删除終止正在運行的流程,或者點擊詳情鏈接查看所有流程的具體進展。
7. 注意事項
7.1 注意事項一
描述:流程引擎都安裝後,添加了創建流程圖頁面 processDiagram/create出現空白,如下圖所示:
原因:用戶部署之後改了工程名,把 webroot 改成了其他名字。
解決方案:請在 webroot\editor-app 下找到 app-cfg.js 文件,如圖所示編輯箭頭指向的文字,把 webroot 改爲正确的工程名。然後清除浏覽器緩存,刷新頁面就可以了。
到這裏流程插件的說明已講解完畢,具體示例請點擊流程插件示例