Class DefaultTaskService
java.lang.Object
cloud.opencode.base.flow.internal.DefaultTaskService
- All Implemented Interfaces:
TaskService
Default
TaskService implementation. Centralises the v4 §8.0.1
ownership pre-check (requireOwnedPendingTask(String, String)) and
delegates to one of the seven operation/* classes.
默认 TaskService 实现:集中实现所有权前置校验,再委派给 7 个 operation。
R3 SEC P0-3/4/5: when a non-no-op CurrentUserProvider is wired,
the read-by-id and per-user listing methods enforce that the caller is
either the resource owner (assignee / initiator) or an administrator
— defeating IDOR enumeration. With the default CurrentUserProvider.NO_OP
the engine documents that the host MUST enforce authorisation at its own
API boundary; nothing changes for legacy wiring.
R3 SEC P0-3/4/5:装配真实 CurrentUserProvider 时引擎强制按所属人
鉴权读路径;默认 NO_OP 保持向后兼容(由宿主自行在 API 边界鉴权)。
- Since:
- JDK 25, opencode-base-flow V1.0.5
- Author:
- Leon Soo
-
Constructor Summary
ConstructorsConstructorDescriptionDefaultTaskService(FlowRepository repo, ApproveOperation approveOp, VoteOperation voteOp, RejectOperation rejectOp, AddSignOperation addSignOp, WithdrawOperation withdrawOp, TransferOperation transferOp, CirculateOperation circulateOp) Test-friendly constructor accepting fully-built operation instances (no-opFlowMetrics).DefaultTaskService(FlowRepository repo, ApproveOperation approveOp, VoteOperation voteOp, RejectOperation rejectOp, AddSignOperation addSignOp, WithdrawOperation withdrawOp, TransferOperation transferOp, CirculateOperation circulateOp, FlowMetrics metrics) Test-friendly constructor accepting fully-built operation instances with explicitFlowMetrics.DefaultTaskService(FlowRepository repo, ApproveOperation approveOp, VoteOperation voteOp, RejectOperation rejectOp, AddSignOperation addSignOp, WithdrawOperation withdrawOp, TransferOperation transferOp, CirculateOperation circulateOp, FlowMetrics metrics, CurrentUserProvider currentUser) Full test-friendly constructor including authn SPI.DefaultTaskService(FlowRepository repo, AssigneeResolver assigneeResolver, ExpressionEvaluator exprEvaluator) Convenience constructor wiring all dependencies from the SPIs with a no-opFlowMetrics.DefaultTaskService(FlowRepository repo, AssigneeResolver assigneeResolver, ExpressionEvaluator exprEvaluator, FlowMetrics metrics) Convenience constructor wiring all dependencies from the SPIs with an explicitFlowMetrics.DefaultTaskService(FlowRepository repo, AssigneeResolver assigneeResolver, ExpressionEvaluator exprEvaluator, FlowMetrics metrics, CurrentUserProvider currentUser) Full convenience constructor including authn SPI. -
Method Summary
Modifier and TypeMethodDescriptionvoidAdd-sign action.voidApprove action.voidCirculate (read-only notification) to additional users.Paginated todo query (status = PENDING) for a user.Returns the task by id (or throws TASK_NOT_FOUND).voidReject action.voidTransfer the current task to another user.voidvote(String taskId, String userId, VoteOpinion opinion, String comment) Vote action (records vote and marks task DONE).voidWithdraw the running instance (initiator only).Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface TaskService
findTodo
-
Constructor Details
-
DefaultTaskService
public DefaultTaskService(FlowRepository repo, AssigneeResolver assigneeResolver, ExpressionEvaluator exprEvaluator) Convenience constructor wiring all dependencies from the SPIs with a no-opFlowMetrics. 便利构造器:从 SPI 装配全部依赖,默认使用 no-opFlowMetrics。- Parameters:
repo- persistence facade — 持久化门面assigneeResolver- assignee resolver SPI — 参与者解析 SPIexprEvaluator- optional expression evaluator SPI — 可选表达式 SPI- Since:
- JDK 25, opencode-base-flow V1.0.5
-
DefaultTaskService
public DefaultTaskService(FlowRepository repo, AssigneeResolver assigneeResolver, ExpressionEvaluator exprEvaluator, FlowMetrics metrics) Convenience constructor wiring all dependencies from the SPIs with an explicitFlowMetrics. 便利构造器:从 SPI 装配全部依赖,显式注入FlowMetrics。- Parameters:
repo- persistence facade — 持久化门面assigneeResolver- assignee resolver SPI — 参与者解析 SPIexprEvaluator- optional expression evaluator SPI — 可选表达式 SPImetrics- metrics sink — 指标接收器- Since:
- JDK 25, opencode-base-flow V1.0.5
-
DefaultTaskService
public DefaultTaskService(FlowRepository repo, AssigneeResolver assigneeResolver, ExpressionEvaluator exprEvaluator, FlowMetrics metrics, CurrentUserProvider currentUser) Full convenience constructor including authn SPI. 完整便利构造器(含认证 SPI)。- Parameters:
repo- persistence facade — 持久化门面assigneeResolver- assignee resolver SPI — 参与者解析 SPIexprEvaluator- optional expression evaluator SPI — 可选表达式 SPImetrics- metrics sink — 指标接收器currentUser- current-user SPI;CurrentUserProvider.NO_OPdisables engine-level read-path authz — 当前用户 SPI;NO_OP 表示由宿主自行鉴权- Since:
- JDK 25, opencode-base-flow V1.0.5
-
DefaultTaskService
public DefaultTaskService(FlowRepository repo, ApproveOperation approveOp, VoteOperation voteOp, RejectOperation rejectOp, AddSignOperation addSignOp, WithdrawOperation withdrawOp, TransferOperation transferOp, CirculateOperation circulateOp) Test-friendly constructor accepting fully-built operation instances (no-opFlowMetrics). 测试友好构造器:接受外部构造好的 operation(no-op metrics)。- Parameters:
repo- persistence facade — 持久化门面approveOp- approve operation — 同意操作voteOp- vote operation — 投票操作rejectOp- reject operation — 驳回操作addSignOp- add-sign operation — 加签操作withdrawOp- withdraw operation — 撤回操作transferOp- transfer operation — 转办操作circulateOp- circulate operation — 抄送操作- Since:
- JDK 25, opencode-base-flow V1.0.5
-
DefaultTaskService
public DefaultTaskService(FlowRepository repo, ApproveOperation approveOp, VoteOperation voteOp, RejectOperation rejectOp, AddSignOperation addSignOp, WithdrawOperation withdrawOp, TransferOperation transferOp, CirculateOperation circulateOp, FlowMetrics metrics) Test-friendly constructor accepting fully-built operation instances with explicitFlowMetrics. 测试友好构造器:接受外部构造好的 operation + 显式 metrics。- Parameters:
repo- persistence facade — 持久化门面approveOp- approve operation — 同意操作voteOp- vote operation — 投票操作rejectOp- reject operation — 驳回操作addSignOp- add-sign operation — 加签操作withdrawOp- withdraw operation — 撤回操作transferOp- transfer operation — 转办操作circulateOp- circulate operation — 抄送操作metrics- metrics sink — 指标接收器- Since:
- JDK 25, opencode-base-flow V1.0.5
-
DefaultTaskService
public DefaultTaskService(FlowRepository repo, ApproveOperation approveOp, VoteOperation voteOp, RejectOperation rejectOp, AddSignOperation addSignOp, WithdrawOperation withdrawOp, TransferOperation transferOp, CirculateOperation circulateOp, FlowMetrics metrics, CurrentUserProvider currentUser) Full test-friendly constructor including authn SPI. 完整测试构造器(含认证 SPI)。- Parameters:
repo- persistence facade — 持久化门面approveOp- approve operation — 同意操作voteOp- vote operation — 投票操作rejectOp- reject operation — 驳回操作addSignOp- add-sign operation — 加签操作withdrawOp- withdraw operation — 撤回操作transferOp- transfer operation — 转办操作circulateOp- circulate operation — 抄送操作metrics- metrics sink — 指标接收器currentUser- current-user SPI — 当前用户 SPI- Since:
- JDK 25, opencode-base-flow V1.0.5
-
-
Method Details
-
findTodo
Description copied from interface:TaskServicePaginated todo query (status = PENDING) for a user.sizeis capped at 200 (v4 D18). 分页查询用户待办(仅 PENDING)。size硬上限 200。- Specified by:
findTodoin interfaceTaskService- Parameters:
userId- assignee user id — 承接人page- zero-based page — 页码(0 起)size- page size (≤ 200) — 每页大小(≤ 200)- Returns:
- tasks on the requested page — 该页任务
-
get
Description copied from interface:TaskServiceReturns the task by id (or throws TASK_NOT_FOUND). 按 id 返回任务(不存在抛 TASK_NOT_FOUND)。- Specified by:
getin interfaceTaskService- Parameters:
taskId- task id — 任务 ID- Returns:
- task — 任务
-
approve
Description copied from interface:TaskServiceApprove action. 同意。- Specified by:
approvein interfaceTaskService- Parameters:
taskId- task id — 任务 IDuserId- caller user id — 调用者comment- comment (nullable) — 文本意见(可空)
-
vote
Description copied from interface:TaskServiceVote action (records vote and marks task DONE). 投票(记录投票并把 task 置为 DONE)。- Specified by:
votein interfaceTaskService- Parameters:
taskId- task id — 任务 IDuserId- caller user id — 调用者opinion- vote opinion — 投票意见comment- comment (nullable) — 文本意见(可空)
-
reject
Description copied from interface:TaskServiceReject action. 驳回。- Specified by:
rejectin interfaceTaskService- Parameters:
taskId- task id — 任务 IDuserId- caller user id — 调用者targetStepId-null= previous;"_INITIATOR_"= to-initiator; otherwise a visited step id —null上一级;"_INITIATOR_"起草点; 否则指定步骤 idcomment- comment (nullable) — 文本意见
-
addSign
Description copied from interface:TaskServiceAdd-sign action. Only USER ids accepted (no role / dept). 后加签。仅接受 userId 列表。- Specified by:
addSignin interfaceTaskService- Parameters:
taskId- task id — 任务 IDuserId- caller user id — 调用者additionalUserIds- extra user ids — 新增加签人comment- comment (nullable) — 文本意见
-
withdraw
Description copied from interface:TaskServiceWithdraw the running instance (initiator only). 撤回运行中的实例(仅发起人)。- Specified by:
withdrawin interfaceTaskService- Parameters:
instanceId- instance id — 实例 IDinitiatorId- initiator user id — 发起人reason- reason (nullable) — 理由
-
transfer
Description copied from interface:TaskServiceTransfer the current task to another user. 转办给他人。- Specified by:
transferin interfaceTaskService- Parameters:
taskId- task id — 任务 IDfromUserId- caller user id — 调用者toUserId- target user id — 目标 userIdreason- reason (nullable) — 理由
-
circulate
Description copied from interface:TaskServiceCirculate (read-only notification) to additional users. 抄送(仅通知)。- Specified by:
circulatein interfaceTaskService- Parameters:
taskId- task id — 任务 IDfromUserId- caller user id — 调用者toUserIds- notify these users — 被抄送 userId 列表comment- comment (nullable) — 文本意见
-