Activiti學習——踩坑和經驗

1.activiti部署xml時發現process的id屬性實際部署到數據庫中對應process的key字段。數據庫

2.主流程中使用service task,調用JavaDelegate實現類拋出BPMN異常來調用子流程中的錯誤開始事件報錯。要求subprocess必須爲event subprocess。eclipse

解決:選中subprocess構件,勾選triggered by event異步

如圖ide

3.由於在actiBPM中沒有找到事務子流程、取消結束事件、補償事件等元素。所以從新下載了eclipse並安裝了activiti插件。由於部門使用idea開發環境,所以我使用eclipse畫完流程圖以後,嘗試把bpmn拷貝回idea運行。idea

使用idea打開bpmn文件,選擇圖上的取消結束事件,能夠觀察到actiBPM並不識別 EventType,從而顯示Error  getting value。而且以前一條鏈接補償邊界事件和補償 service task之間的虛線也消失了。插件

此時運行程序提示以下code

Compensation activity could not be found (or it is missing 'isForCompensation="true"'

即找不到對應的補償事件或者沒有在補償事件上設置isForconsation屬性,查看xml文件,屬性已經設置,找不到補償事件天然時虛線消失的問題,至於爲何消失還有待研究。//todoxml

4.在子流程設置了消息啓動時間,啓動不成功的問題,解決方案。blog

ProcessEngine engine= ProcessEngines.getDefaultProcessEngine();
        RuntimeService runtimeService=engine.getRuntimeService();
//不能使用以下命令啓動,由於如下命令是啓動一個新的流程實例 而非子流程
//      runtimeService.startProcessInstanceByMessage("myMsg");
//應該先獲取消息name設置爲myMsg的全部execution,在根據executionID來向他發送消息
        Execution execution=runtimeService.createExecutionQuery().messageEventSubscriptionName("myMsg").singleResult();
        System.out.println(execution.toString());
        runtimeService.messageEventReceived("myMsg",execution.getId());

5.service task啓動其餘事件後,主流程不能繼續往下跑。可是若是使用中間拋出事件,而且設置爲異步,那麼主流程能夠繼續往下跑。事件

6.actiBPM存在變動bpmn圖像後xml不跟隨改變,即變動bpmn圖像無效的狀況。

7.actiBPM打開流程圖,以前設置的屬性存在所有不現實(可是有效)的狀況。

7.actiBPM缺乏的補償邊界事件,可使用子流程中再包含一個子流程的方式來實現;

錯誤邊界事件和取消邊界事件能夠起到相似的功能。

相關文章
相關標籤/搜索