Skip to content

Commit 5704a22

Browse files
authored
Merge pull request #780 from objectstack-ai/copilot/enhance-bpmn-business-semantics
2 parents d500c67 + 0a13003 commit 5704a22

5 files changed

Lines changed: 431 additions & 21 deletions

File tree

ROADMAP.md

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,7 @@ Multi-stage triggers, action pipelines, execution logs, and cron scheduling stan
141141

142142
| Item | Status | Location |
143143
|:---|:---:|:---|
144-
| Flow orchestration (14 node types) || `automation/flow.zod.ts` |
144+
| Flow orchestration (18 node types) || `automation/flow.zod.ts` |
145145
| Trigger registry (record, field, webhook) || `automation/trigger-registry.zod.ts` |
146146
| Cron scheduling expression || `automation/etl.zod.ts`, `automation/webhook.zod.ts` |
147147
| Action pipeline (webhook, email, CRUD, notification) || `automation/flow.zod.ts` (HTTP, CRUD, script nodes) |
@@ -166,6 +166,11 @@ Multi-stage triggers, action pipelines, execution logs, and cron scheduling stan
166166
| Safe expression evaluation (no `new Function`) || `@objectstack/service-automation` → operator-based parser, no code execution |
167167
| Node input/output schema validation || `automation/flow.zod.ts``inputSchema`/`outputSchema` per node, runtime validation |
168168
| Flow version history & rollback || `automation/flow.zod.ts``FlowVersionHistorySchema`, engine version management |
169+
| BPMN parallel gateway & join gateway || `automation/flow.zod.ts``parallel_gateway` (AND-split), `join_gateway` (AND-join) node types |
170+
| BPMN default sequence flow || `automation/flow.zod.ts``isDefault` field + `conditional` edge type on `FlowEdgeSchema` |
171+
| BPMN boundary events (error/timer/signal) || `automation/flow.zod.ts``boundary_event` node type + `boundaryConfig` (interrupting/non-interrupting) |
172+
| BPMN wait event configuration || `automation/flow.zod.ts``waitEventConfig` (timer/signal/webhook/manual/condition event types) |
173+
| BPMN checkpoint reasons (parallel join, boundary) || `automation/execution.zod.ts``parallel_join`, `boundary_event` in `CheckpointSchema.reason` |
169174

170175
### 3. File Direct Upload & Resumable Upload Protocol
171176

packages/spec/src/automation/execution.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -259,7 +259,7 @@ describe('CheckpointSchema', () => {
259259
});
260260

261261
it('should accept all valid checkpoint reasons', () => {
262-
const reasons = ['wait', 'screen_input', 'approval', 'error', 'manual_pause'];
262+
const reasons = ['wait', 'screen_input', 'approval', 'error', 'manual_pause', 'parallel_join', 'boundary_event'];
263263
reasons.forEach((r) => {
264264
const cp = CheckpointSchema.parse({
265265
id: 'cp_test',

packages/spec/src/automation/execution.zod.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -178,7 +178,7 @@ export const CheckpointSchema = z.object({
178178
expiresAt: z.string().datetime().optional().describe('Checkpoint expiration (auto-cleanup)'),
179179

180180
/** Reason */
181-
reason: z.enum(['wait', 'screen_input', 'approval', 'error', 'manual_pause'])
181+
reason: z.enum(['wait', 'screen_input', 'approval', 'error', 'manual_pause', 'parallel_join', 'boundary_event'])
182182
.describe('Why the execution was checkpointed'),
183183
});
184184
export type Checkpoint = z.infer<typeof CheckpointSchema>;

0 commit comments

Comments
 (0)