engine

package
v1.6.5 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 4, 2026 License: Apache-2.0 Imports: 8 Imported by: 0

Documentation

Overview

Package engine 引擎接口 + 常量

Index

Constants

View Source
const (
	// OperatorAssignmentHandler 流程发起人
	HandlerOperatorAssignment = "com.mldong.jeeflow.interceptor.impl.OperatorAssignmentHandler"
	// FormFieldAssigneeHandler 按表单字段值分配参与者
	HandlerFormFieldAssignee = "com.mldong.jeeflow.interceptor.impl.FormFieldAssigneeHandler"

	// DeptLeaderAssignmentHandler 当前用户部门领导
	HandlerDeptLeader = orgHandlersPrefix + "DeptLeaderAssignmentHandler"
	// DeptMainLeaderAssignmentHandler 当前用户部门分管领导
	HandlerDeptMainLeader = orgHandlersPrefix + "DeptMainLeaderAssignmentHandler"
	// ApplicantDeptLeaderAssignmentHandler 发起人部门领导
	HandlerApplicantDeptLeader = orgHandlersPrefix + "ApplicantDeptLeaderAssignmentHandler"
	// ApplicantDeptMainLeaderAssignmentHandler 发起人部门分管领导
	HandlerApplicantDeptMainLeader = orgHandlersPrefix + "ApplicantDeptMainLeaderAssignmentHandler"
	// TaskRoleAssigneeHandler 任务节点唯一编码关联角色
	HandlerTaskRoleAssignee = orgHandlersPrefix + "TaskRoleAssigneeHandler"
)
View Source
const (
	KeySubmitType   = "submitType"
	KeyBusinessNo   = "BUSINESS_NO"
	KeyUserID       = "u_userId"
	KeyRealName     = "u_realName"
	KeyDeptID       = "u_deptId"
	KeyDeptName     = "u_deptName"
	KeyPostID       = "u_postId"
	KeyPostName     = "u_postName"
	KeyAutoGenTitle = "autoGenTitle"
	// v1.0.1:下一节点处理人(对齐 boot3 tf_nextNodeOperator)
	KeyNextNodeOperator = "tf_nextNodeOperator"
	// v1.6.0:流程启动时预指派人(对齐 boot3 f_nextNodeOperator)——startAndExecute 时转换为 tf_
	KeyProcessStartNextNodeOperator = "f_nextNodeOperator"
	// v1.0.1:系统代执行 / 超级管理员(对齐 boot3 FlowConst)
	KeyAutoExecute = "flow.auto"
	KeyAdminID     = "flow.admin"
)

Variables

This section is empty.

Functions

func RegisterBuiltinAssignments added in v1.6.0

func RegisterBuiltinAssignments(reg *HandlerRegistry, userProv spi.UserProvider, orgProv spi.OrgUserProvider)

RegisterBuiltinAssignments 注册内置通用参与者处理器到注册表。 组织维度 handler 依赖 userProv/orgProv;纯引擎语义 handler 无需数据源。

Types

type ApplicantDeptLeaderAssignmentHandler added in v1.6.0

type ApplicantDeptLeaderAssignmentHandler struct {
	// contains filtered or unexported fields
}

ApplicantDeptLeaderAssignmentHandler 发起人部门领导

func (*ApplicantDeptLeaderAssignmentHandler) Assign added in v1.6.0

type ApplicantDeptMainLeaderAssignmentHandler added in v1.6.0

type ApplicantDeptMainLeaderAssignmentHandler struct {
	// contains filtered or unexported fields
}

ApplicantDeptMainLeaderAssignmentHandler 发起人部门分管领导

func (*ApplicantDeptMainLeaderAssignmentHandler) Assign added in v1.6.0

type AssignmentHandler

type AssignmentHandler func(handlerName string, node *model.FlowNode, inst *model.ProcessInstance) []string

AssignmentHandler 动态参与者指派——对标 Java AssignmentHandler.assign handlerName: 节点配置的 assignmentHandler 类名(如 "com.xxx.MyHandler") 返回参与者 ID 列表(nil 表示不处理)

