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,默认成功,否在抛出异常,流程会回滚。