Files
orbit/docs/examples/workflow-query.md

2.8 KiB
Raw Permalink Blame History

按业务关联分页查找流程

场景:一个对象关联多次处理流程,管理端需要按固定定义版本、精确业务关联及时间范围查询等待中的实例,再进入详情处理。示例同时证明业务键末尾有无空格属于不同关联。

源码:workflow-query/main.go。服务端入口:筛选接口。示例发布一个SIGNAL等待流程,创建三个实例,其中两个使用相同业务键、第三个去掉尾部空格;每页1项读取匹配的两个实例,最后将三个实例取消并等待CANCELLED。

启动

需要已完成迁移的Orbit、MySQL 8.4+与Go 1.27.1。从仓库根目录使用专用开发数据库运行:

go run ./cmd/orbit-migrate up
mkdir -p .local
chmod 700 .local
go run ./cmd/orbit-admin bootstrap \
  --application query-example --namespace default --environment development \
  --queue work --workflow-access --workflow-run-access --workflow-control-access \
  --output .local/workflow-query.credentials.json
go run ./cmd/orbit

另开终端:

cd examples
ORBIT_URL=http://127.0.0.1:8080 \
ORBIT_CREDENTIALS_FILE=../.local/workflow-query.credentials.json \
go run ./workflow-query

查询本身只要求workflows:read。此完整示例额外需要研发创建/发布、启动与控制权限,由上述bootstrap选项授予。SIGNAL等待不用Worker,也不模拟外部业务成功;正常结束通过显式取消结清。

预期输出:

workflow_query_verified=true matched=2 pages=2 exact_trailing_space=true
workflow_query_cleanup=CANCELLED count=3

每次独立运行生成新的操作身份与定义,单次运行内发布/启动/控制分别保留稳定操作身份。输入为JSON null,输出契约为外部回执布尔值,本例不提交回执。流程120秒总时限保持有限。

错误与清理

无授权、发布失败、筛选丢失、重复项、取消失败均非零退出。输出不含凭据。网络失败不自动创建新操作或换筛选;正式业务应先持久保存请求、定义ID和原操作键,再按实例接口恢复回执。

正常结束保留定义、版本、已取消实例和审计。若中途退出,已有等待保留原绝对截止,不直接删除运行数据;查询当前实例,按最新control_revision发起有原因的取消,存在未知效果则进入核查流程。示例不会更改已有实例,也不清空数据库;连续运行会累积定义,达到每命名空间100个定义的上限应使用新的隔离演示命名空间,不删除生产历史规避限制。

make integration在一次性数据库中启动真实Orbit,验证SDK与本例,并清理该次容器。跨页不是快照,实际管理界面应允许刷新第一页,并保留后续页的全部查询条件。