type DecisionHandler

type DecisionHandler func(handlerName string, node *model.FlowNode, inst *model.ProcessInstance, vars map[string]interface{}) string

DecisionHandler 自定义决策处理器——对标 Java DecisionHandler handlerName: 节点配置的 decisionHandler 类名 返回选中的分支边 ID(空字符串表示不处理)

type DeptLeaderAssignmentHandler added in v1.6.0

type DeptLeaderAssignmentHandler struct {
	// contains filtered or unexported fields
}

DeptLeaderAssignmentHandler 当前用户(任务操作人)部门领导

func (*DeptLeaderAssignmentHandler) Assign added in v1.6.0

func (h *DeptLeaderAssignmentHandler) Assign(node *model.FlowNode, inst *model.ProcessInstance, operator string) []string

type DeptMainLeaderAssignmentHandler added in v1.6.0

type DeptMainLeaderAssignmentHandler struct {
	// contains filtered or unexported fields
}

DeptMainLeaderAssignmentHandler 当前用户(任务操作人)部门分管领导

func (*DeptMainLeaderAssignmentHandler) Assign added in v1.6.0

func (h *DeptMainLeaderAssignmentHandler) Assign(node *model.FlowNode, inst *model.ProcessInstance, operator string) []string

type Engine

type Engine interface {
	StartProcessInstanceByID(ctx context.Context, defineID int64, operator string, args map[string]interface{}) (*model.ProcessInstance, error)
	ExecuteProcessTask(ctx context.Context, taskID int64, operator string, args map[string]interface{}) (*model.ProcessInstance, error)
	ExecuteAndJumpToEnd(ctx context.Context, taskID int64, operator string, args map[string]interface{}) (*model.ProcessInstance, error)
	ExecuteAndJumpTask(ctx context.Context, taskID int64, operator string, args map[string]interface{}, targetTaskName string) (*model.ProcessInstance, error)
	ExecuteAndJumpToFirstTaskNode(ctx context.Context, taskID int64, operator string, args map[string]interface{}) (*model.ProcessInstance, error)
}

type EngineImpl

type EngineImpl struct {
	// contains filtered or unexported fields
}

func New

func (*EngineImpl) EvalExpr added in v1.5.0

func (e *EngineImpl) EvalExpr(expr string, vars map[string]interface{}) (interface{}, error)

EvalExpr 表达式求值(v1.5.0,门面 highLight 决策分支过滤用)

func (*EngineImpl) ExecuteAndJumpTask

func (e *EngineImpl) ExecuteAndJumpTask(ctx context.Context, taskID int64, operator string, args map[string]interface{}, targetTaskName string) (*model.ProcessInstance, error)

func (*EngineImpl) ExecuteAndJumpToEnd

func (e *EngineImpl) ExecuteAndJumpToEnd(ctx context.Context, taskID int64, operator string, args map[string]interface{}) (*model.ProcessInstance, error)

func (*EngineImpl) ExecuteAndJumpToFirstTaskNode

func (e *EngineImpl) ExecuteAndJumpToFirstTaskNode(ctx context.Context, taskID int64, operator string, args map[string]interface{}) (*model.ProcessInstance, error)

func (*EngineImpl) ExecuteProcessTask

func (e *EngineImpl) ExecuteProcessTask(ctx context.Context, taskID int64, operator string, args map[string]interface{}) (*model.ProcessInstance, error)

func (*EngineImpl) SetExtensions

func (e *EngineImpl) SetExtensions(ext *Extensions)

func (*EngineImpl) SetRegistry

func (e *EngineImpl) SetRegistry(reg *HandlerRegistry)

func (*EngineImpl) StartProcessInstanceByID

func (e *EngineImpl) StartProcessInstanceByID(ctx context.Context, defineID int64, operator string, args map[string]interface{}) (*model.ProcessInstance, error)

type EventType

type EventType int
const (
	EventProcessStart  EventType = iota // 流程启动
	EventProcessFinish                  // 流程结束
	EventProcessReject                  // 流程拒绝
	EventTaskCreate                     // 任务创建
	EventTaskComplete                   // 任务完成
)

