resource

package
v0.32.2 Latest Latest
Warning

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

Go to latest
Published: Jun 30, 2026 License: Apache-2.0 Imports: 21 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var Module = fx.Module(
	"vef:approval:resource",

	fx.Provide(
		fx.Annotate(NewFlowResource, fx.ResultTags(`group:"vef:api:resources"`)),
		fx.Annotate(NewInstanceResource, fx.ResultTags(`group:"vef:api:resources"`)),
		fx.Annotate(NewCategoryResource, fx.ResultTags(`group:"vef:api:resources"`)),
		fx.Annotate(NewDelegationResource, fx.ResultTags(`group:"vef:api:resources"`)),
		fx.Annotate(NewMyResource, fx.ResultTags(`group:"vef:api:resources"`)),
		fx.Annotate(NewAdminResource, fx.ResultTags(`group:"vef:api:resources"`)),
	),
)

Module provides all approval API resources.

Functions

func NewAdminResource

func NewAdminResource(
	bus cqrs.Bus,
	departmentResolver approval.PrincipalDepartmentResolver,
	tenantResolver approval.PrincipalTenantResolver,
) api.Resource

NewAdminResource creates a new admin resource.

func NewCategoryResource

func NewCategoryResource(tenantResolver approval.PrincipalTenantResolver) api.Resource

NewCategoryResource creates a new category resource with standard CRUD operations.

func NewDelegationResource

func NewDelegationResource() api.Resource

NewDelegationResource creates a new delegation resource with standard CRUD operations.

func NewFlowResource

func NewFlowResource(bus cqrs.Bus, tenantResolver approval.PrincipalTenantResolver) api.Resource

NewFlowResource creates a new flow resource.

func NewInstanceResource

func NewInstanceResource(
	bus cqrs.Bus,
	departmentResolver approval.PrincipalDepartmentResolver,
	tenantResolver approval.PrincipalTenantResolver,
) api.Resource

NewInstanceResource creates a new instance resource.

func NewMyResource

func NewMyResource(bus cqrs.Bus, departmentResolver approval.PrincipalDepartmentResolver) api.Resource

NewMyResource creates a new self-service resource.

Types

type AddAssigneeParams

type AddAssigneeParams struct {
	api.P

	TaskID  string   `json:"taskId" validate:"required"`
	UserIDs []string `json:"userIds" validate:"required,min=1,max=50"`
	AddType string   `json:"addType" validate:"required,oneof=before after parallel"`
}

AddAssigneeParams contains the parameters for adding assignees.

type AddCCParams

type AddCCParams struct {
	api.P

	InstanceID string   `json:"instanceId" validate:"required"`
	CCUserIDs  []string `json:"ccUserIds" validate:"required,min=1,max=50"`
}

AddCCParams contains the parameters for adding CC records.

type AdminFindActionLogsParams

type AdminFindActionLogsParams struct {
	api.P

	InstanceID string  `json:"instanceId" validate:"required"`
	TenantID   *string `json:"tenantId"`
	Page       int     `json:"page"`
	PageSize   int     `json:"pageSize"`
}

AdminFindActionLogsParams contains the parameters for querying admin action logs.

type AdminFindInstancesParams

type AdminFindInstancesParams struct {
	api.P

	TenantID    *string                  `json:"tenantId"`
	ApplicantID *string                  `json:"applicantId"`
	Status      *approval.InstanceStatus `json:"status"`
	FlowID      *string                  `json:"flowId"`
	Keyword     *string                  `json:"keyword"`
	Page        int                      `json:"page"`
	PageSize    int                      `json:"pageSize"`
}

AdminFindInstancesParams contains the query parameters for admin instance listing.

type AdminFindTasksParams

type AdminFindTasksParams struct {
	api.P

	TenantID   *string              `json:"tenantId"`
	AssigneeID *string              `json:"assigneeId"`
	InstanceID *string              `json:"instanceId"`
	Status     *approval.TaskStatus `json:"status"`
	Page       int                  `json:"page"`
	PageSize   int                  `json:"pageSize"`
}

AdminFindTasksParams contains the query parameters for admin task listing.

type AdminGetInstanceDetailParams

type AdminGetInstanceDetailParams struct {
	api.P

	InstanceID string `json:"instanceId" validate:"required"`
}

AdminGetInstanceDetailParams contains the parameters for getting admin instance detail.

type AdminGetMetricsParams added in v0.24.0

type AdminGetMetricsParams struct {
	api.P

	TenantID *string `json:"tenantId"`
}

AdminGetMetricsParams contains the parameters for the metrics dashboard query.

type AdminReassignTaskParams

type AdminReassignTaskParams struct {
	api.P

	TaskID        string `json:"taskId" validate:"required"`
	NewAssigneeID string `json:"newAssigneeId" validate:"required"`
	Reason        string `json:"reason" validate:"max=2000"`
}

AdminReassignTaskParams contains the parameters for reassigning a task.

type AdminResource

type AdminResource struct {
	api.Resource
	// contains filtered or unexported fields
}

AdminResource exposes admin-level approval management endpoints.

func (*AdminResource) FindActionLogs

func (r *AdminResource) FindActionLogs(ctx fiber.Ctx, principal *security.Principal, params AdminFindActionLogsParams) error

FindActionLogs queries action logs for an instance with pagination.

func (*AdminResource) FindInstances

func (r *AdminResource) FindInstances(ctx fiber.Ctx, principal *security.Principal, params AdminFindInstancesParams) error

FindInstances queries instances for admin management.

func (*AdminResource) FindTasks

func (r *AdminResource) FindTasks(ctx fiber.Ctx, principal *security.Principal, params AdminFindTasksParams) error

FindTasks queries tasks for admin management.

func (*AdminResource) GetInstanceDetail

func (r *AdminResource) GetInstanceDetail(ctx fiber.Ctx, principal *security.Principal, params AdminGetInstanceDetailParams) error

GetInstanceDetail returns the full admin detail of an instance.

func (*AdminResource) GetMetrics added in v0.24.0

func (r *AdminResource) GetMetrics(ctx fiber.Ctx, principal *security.Principal, params AdminGetMetricsParams) error

GetMetrics returns aggregated approval engine metrics for the admin dashboard.

func (*AdminResource) ReassignTask

func (r *AdminResource) ReassignTask(ctx fiber.Ctx, principal *security.Principal, params AdminReassignTaskParams) error

ReassignTask reassigns a pending task to a different user.

func (*AdminResource) TerminateInstance

func (r *AdminResource) TerminateInstance(ctx fiber.Ctx, principal *security.Principal, params AdminTerminateInstanceParams) error

TerminateInstance terminates a running approval instance.

type AdminTerminateInstanceParams

type AdminTerminateInstanceParams struct {
	api.P

	InstanceID string `json:"instanceId" validate:"required"`
	Reason     string `json:"reason" validate:"max=2000"`
}

AdminTerminateInstanceParams contains the parameters for terminating an instance.

type CategoryParams

type CategoryParams struct {
	api.P

	ID        string  `json:"id"`
	TenantID  string  `json:"tenantId" validate:"required"`
	Code      string  `json:"code" validate:"required"`
	Name      string  `json:"name" validate:"required"`
	Icon      *string `json:"icon"`
	ParentID  *string `json:"parentId"`
	SortOrder int     `json:"sortOrder"`
	IsActive  bool    `json:"isActive"`
	Remark    *string `json:"remark"`
}

CategoryParams contains the create/update parameters for flow category.

type CategorySearch

type CategorySearch struct {
	crud.Sortable

	Name     string `json:"name" search:"contains"`
	IsActive *bool  `json:"isActive" search:"eq,column=is_active"`
}

CategorySearch contains the search parameters for flow category.

type CreateFlowParams

type CreateFlowParams struct {
	api.P

	TenantID               string                  `json:"tenantId" validate:"required"`
	Code                   string                  `json:"code" validate:"required"`
	Name                   string                  `json:"name" validate:"required"`
	CategoryID             string                  `json:"categoryId" validate:"required"`
	Icon                   *string                 `json:"icon"`
	Description            *string                 `json:"description"`
	BindingMode            approval.BindingMode    `json:"bindingMode" validate:"required"`
	BusinessTable          *string                 `json:"businessTable"`
	BusinessPkField        *string                 `json:"businessPkField"`
	BusinessStatusField    *string                 `json:"businessStatusField"`
	AdminUserIDs           []string                `json:"adminUserIds"`
	IsAllInitiationAllowed bool                    `json:"isAllInitiationAllowed"`
	InstanceTitleTemplate  string                  `json:"instanceTitleTemplate"`
	Initiators             []CreateInitiatorParams `json:"initiators"`
}

CreateFlowParams contains the parameters for creating a flow.

type CreateInitiatorParams

type CreateInitiatorParams struct {
	Kind approval.InitiatorKind `json:"kind" validate:"required"`
	IDs  []string               `json:"ids" validate:"required"`
}

CreateInitiatorParams contains the parameters for a flow initiator.

type DelegationParams

type DelegationParams struct {
	api.P

	ID             string     `json:"id"`
	DelegatorID    string     `json:"delegatorId" validate:"required"`
	DelegateeID    string     `json:"delegateeId" validate:"required"`
	FlowCategoryID *string    `json:"flowCategoryId"`
	FlowID         *string    `json:"flowId"`
	StartTime      *time.Time `json:"startTime"`
	EndTime        *time.Time `json:"endTime"`
	IsActive       bool       `json:"isActive"`
	Reason         *string    `json:"reason"`
}

DelegationParams contains the create/update parameters for delegation.

type DelegationResource

DelegationResource handles delegation CRUD using standard apis generics.

type DelegationSearch

type DelegationSearch struct {
	crud.Sortable

	DelegatorID string `json:"delegatorId" search:"eq,column=delegator_id"`
	DelegateeID string `json:"delegateeId" search:"eq,column=delegatee_id"`
	IsActive    *bool  `json:"isActive" search:"eq,column=is_active"`
}

DelegationSearch contains the search parameters for delegation.

type DeployFlowParams

type DeployFlowParams struct {
	api.P

	FlowID         string                   `json:"flowId" validate:"required"`
	Description    *string                  `json:"description"`
	StorageMode    approval.StorageMode     `json:"storageMode"`
	FlowDefinition approval.FlowDefinition  `json:"flowDefinition" validate:"required"`
	FormDefinition *approval.FormDefinition `json:"formDefinition"`
}

DeployFlowParams contains the parameters for deploying a flow definition.

type FindAvailableFlowsParams

type FindAvailableFlowsParams struct {
	api.P

	TenantID *string `json:"tenantId"`
	Keyword  *string `json:"keyword"`
	Page     int     `json:"page"`
	PageSize int     `json:"pageSize"`
}

FindAvailableFlowsParams contains the parameters for querying available flows.

type FindCCRecordsParams

type FindCCRecordsParams struct {
	api.P

	TenantID *string `json:"tenantId"`
	IsRead   *bool   `json:"isRead"`
	Page     int     `json:"page"`
	PageSize int     `json:"pageSize"`
}

FindCCRecordsParams contains the parameters for querying CC records.

type FindCompletedTasksParams

type FindCompletedTasksParams struct {
	api.P

	TenantID *string `json:"tenantId"`
	Page     int     `json:"page"`
	PageSize int     `json:"pageSize"`
}

FindCompletedTasksParams contains the parameters for querying completed tasks.

type FindFlowsParams

type FindFlowsParams struct {
	api.P

	TenantID   *string `json:"tenantId"`
	CategoryID *string `json:"categoryId"`
	Keyword    *string `json:"keyword"`
	IsActive   *bool   `json:"isActive"`
	Page       int     `json:"page"`
	PageSize   int     `json:"pageSize"`
}

FindFlowsParams contains the parameters for finding flows.

type FindInitiatedParams

type FindInitiatedParams struct {
	api.P

	TenantID *string                  `json:"tenantId"`
	Status   *approval.InstanceStatus `json:"status"`
	Keyword  *string                  `json:"keyword"`
	Page     int                      `json:"page"`
	PageSize int                      `json:"pageSize"`
}

FindInitiatedParams contains the parameters for querying initiated instances.

type FindInitiatorsParams added in v0.32.0

type FindInitiatorsParams struct {
	api.P

	FlowID   string  `json:"flowId" validate:"required"`
	TenantID *string `json:"tenantId"`
}

FindInitiatorsParams contains the parameters for finding flow initiators.

type FindPendingTasksParams

type FindPendingTasksParams struct {
	api.P

	TenantID *string `json:"tenantId"`
	Page     int     `json:"page"`
	PageSize int     `json:"pageSize"`
}

FindPendingTasksParams contains the parameters for querying pending tasks.

type FindVersionsParams

type FindVersionsParams struct {
	api.P

	FlowID   string  `json:"flowId" validate:"required"`
	TenantID *string `json:"tenantId"`
}

FindVersionsParams contains the parameters for finding flow versions.

type FlowResource

type FlowResource struct {
	api.Resource
	// contains filtered or unexported fields
}

FlowResource handles flow definition management.

func (*FlowResource) Create

func (r *FlowResource) Create(ctx fiber.Ctx, principal *security.Principal, params CreateFlowParams) error

Create creates a new flow.

func (*FlowResource) Deploy

func (r *FlowResource) Deploy(ctx fiber.Ctx, principal *security.Principal, params DeployFlowParams) error

Deploy deploys a flow definition.

func (*FlowResource) FindFlows

func (r *FlowResource) FindFlows(ctx fiber.Ctx, principal *security.Principal, params FindFlowsParams) error

FindFlows queries flows for admin management.

func (*FlowResource) FindInitiators added in v0.32.0

func (r *FlowResource) FindInitiators(ctx fiber.Ctx, principal *security.Principal, params FindInitiatorsParams) error

FindInitiators queries the initiator configurations of a specific flow.

func (*FlowResource) FindVersions

func (r *FlowResource) FindVersions(ctx fiber.Ctx, principal *security.Principal, params FindVersionsParams) error

FindVersions queries flow versions for a specific flow.

func (*FlowResource) GetGraph

func (r *FlowResource) GetGraph(ctx fiber.Ctx, principal *security.Principal, params GetGraphParams) error

GetGraph returns the flow graph for the published version.

func (*FlowResource) PublishVersion

func (r *FlowResource) PublishVersion(ctx fiber.Ctx, principal *security.Principal, params PublishVersionParams) error

PublishVersion publishes a flow version.

func (*FlowResource) ToggleActive

func (r *FlowResource) ToggleActive(ctx fiber.Ctx, principal *security.Principal, params ToggleActiveParams) error

ToggleActive toggles the active status of a flow.

func (*FlowResource) UpdateFlow

func (r *FlowResource) UpdateFlow(ctx fiber.Ctx, principal *security.Principal, params UpdateFlowParams) error

UpdateFlow updates an existing flow.

type GetGraphParams

type GetGraphParams struct {
	api.P

	FlowID string `json:"flowId" validate:"required"`
	// TenantID is an optional pre-filter (matching the *string shape of the
	// other flow params); the actual cross-tenant gate is Caller.Allows in the
	// query handler, so this only narrows the lookup.
	TenantID *string `json:"tenantId"`
}

GetGraphParams contains the parameters for getting a flow graph.

type GetInstanceDetailParams

type GetInstanceDetailParams struct {
	api.P

	InstanceID string `json:"instanceId" validate:"required"`
}

GetInstanceDetailParams contains the parameters for getting instance detail.

type GetPendingCountsParams added in v0.28.0

type GetPendingCountsParams struct {
	api.P

	TenantID *string `json:"tenantId"`
}

GetPendingCountsParams contains the parameters for querying pending counts.

type InstanceResource

type InstanceResource struct {
	api.Resource
	// contains filtered or unexported fields
}

InstanceResource handles instance lifecycle and queries.

func (*InstanceResource) AddAssignee

func (r *InstanceResource) AddAssignee(ctx fiber.Ctx, principal *security.Principal, params AddAssigneeParams) error

AddAssignee dynamically adds assignees to a task.

func (*InstanceResource) AddCC

func (r *InstanceResource) AddCC(ctx fiber.Ctx, principal *security.Principal, params AddCCParams) error

AddCC adds CC records for an instance.

func (*InstanceResource) MarkCCRead

func (r *InstanceResource) MarkCCRead(ctx fiber.Ctx, principal *security.Principal, params MarkCCReadParams) error

MarkCCRead marks CC records as read for the user.

func (*InstanceResource) ProcessTask

func (r *InstanceResource) ProcessTask(ctx fiber.Ctx, principal *security.Principal, params ProcessTaskParams) error

ProcessTask handles task actions (approve/reject/transfer/rollback/handle).

func (*InstanceResource) RemoveAssignee

func (r *InstanceResource) RemoveAssignee(ctx fiber.Ctx, principal *security.Principal, params RemoveAssigneeParams) error

RemoveAssignee removes an assignee by canceling their task.

func (*InstanceResource) Resubmit

func (r *InstanceResource) Resubmit(ctx fiber.Ctx, principal *security.Principal, params ResubmitParams) error

Resubmit resubmits a returned instance.

func (*InstanceResource) Start

func (r *InstanceResource) Start(ctx fiber.Ctx, principal *security.Principal, params StartInstanceParams) error

Start creates a new flow instance.

func (*InstanceResource) UrgeTask

func (r *InstanceResource) UrgeTask(ctx fiber.Ctx, principal *security.Principal, params UrgeTaskParams) error

UrgeTask sends an urge notification for a pending task.

func (*InstanceResource) Withdraw

func (r *InstanceResource) Withdraw(ctx fiber.Ctx, principal *security.Principal, params WithdrawParams) error

Withdraw withdraws an instance.

type MarkCCReadParams

type MarkCCReadParams struct {
	api.P

	InstanceID string `json:"instanceId" validate:"required"`
}

MarkCCReadParams contains the parameters for marking CC records as read.

type MyResource

type MyResource struct {
	api.Resource
	// contains filtered or unexported fields
}

MyResource exposes self-service approval queries for the current user.

func (*MyResource) FindAvailableFlows

func (r *MyResource) FindAvailableFlows(ctx fiber.Ctx, principal *security.Principal, params FindAvailableFlowsParams) error

FindAvailableFlows queries flows the current user is allowed to initiate.

func (*MyResource) FindCCRecords

func (r *MyResource) FindCCRecords(ctx fiber.Ctx, principal *security.Principal, params FindCCRecordsParams) error

FindCCRecords queries CC records addressed to the current user.

func (*MyResource) FindCompletedTasks

func (r *MyResource) FindCompletedTasks(ctx fiber.Ctx, principal *security.Principal, params FindCompletedTasksParams) error

FindCompletedTasks queries tasks already processed by the current user.

func (*MyResource) FindInitiated

func (r *MyResource) FindInitiated(ctx fiber.Ctx, principal *security.Principal, params FindInitiatedParams) error

FindInitiated queries instances initiated by the current user.

func (*MyResource) FindPendingTasks

