Go語言流程引擎go-activiti
項目傳送門go-activiti
參考Activiti實現,滿足部分功能。項目還在完善中,歡迎activiti愛好者加入。
節點事件回調
這裏分兩種情況,任務節點有沒有設置審批用戶和用戶組
情況一:沒有審批人
這種節點到達後,會嘗試回調業務,如果業務沒有任務處理,直接跳過此節點(會流歷史數據)
情況二:有審批人
這裏需在畫流程圖時設置監聽事件(TaskListeners)
這裏只需設置監聽事件的類型即可
註冊業務回調類
需實現IActiviti,註冊構造器,參考iActivitiDemo.go文件
注意這裏的註冊名稱爲流程名稱,區分大小寫。從ExecutionEntity可以拿到流程相關的數據。
func init() {
RegisterConstructor("userAuto", NewTestIActiviti)
}
func NewTestIActiviti(entity ExecutionEntity) IActiviti {
return &TestIActiviti{
Entity: entity,
}
}
func (test *TestIActiviti) User001() (code interface{
}, err error) {
variable := test.Entity.GetVariable()
fmt.Println(variable)
return common.ACTIVITI_HANDLER_CODE, nil
}
func (test *TestIActiviti) User002() (code interface{
}, err error) {
return common.ACTIVITI_HANDLER_CODE, nil
}
這裏的User001和User002對應節點名稱,區分大小寫,即設置了監聽事件,到節點時會執行這裏的方法。返回值是common.ACTIVITI_HANDLER_CODE,默認成功,否在拋出異常,流程會回滾。