type Extensions

type Extensions struct {
	Interceptors      []FlowInterceptor
	AssignmentHandler AssignmentHandler
	DecisionHandler   DecisionHandler
	Listeners         []ProcessEventListener
}

Extensions 引擎扩展配置

type FlowInterceptor

type FlowInterceptor interface {
	// PreHandle 节点执行前调用,返回 false 则跳过该节点
	PreHandle(node *model.FlowNode, inst *model.ProcessInstance) (proceed bool)
	// PostHandle 节点执行后调用
	PostHandle(node *model.FlowNode, inst *model.ProcessInstance)
	// Order 拦截器排序,越小越先执行
	Order() int
}

FlowInterceptor 流程拦截器——对标 Java FlowInterceptor

type FormFieldAssigneeHandler added in v1.6.0

type FormFieldAssigneeHandler struct{}

FormFieldAssigneeHandler 按表单字段值分配参与者: 精确匹配 node.ID → vars 字段;node.ID 以 _数字 结尾时去后缀再匹配。 字段值支持逗号分隔字符串 / []string / []interface{}。

func (*FormFieldAssigneeHandler) Assign added in v1.6.0

func (h *FormFieldAssigneeHandler) Assign(node *model.FlowNode, inst *model.ProcessInstance, operator string) []string

type HandlerRegistry

type HandlerRegistry struct {
	// contains filtered or unexported fields
}

HandlerRegistry 处理器注册表——按名称注册/解析

func NewHandlerRegistry

func NewHandlerRegistry() *HandlerRegistry

func (*HandlerRegistry) RegisterAssignment

func (r *HandlerRegistry) RegisterAssignment(name string, h IAssignmentHandler)

RegisterAssignment 注册参与者指派处理器

func (*HandlerRegistry) RegisterDecision

func (r *HandlerRegistry) RegisterDecision(name string, h IDecisionHandler)

RegisterDecision 注册决策处理器

func (*HandlerRegistry) ResolveAssignment

func (r *HandlerRegistry) ResolveAssignment(name string) IAssignmentHandler

ResolveAssignment 按名称解析指派处理器

func (*HandlerRegistry) ResolveDecision

func (r *HandlerRegistry) ResolveDecision(name string) IDecisionHandler

ResolveDecision 按名称解析决策处理器

type IAssignmentHandler

type IAssignmentHandler interface {
	// Assign 返回参与者列表(operator: 当前任务操作人,issues/16 对齐 Java Execution.getOperator)
	Assign(node *model.FlowNode, inst *model.ProcessInstance, operator string) []string
}

IAssignmentHandler 参与者指派处理器接口

type IDecisionHandler

type IDecisionHandler interface {
	// Decide 返回选中的分支边 ID
	Decide(node *model.FlowNode, inst *model.ProcessInstance, vars map[string]interface{}) string
}

IDecisionHandler 决策处理器接口

type OperatorAssignmentHandler added in v1.6.0

type OperatorAssignmentHandler struct{}

OperatorAssignmentHandler 流程发起人(兜底 "apply.operator")

func (*OperatorAssignmentHandler) Assign added in v1.6.0

func (h *OperatorAssignmentHandler) Assign(node *model.FlowNode, inst *model.ProcessInstance, operator string) []string

type ProcessEvent

type ProcessEvent struct {
	Type       EventType
	InstanceID int64
	TaskID     int64
	NodeID     string
	Operator   string
}

ProcessEvent 流程事件

type ProcessEventListener

type ProcessEventListener func(event ProcessEvent)

ProcessEventListener 事件监听器

type TaskRoleAssigneeHandler added in v1.6.0

type TaskRoleAssigneeHandler struct {
	// contains filtered or unexported fields
}

TaskRoleAssigneeHandler 任务节点唯一编码关联角色(roleCode = 节点 ID)

func (*TaskRoleAssigneeHandler) Assign added in v1.6.0

func (h *TaskRoleAssigneeHandler) Assign(node *model.FlowNode, inst *model.ProcessInstance, operator string) []string

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL