activiti構造屬於自己的流程定義

2021-09-19 22:23:22 字數 2271 閱讀 2635

說起actviti,很多人都會說它支援bpmn標準,它的流轉都是基於bpmn檔案來執行!

但我們在設計流程時,流程定義真的只能是bpmn定義嗎?  

其實不然,activti可以支援任意流程定義,只要你發布流程時,將你的流程定義轉成bpmn檔案即可!   

分析如下:

表act_re_model是activiti用於儲存流程模板的表,其中欄位editor_source_value_id_,editor_source_extra_value_id_是用於提供給使用者儲存自己的私有定義.

editor_source_value_id一般存自己的定義,editor_source_extra_value_id_存流程定義的,如activti-explorer就是這麼儲存,真正使用可以只用其中乙個

表act_ge_bytearray是activti用於儲存流程定義,其中name值為source就是對應act_re_model表中editor_source_value_id定義儲存,值為source-extra為自己的editor_source_extra_value_id_定義儲存

現在**如下

儲存自己的私有流程定義

public class c***rocessdefintioncreatecommand implements command   

//儲存流程定義

commandcontext.getmodelentitymanager().inserteditorsourceformodel(modelid, flowcontent.getbytes("utf-8"));

//return modelid;

} catch (exception e)

}public c***rocessdefintioncreatecommand(string modelid, string modelname,string flowcontent )

2.獲取自己的私有流程定義

/**

* 增加自定義流程定義

* * @param modelid

* @return

*/public string getprocessdefiniton(string modelid) throws exception

儲存並部署自己的流程定義

public class c***rocessdefintiondeploycommand implements command else 

if (model == null) else

commandcontext.getdbsqlsession().flush();

commandcontext.getmodelentitymanager().inserteditorsourceformodel(modelid, flowcontent.getbytes("utf-8"));

commandcontext.getdbsqlsession().flush();

//名稱一定要是bpmn20.xml,否則發布不會成功

string bpmnname = modelkey + ".bpmn20.xml";

deployment deployment = repositoryservice.createdeployment().name(bpmnname)

.addbpmnmodel(bpmnname, bpmnmodel).deploy();

//發布完成後,更新表act_re_model的deployment_id_欄位,activti好像不會自動更新該欄位,不知道是不是bug

model.setdeploymentid(deployment.getid());

commandcontext.getmodelentitymanager().updatemodel((modelentity) model);

return deployment.getid();

} catch (exception e)

}public c***rocessdefintiondeploycommand(string modelid, string flowcontent, string modelkey,

final repositoryservice repositoryservice)

}

上述**中,new mxbpmnxmlconverter().converttobpmnmodel(flowcontent);需要自己構造轉換bpmn物件的方法.

至此,activti構造屬於自己流程定義已成功!

構造屬於自己的記憶體DC類

由於vc6沒有封裝記憶體dc,要想寫出漂亮的介面就會比較困難,也會導致螢幕的閃爍,封裝好這個類以後再去開發軟體就會簡單很多,今天我們就來構造乙個屬於我們自己的記憶體dc。載入點陣圖的方式有很多種,首先寫乙個從資源中載入點陣圖的函式。bool loadbitmap uint nbitmapid,cdc...

選擇屬於自己的ERP

太平洋三威公司 pacific sunwear 通過建立乙個特別的erp系統,成長為擁有1000家連鎖分店的零售商。早在1994年,擁有90家分店的加利福尼亞太平洋三威公司 以下簡稱太平洋三威 在美國西海岸就已頗具影響。隨後該公司進行了大規模的拓展,現在該公司計畫在未來3年裡再增加300家分店,到2...

寫屬於自己的部落格

以前一直想寫部落格,只是因為覺得太浪費時間,所以一直擱置,大學畢業一月半以後,我覺得應該寫寫部落格,一來可以整理一下大學四年來的學習經歷,二來也可以記錄以後的工作經歷。本人上學路程比較坎坷,以至於畢業以後年齡相對來說比較年長一些,所以我決定放棄考研,在以後的工作中鍛鍊自己,是金子在 都會發光。我經常...