Class TransferOperation
java.lang.Object
cloud.opencode.base.flow.operation.TransferOperation
Transfer action — changes the assignee of a PENDING task (v4 §8.7).
转办操作 —— 修改 PENDING 任务的 assigneeId。
- Since:
- JDK 25, opencode-base-flow V1.0.5
- Author:
- Leon Soo
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final intMax length of a single transfer chain on one task. -
Constructor Summary
ConstructorsConstructorDescriptionTransferOperation(FlowRepository repo, HistoryWriter history, AssigneeResolver assigneeResolver) Construct a transfer operation. -
Method Summary
-
Field Details
-
MAX_TRANSFER_DEPTH
public static final int MAX_TRANSFER_DEPTHMax length of a single transfer chain on one task. Without a cap, two colluding users could chain transfers forever to obscure the responsible approver. AddSign already enforces a chain-depth CAS — transfer needs its own ceiling. 单任务最大转交链长;不设上限时两人合谋可反复转交以混淆审计。- See Also:
-
-
Constructor Details
-
TransferOperation
public TransferOperation(FlowRepository repo, HistoryWriter history, AssigneeResolver assigneeResolver) Construct a transfer operation. 构造转办操作。- Parameters:
repo- persistence facade — 持久化门面history- history writer — 历史追加器assigneeResolver- assignee resolver SPI — 参与者解析 SPI- Since:
- JDK 25, opencode-base-flow V1.0.5
-
-
Method Details
-
execute
Execute the transfer action. 执行转办操作。Post-R2 CR-1: the assignee mutation + history append run inside
FlowRepository.runInTransaction(Runnable)so a partial failure rolls back atomically on JDBC backends, matching Approve / Reject / Vote / Withdraw / AddSign.Post-R2 CR-1:assignee 改写 + history 追加置于
FlowRepository.runInTransaction(Runnable),JDBC 后端可原子回滚, 与其它 5 个动作(Approve/Reject/Vote/Withdraw/AddSign)保持一致。- Parameters:
task- already-validated owned PENDING task — 已校验任务fromUserId- caller user id (= task.assigneeId) — 调用者toUserId- target user id — 目标 userIdreason- sanitised reason (nullable) — 已清洗理由- Since:
- JDK 25, opencode-base-flow V1.0.5
-