由於公司需要在流程圖中明確的顯示不同部門的流程情況,而這些部門是並行的,最後要有系統自動判斷這些節點的審核結果給出乙個最終的結果,來確定流程的走向,如果是單個審核節點的話可以使用多例項(設定多例項結束條件即可),但是通常業務中包含著不止乙個節點,這種情況我們可以使用子流程解決,也可以使用下邊我要介紹的方案,這個方案我只畫了每個並行節點的乙個審核,但是實際通常會有多個,我只做例子講解,就不畫多個了。
在系統判斷這個節點的時候我們就要是使用任務***:tasklistener
/**
* @projectname: spark-platform
* @package: com.spark.platform.flowable.biz.listener
* @classname: tasklistener
* @author: wangdingfeng
* @description: 任務***
* @date: 2020/4/8 14:22
* @version: 1.0
*/@slf4j
@component
public class mytasklistener implements tasklistener
}}
tasklistener 雖然是可以做監聽,但是由於此時任務資料還沒有在資料庫中落地,所以無法獲取到當前節點的taskid,不能自動推動流程的走向,所以我加了乙個執行緒用來刷此個節點的taskid,**如下
/**
* @projectname: spark-platform
* @package: com.spark.platform.flowable.biz.listener
* @classname: runnabletask
* @author: wangdingfeng
* @description: 執行緒
* @date: 2020/4/14 11:07
* @version: 1.0
*/@slf4j
public class messagerunnabletask implements runnable
@override
public void run()
/*** 遞迴查詢 直到查詢到task任務已經落地為止,然後發布訊息
** @param delegatetask
* @return
*/private task gettask(delegatetask delegatetask)
log.info("代辦任務資料庫已經落地----");
return task;
}}
由於通常我們的業務**不會在工作流這個服務中判斷,通常由業務發起伺服器判斷,所以我使用了訊息訂閱。此示例**用的是redis訊息發布訂閱,實際開發中不要使用redis,由於redis的訊息佇列一旦消費者不存在,就會出現訊息丟失的情況,請使用rabbitmq這些訊息佇列。
redis 訂閱處理訊息
@component
@slf4j
public class redischannellistener implements messagelistener 發來的訊息:{}", address, address);
switch (address)
} catch (exception e)
}/**
* 文章訊息處理
** @param content
*/public void articlemessage(string content) }}
acttaskservice acttaskservice = springcontextholder.getbean(acttaskservice.class);
if (flag)
acttaskservice.complete(taskvo.getid(), map);
}}
spark: flowable 動態多例項
多例項動態測試 啟動流程 param users 使用者組 param processname 流程key return 流程id responsebody public string start process group requestparam value users required fal...
flowable 任務節點多例項使用
我們在使用flowable 工作流引擎的時候,最常用的肯定是任務節點,因為在oa系統 審批系統 辦公自動化系統中核心的處理就是流程的運轉,在流程運轉的時候,可能我們有這樣的乙個需求,在乙個任務節點的時候,我們需要多個人對這個節點進行審批,比如實際中這樣乙個例子,假如是乙個部門的投票,這個部門有5個人...
mysql多例項命令 mysql多例項安裝
1 編輯my.cnf檔案增加相關引數如下 mysqld multi user root pass 123 mysqld usr local mysql bin mysqld safe mysqladmin usr local mysql bin mysqladmin log usr local my...