Documentation
¶
Overview ¶
工作流引擎对外公共能力:宿主项目经此提交审批、查询单据关联实例状态。
工作流业务事件注册表,供引擎与业务单据模块解耦联动。
Index ¶
- Constants
- func SetDefaultEngine(engine Engine)
- func Submit(ctx context.Context, params SubmitParams) (int64, error)
- type ActionContext
- type ActionHandler
- type BindingVerifier
- type BusinessHook
- type Engine
- type EventRegistry
- func (r *EventRegistry) ExecuteAction(ctx context.Context, actionType string, input ActionContext) (err error)
- func (r *EventRegistry) Fire(ctx context.Context, tenantID, instanceID, businessID int64, ...)
- func (r *EventRegistry) HasBindingVerifier(businessType string) bool
- func (r *EventRegistry) Register(businessType string, hook BusinessHook)
- func (r *EventRegistry) RegisterAction(businessType, actionType string, handler ActionHandler)
- func (r *EventRegistry) RegisterBindingVerifier(businessType string, verifier BindingVerifier)
- func (r *EventRegistry) VerifyBinding(ctx context.Context, businessType string, ...) (confirmed bool, err error)
- type InstanceStatus
- type SubmitParams
Constants ¶
const ActionNotify = "workflow.notify"
ActionNotify 是通过现有站内信模块发送幂等通知的内置动作。
Variables ¶
This section is empty.
Functions ¶
func SetDefaultEngine ¶
func SetDefaultEngine(engine Engine)
SetDefaultEngine 注入默认引擎实现,由 Admin 模块装配时调用。
Types ¶
type ActionContext ¶
type ActionContext struct {
TenantID int64
InstanceID int64
BusinessID int64
BusinessType string
Status int32
IdempotencyKey string
Payload map[string]any
}
ActionContext 提供业务动作需要核验的租户、单据关联和稳定幂等键。
type ActionHandler ¶
type ActionHandler func(context.Context, ActionContext) error
ActionHandler 执行宿主显式注册的业务动作,必须按幂等键避免重复副作用。
type BindingVerifier ¶
type BindingVerifier func(ctx context.Context, tenantID, instanceID, businessID int64) (bool, error)
BindingVerifier 从宿主持久化存储核验单据已关联指定实例且允许开始审批。 仅查询状态,不改变单据;返回 false 时引擎等待后续重试。
type BusinessHook ¶
type BusinessHook func(ctx context.Context, tenantID, instanceID, businessID int64, status adminv1.WorkflowInstanceStatus)
BusinessHook 业务单据审批终结回调。status 为实例终态(已通过/已驳回/已撤回)。 回调实现须自行校验业务单据与实例的关联(business_id 对应单据的实例 ID 应等于 instanceID),防止伪造 business 字段触发他人单据副作用;失败在回调内自行记日志。
type Engine ¶
type Engine interface {
// Submit 创建实例并执行 OnCreated 关联回写,成功后推进并返回流程实例编号。
Submit(ctx context.Context, params SubmitParams) (int64, error)
// StatusByBusiness 查询业务单据最新关联实例的状态摘要。
StatusByBusiness(ctx context.Context, tenantID int64, businessType string, businessID int64) (InstanceStatus, error)
}
Engine 定义外部业务模块执行工作流的能力。
type EventRegistry ¶
type EventRegistry struct {
// contains filtered or unexported fields
}
EventRegistry 按业务单据类型注册的审批终结回调表。业务模块构造时注册,引擎终结时同步回调。
func DefaultEventRegistry ¶
func DefaultEventRegistry() *EventRegistry
DefaultEventRegistry 返回进程级共享的审批终结回调表。 宿主项目在自身模块初始化时通过它注册业务回调;Admin 引擎终结实例时经同一实例触发。
func (*EventRegistry) ExecuteAction ¶
func (r *EventRegistry) ExecuteAction(ctx context.Context, actionType string, input ActionContext) (err error)
ExecuteAction 执行白名单内的业务动作并将异常转换为可重试错误。
func (*EventRegistry) Fire ¶
func (r *EventRegistry) Fire(ctx context.Context, tenantID, instanceID, businessID int64, businessType string, status adminv1.WorkflowInstanceStatus)
Fire 触发业务单据的终结回调。businessType 为空或未注册时静默跳过; panic 由调用方(引擎侧)recover 隔离,不影响状态机结果。
func (*EventRegistry) HasBindingVerifier ¶
func (r *EventRegistry) HasBindingVerifier(businessType string) bool
HasBindingVerifier 检查业务类型是否具备持久化关联核验能力。
func (*EventRegistry) Register ¶
func (r *EventRegistry) Register(businessType string, hook BusinessHook)
Register 注册某业务类型的终结回调,同名类型重复注册以后者覆盖。
func (*EventRegistry) RegisterAction ¶
func (r *EventRegistry) RegisterAction(businessType, actionType string, handler ActionHandler)
RegisterAction 注册某业务类型允许调用的脚本动作,重复注册会替换处理器。
func (*EventRegistry) RegisterBindingVerifier ¶
func (r *EventRegistry) RegisterBindingVerifier(businessType string, verifier BindingVerifier)
RegisterBindingVerifier 注册业务单据关联核验器,用于恢复提交与首次推进之间的中断。
func (*EventRegistry) VerifyBinding ¶
func (r *EventRegistry) VerifyBinding(ctx context.Context, businessType string, tenantID, instanceID, businessID int64) (confirmed bool, err error)
VerifyBinding 核验单据关联,将宿主异常转换为可记录、可重试的错误。
type InstanceStatus ¶
type InstanceStatus struct {
// InstanceID 是流程实例编号。
InstanceID int64
// Status 是实例状态。
Status adminv1.WorkflowInstanceStatus
// EndAt 是终结时间展示文本,未终结为空串。
EndAt string
}
InstanceStatus 是业务单据关联流程实例的状态摘要。
func StatusByBusiness ¶
func StatusByBusiness(ctx context.Context, tenantID int64, businessType string, businessID int64) (InstanceStatus, error)
StatusByBusiness 经默认引擎查询业务单据关联实例状态。
type SubmitParams ¶
type SubmitParams struct {
// TenantID 是所属租户编号,0 表示取请求上下文登录租户。
TenantID int64
// ApplicantUserID 是申请人用户编号,0 表示取请求上下文登录用户。
ApplicantUserID int64
// Code 是流程编码。
Code string
// Version 是流程版本。
Version int32
// FormData 是申请表单数据 JSON 文本。
FormData string
// BusinessType 是业务单据类型编码,用于终结回调分发。
BusinessType string
// BusinessID 是业务单据编号。
BusinessID int64
// OnCreated 在实例创建提交后、首次推进前保存宿主单据与实例的关联。
// 使用回调前必须为业务类型注册 BindingVerifier,恢复任务以持久化关联判断是否允许推进。
// 宿主自行提交回写;返回错误时终结未推进实例且不触发业务回调。
OnCreated func(ctx context.Context, instanceID int64) error
}
SubmitParams 外部业务模块提交审批申请的参数。