func (r *MyResource) FindPendingTasks(ctx fiber.Ctx, principal *security.Principal, params FindPendingTasksParams) error

FindPendingTasks queries pending tasks assigned to the current user.

func (*MyResource) GetInstanceDetail

func (r *MyResource) GetInstanceDetail(ctx fiber.Ctx, principal *security.Principal, params GetInstanceDetailParams) error

GetInstanceDetail retrieves instance detail with access control for the current user.

func (*MyResource) GetPendingCounts

func (r *MyResource) GetPendingCounts(ctx fiber.Ctx, principal *security.Principal, params GetPendingCountsParams) error

GetPendingCounts retrieves pending task and unread CC counts for the current user.

type ProcessTaskParams

type ProcessTaskParams struct {
	api.P

	TaskID       string         `json:"taskId" validate:"required"`
	Action       string         `json:"action" validate:"required,oneof=approve reject transfer rollback handle"`
	Opinion      string         `json:"opinion" validate:"max=2000"`
	FormData     map[string]any `json:"formData"`
	TransferToID string         `json:"transferToId"`
	TargetNodeID string         `json:"targetNodeId"`
}

ProcessTaskParams contains the parameters for processing a task.

type PublishVersionParams

type PublishVersionParams struct {
	api.P

	VersionID string `json:"versionId" validate:"required"`
}

PublishVersionParams contains the parameters for publishing a version.

type RemoveAssigneeParams

type RemoveAssigneeParams struct {
	api.P

	TaskID string `json:"taskId" validate:"required"`
}

RemoveAssigneeParams contains the parameters for removing an assignee.

type ResubmitParams

type ResubmitParams struct {
	api.P

	InstanceID string         `json:"instanceId" validate:"required"`
	FormData   map[string]any `json:"formData"`
}

ResubmitParams contains the parameters for resubmitting a returned instance.

type StartInstanceParams

type StartInstanceParams struct {
	api.P

	TenantID         string         `json:"tenantId" validate:"required"`
	FlowCode         string         `json:"flowCode" validate:"required"`
	BusinessRecordID *string        `json:"businessRecordId"`
	FormData         map[string]any `json:"formData"`
}

StartInstanceParams contains the parameters for starting a new instance.

type ToggleActiveParams

type ToggleActiveParams struct {
	api.P

	FlowID   string `json:"flowId" validate:"required"`
	IsActive bool   `json:"isActive"`
}

ToggleActiveParams contains the parameters for toggling flow active status.

type UpdateFlowParams

type UpdateFlowParams struct {
	api.P

	FlowID                 string                  `json:"flowId" validate:"required"`
	Name                   string                  `json:"name" validate:"required"`
	Icon                   *string                 `json:"icon"`
	Description            *string                 `json:"description"`
	BindingMode            approval.BindingMode    `json:"bindingMode" validate:"required"`
	BusinessTable          *string                 `json:"businessTable"`
	BusinessPkField        *string                 `json:"businessPkField"`
	BusinessStatusField    *string                 `json:"businessStatusField"`
	AdminUserIDs           []string                `json:"adminUserIds"`
	IsAllInitiationAllowed bool                    `json:"isAllInitiationAllowed"`
	InstanceTitleTemplate  string                  `json:"instanceTitleTemplate" validate:"required"`
	Initiators             []CreateInitiatorParams `json:"initiators"`
}

UpdateFlowParams contains the parameters for updating a flow.

type UrgeTaskParams

type UrgeTaskParams struct {
	api.P

	TaskID  string `json:"taskId" validate:"required"`
	Message string `json:"message" validate:"max=500"`
}

UrgeTaskParams contains the parameters for urging a task.

type WithdrawParams

type WithdrawParams struct {
	api.P

	InstanceID string `json:"instanceId" validate:"required"`
	Reason     string `json:"reason" validate:"max=2000"`
}

WithdrawParams contains the parameters for withdrawing an instance.

Jump to

Keyboard shortcuts

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