強制結束令牌(token)引發的問題

2021-04-09 02:17:15 字數 926 閱讀 6618

在jbpm中可以在**裡面呼叫token.end()強制結束乙個令牌的執行。

例如在以下應用中:在fork(分支) 和join(聯合)中將產生兩個子令牌,而我們的需求是:當其中乙個執行路線到達join節點時即繼續父令牌的執行,而取消另外乙個子令牌的執行。這時就需要我們在join節點的node-enter事件處理action中呼叫token.end()方法強制結束另外乙個令牌。

雖然呼叫token.end()可以結束令牌的執行,但是該令牌上的任務例項卻依然存在,也就是說任務例項依然可以被所分配到的參與者看到並執行。

剛開始我想到呼叫taskinstance.end()方法來結束相關任務例項,但是這樣產生的問題是,它會呼叫該任務的執行,並觸發相關事件動作,並標識該任務已由參與者完成。而我們想要的是取消任務,即不允許該任務再執行相關事件動作,並標識該任務的參與者並沒有完成任務,這在某些業務上是需要的。

另外又發現任務例項上有乙個cancel()方法,結果通過原始碼可以看到,cancel方法會去呼叫end方法,所以也不可行。

如此以來,最後只有乙個方法可用,那就是呼叫taskinstance.setend(date)方法,這樣不會觸發相關事件動作,但是因為jbpm是依賴於結束時間來判斷任務的完成與否,所以依然標識了該任務已經被執行。另外在呼叫taskmgmtsession().findtaskinstances(actorid)時依然會返回該任務,因為這個方法所呼叫的hql中是根據任務例項的isopen屬性為true進行查詢的(可在hibernate.queries.hbm.xml檔案中找到),而taskinstance.setend(date)不會修改isopen屬性,所以在取任務時需要進行過濾。

也許是小弟愚昧,至今我還沒有找到乙個可以解決這個問題的方法,個人認為jbpm應該在任務例項中提供取消任務的介面方法(可修改cancel方法滿足此需求)和任務取消標誌,並且在呼叫token.end()時對該令牌上未完成任務自動呼叫取消方法。

token令牌常用的四種加密方式

1,base64 防君子不防小人 方法作用 引數返回值 b64encode 將輸入的引數轉化為base64規則的串 預加密的明文,型別為bytes 例 b guoxiaonao base64對應編碼的密文,型別為bytes 例 b z3vveglhb25hbw b64decode 將base64串 ...

is uploaded file函式引發的問題

起因 在利用moophp的乙個專案中,接到使用者反饋說其所有客戶不能上傳檔案,都返回失敗。經過排查發現是php中的is uploaded file函式在 搗鬼。細節分析 在正常情況下,通過php 上傳檔案 需要通過is uploaded file函式來判斷檔案是否是通過 http post 上傳的,...

記一次noprefixroute引發的問題

ip addr顯示內容 inet 中包含 noprefixroute,看著礙眼想去掉,不知道怎麼弄。最終找到了一台不顯示這項引數的機器,開啟其 etc sysconfig network scripts ifcfg ethx,多方比對發現配置了nm controlled no。該引數預設為yes,竟...