Skip to content

Commit 9ac9dbb

Browse files
committed
docs: update documentation to reflect nanoflow implementation state
- Move JS action call and ELK layout from Future Work to Completed in proposal - Fix stale action counts in proposal (25/32+ → actual ~16 case branches) - Expand disallowed activities list in docs-site nanoflows.md (add DOWNLOAD FILE, REST, workflow, etc.) - Add CALL JAVASCRIPT ACTION to docs-site calling examples - Add CHANGELOG entries: LSP snippets, parser fixes, validation parity, DownloadFileStmt, flow cache, empty params - Update feature matrix: nanoflow Tests column N → Y - Document ValidateNanoflowBody/validateFlowBody and flow builder cache in parser architecture - Add CALL JAVASCRIPT/JAVA ACTION and nanoflow restrictions to quick reference - Update CLAUDE.md implementation status line
1 parent 3954e54 commit 9ac9dbb

10 files changed

Lines changed: 85 additions & 60 deletions

File tree

.claude/skills/mendix/write-nanoflows.md

Lines changed: 22 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ Use this skill when:
1919
| **Java actions** | Supported | Not supported |
2020
| **JavaScript actions** | Not supported | Supported |
2121
| **File downloads** | Supported | Not supported |
22-
| **Error handling** | Full `ON ERROR` blocks | Limited |
22+
| **Error handling** | Full `ON ERROR` blocks | Per-action `ON ERROR` supported; `ErrorEvent` (raise error) forbidden |
2323
| **Offline** | Not available | Available |
2424

2525
## Nanoflow Structure
@@ -31,7 +31,7 @@ Use this skill when:
3131
* @param $Parameter1 Description
3232
* @returns Description of return value
3333
*/
34-
CREATE [OR REPLACE] NANOFLOW Module.NAV_Name (
34+
CREATE [OR MODIFY] NANOFLOW Module.NAV_Name (
3535
$Parameter1: type
3636
)
3737
RETURNS ReturnType AS $Result
@@ -91,18 +91,19 @@ END IF;
9191

9292
## Disallowed Activities
9393

94-
These will produce validation errors:
95-
- `RETRIEVE ... FROM Module.Entity WHERE ...` (database retrieval)
96-
- `COMMIT`
97-
- `DELETE`
98-
- `ROLLBACK`
99-
- `CALL JAVA ACTION`
100-
- `EXECUTE DATABASE QUERY`
101-
- `DOWNLOAD FILE`
102-
- REST calls (`CALL REST SERVICE`, `SEND REST REQUEST`)
103-
- Import/export mapping
104-
- JSON transformation
105-
- All workflow actions
94+
These will produce validation errors (12 case branches covering 22 action types in `nanoflow_validation.go`):
95+
- `ErrorEvent` / `RAISE ERROR` — not available in nanoflows
96+
- `CALL JAVA ACTION` — Java actions cannot run client-side
97+
- `EXECUTE DATABASE QUERY` — direct SQL requires server
98+
- `CALL EXTERNAL ACTION` — external actions are server-side
99+
- `SHOW HOME PAGE` — home page navigation is server-side
100+
- `CALL REST SERVICE` / `SEND REST REQUEST` — REST calls are server-side
101+
- `IMPORT FROM MAPPING` / `EXPORT TO MAPPING` — mapping operations are server-side
102+
- `TRANSFORM JSON` — JSON transformations are server-side
103+
- `DOWNLOAD FILE` — file downloads require server-side processing
104+
- All **workflow actions** (11 types: CallWorkflow, OpenWorkflow, SetTaskOutcome, OpenUserTask, etc.)
105+
106+
**Note:** Object operations (CREATE, CHANGE, COMMIT, DELETE, RETRIEVE) ARE allowed in nanoflows — they operate in-memory on the client.
106107

107108
## Return Type Restrictions
108109

@@ -127,20 +128,22 @@ MOVE NANOFLOW Sales.NAV_OpenCart TO FOLDER 'UI/Navigation';
127128

128129
## Common Mistakes
129130

130-
1. **Using database operations**Nanoflows cannot access the database directly. Use CALL MICROFLOW for server operations.
131-
2. **Using Java actions**Use CALL JAVASCRIPT ACTION instead.
131+
1. **Using Java actions** — Use CALL JAVASCRIPT ACTION instead.
132+
2. **Using ErrorEvent**Nanoflows cannot raise errors directly. Handle errors per-action with ON ERROR.
132133
3. **Expecting transactions** — Nanoflows have no rollback. Design for idempotency.
133134
4. **File operations** — DOWNLOAD FILE is server-only.
134135
5. **Binary return types** — Not supported in nanoflows.
135-
6. **Full error handling**`ON ERROR { ... }` blocks are limited in nanoflows.
136+
6. **REST/external calls**REST calls and external actions are server-only.
136137

137138
## Validation Checklist
138139

139-
- [ ] No database operations (RETRIEVE with WHERE, COMMIT, DELETE, ROLLBACK)
140+
- [ ] No ErrorEvent / raise error
140141
- [ ] No Java action calls
141-
- [ ] No REST calls or external action calls
142+
- [ ] No REST calls, external action calls, or database queries
142143
- [ ] No file download operations
144+
- [ ] No import/export mapping or JSON transformation
143145
- [ ] No workflow actions
146+
- [ ] No show home page
144147
- [ ] No binary return type
145148
- [ ] Parameters and return types are nanoflow-compatible
146149
- [ ] JavaDoc documentation present

CHANGELOG.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,13 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
2020

2121
- **Nanoflow bug fixes** — Module existence validation for SHOW NANOFLOWS/MICROFLOWS, numeric return literals no longer get spurious `$` prefix, empty nanoflow/microflow names rejected at create time, `NanoflowCallAction` error handling type resolved correctly, `not()` expression spacing preserved on roundtrip, JavaScript action call rendering in DESCRIBE output
2222
- **Nanoflow diff support**`mxcli diff` now detects and displays nanoflow changes (previously silently skipped)
23+
- **Nanoflow validation parity**`mxcli check` now runs full body validation on nanoflows (undeclared variables, missing returns, branch scoping) via shared `validateFlowBody` helper; `allNames()` includes nanoflows for forward-reference detection
24+
- **DownloadFileStmt denylist**`DOWNLOAD FILE` added to nanoflow disallowed action list
2325
- **JavaScript action MDL syntax**`call javascript action Module.ActionName(params)` now fully supported in CREATE NANOFLOW/MICROFLOW bodies: grammar, parser, builder, serializer, and roundtrip
26+
- **LSP snippet completions** — Added `CREATE NANOFLOW (with params)`, `CALL MICROFLOW`, `CALL NANOFLOW`, `CALL JAVASCRIPT ACTION`, `CALL JAVA ACTION` snippets
27+
- **Flow builder cache**`lookupMicroflowReturnType` and `lookupNanoflowReturnType` now cache results with lazy-load bool flags, avoiding repeated `ListNanoflows`/`ListMicroflows` calls; nanoflow lookup uses `GetRawUnitByName` fast path
28+
- **Parser fixes** — Negative literals no longer greedily consumed by lexer (`-?` removed from `NUMBER_LITERAL`); XPath multi-predicate brackets correctly split and re-wrapped; multi-line string literals in change/create object expressions escaped; `ExclusiveSplit` (if/else) inside loop bodies now emits correct `end if;`
29+
- **Empty action params** — JS and Java action parameters with empty/nil values are omitted from DESCRIBE output instead of rendering as `...` or bare `= )`
2430
- **Association retrieve roundtrip fidelity**`retrieve $X from $Y/Module.Association` syntax preserved on roundtrip (previously converted to `from Entity where Assoc = $Y`)
2531
- **DESCRIBE empty-then optimization** — If/else blocks with empty true branches are swapped and condition negated for readable output
2632

CLAUDE.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -465,7 +465,7 @@ Full syntax tables for all MDL statements (microflows, pages, security, navigati
465465
- MPR v1/v2 reading and writing
466466
- Domain model (entities, attributes, associations)
467467
- ALTER ENTITY (add/rename/modify/drop attributes, indexes, documentation)
468-
- Microflows/Nanoflows with 60+ activity types
468+
- Microflows/Nanoflows with 60+ activity types, JavaScript action calls, nanoflow validation parity
469469
- Pages with 50+ widget types
470470
- ALTER PAGE/SNIPPET (SET, INSERT, DROP, REPLACE operations on widget trees)
471471
- Image widgets (IMAGE, STATICIMAGE, DYNAMICIMAGE) with Width/Height properties

docs-site/src/language/nanoflows.md

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ Nanoflows are client-side logic flows that execute in the user's browser or on m
1515
| **Close page** | Supported | Supported |
1616
| **Network** | Requires server round-trip | No network call (fast) |
1717
| **Offline** | Not available offline | Available offline |
18-
| **Error handling** | `ON ERROR` blocks | Limited error handling |
18+
| **Error handling** | `ON ERROR` blocks | Per-action `ON ERROR` (no `ErrorEvent`) |
1919

2020
## When to Use Which
2121

@@ -36,7 +36,7 @@ Nanoflows are client-side logic flows that execute in the user's browser or on m
3636
## CREATE NANOFLOW Syntax
3737

3838
```sql
39-
CREATE [OR REPLACE] NANOFLOW <Module.Name>
39+
CREATE [OR MODIFY] NANOFLOW <Module.Name>
4040
[FOLDER '<path>']
4141
BEGIN
4242
[<declarations>]
@@ -70,6 +70,9 @@ $Result = CALL NANOFLOW Sales.NAV_ValidateCart (Cart = $Cart);
7070

7171
-- Call a microflow (triggers server round-trip)
7272
$ServerResult = CALL MICROFLOW Sales.ACT_SubmitOrder (Order = $Order);
73+
74+
-- Call a JavaScript action
75+
$HasNetwork = CALL JAVASCRIPT ACTION NanoflowCommons.HasConnectivity();
7376
```
7477

7578
### UI Activities
@@ -110,13 +113,18 @@ END IF;
110113

111114
The following activities are server-only and cannot be used in nanoflows:
112115

113-
- `RETRIEVE ... FROM Module.Entity WHERE ...` (database retrieval)
114-
- `COMMIT`
115-
- `DELETE`
116-
- `ROLLBACK`
117-
- `CALL JAVA ACTION`
118-
- `EXECUTE DATABASE QUERY`
119-
- `ON ERROR { ... }` (full error handler blocks)
116+
- `CALL JAVA ACTION` — Java actions cannot run client-side
117+
- `ErrorEvent` / `RAISE ERROR` — error events are not available in nanoflows
118+
- `DOWNLOAD FILE` — file downloads require server-side processing
119+
- `CALL REST SERVICE` / `SEND REST REQUEST` — REST calls are server-side
120+
- `IMPORT FROM MAPPING` / `EXPORT TO MAPPING` — mapping operations are server-side
121+
- `EXECUTE DATABASE QUERY` — direct SQL requires server
122+
- `TRANSFORM JSON` — JSON transformations are server-side
123+
- `SHOW HOME PAGE` — home page navigation is server-side
124+
- `CALL EXTERNAL ACTION` — external actions are server-side
125+
- All **workflow actions** (call/open workflow, set task outcome, user task, etc.)
126+
127+
> **Note:** Per-action error handling (`on error continue`) IS supported in nanoflows. Only `ErrorEvent` (raise error as a standalone flow action) is forbidden. Note that `on error rollback` is syntactically valid but only rolls back in-memory changes — nanoflows have no database transactions.
120128
121129
## SHOW and DESCRIBE
122130

docs/01-project/MDL_FEATURE_MATRIX.md

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ When adding a new MDL feature, use this matrix as a checklist to ensure complete
1313
| **Associations** | Y | Y | Y | N | Y | Y | 01 | Y | N | Y | Y | Y | Y | Y | Y | Y | N |
1414
| **Enumerations** | Y | Y | Y | Y | Y | Y | 01 | Y | Y | N | Y | Y | Y | N | Y | Y | Y |
1515
| **Microflows** | Y | Y | Y | Y | Y | N | 02 | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
16-
| **Nanoflows** | Y | Y | Y | Y | Y | N | N | N | Y | Y | Y | Y | Y | Y | P | N | N |
16+
| **Nanoflows** | Y | Y | Y | Y | Y | N | Y | Y | Y | Y | Y | Y | Y | Y | P | N | N |
1717
| **Pages** | Y | Y | Y | N | Y | Y | 03 | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
1818
| **Snippets** | Y | Y | Y | N | Y | Y | 03 | Y | Y | Y | Y | Y | Y | N | Y | Y | Y |
1919
| **Layouts** | Y | Y | N | N | N | N | N | N | Y | Y | Y | N | Y | N | Y | N | N |
@@ -37,7 +37,7 @@ When adding a new MDL feature, use this matrix as a checklist to ensure complete
3737
| **Project Security** | Y | - | - | - | - | Y | 08 | Y | Y | Y | Y | Y | Y | N | N | Y | Y |
3838
| **Entity Access** | P | N | Y | P | Y | P | 08 | Y | N | Y | Y | Y | Y | N | N | Y | Y |
3939
| **Microflow Access** | Y | N | Y | P | Y | P | 08 | Y | N | Y | Y | Y | Y | N | N | Y | Y |
40-
| **Nanoflow Access** | Y | N | Y | P | Y | P | N | N | N | Y | Y | N | Y | N | N | N | N |
40+
| **Nanoflow Access** | Y | N | Y | P | Y | P | N | Y | N | Y | Y | Y | Y | N | N | N | N |
4141
| **Page Access** | Y | N | Y | P | Y | P | 08 | Y | N | Y | Y | Y | Y | N | N | Y | Y |
4242

4343
## Project Organization
@@ -124,7 +124,6 @@ These types are not covered in `help.go` output:
124124

125125
### Missing Skills
126126

127-
- **Nanoflows** — Dedicated skill exists (`write-nanoflows.md`); also partially covered by microflow skill
128127
- **Layouts** — Read-only, no skill needed
129128
- **Constants** — No dedicated skill
130129

@@ -134,7 +133,6 @@ These types are not covered in `help.go` output:
134133

135134
### Missing Examples
136135

137-
- **Nanoflows** — No dedicated example file
138136
- **Layouts** — Read-only, no example needed
139137
- **Folders / MOVE** — No dedicated example file
140138

docs/01-project/MDL_QUICK_REFERENCE.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -207,6 +207,7 @@ authentication basic, session
207207
| Drop nanoflow | `drop nanoflow Module.Name;` | |
208208
| Create nanoflow | `create [or modify] nanoflow Module.Name (params) returns type [folder 'path'] begin ... end;` | Same body syntax as microflows |
209209
| Move nanoflow | `move nanoflow Module.Name to folder 'path';` | |
210+
| Nanoflow restrictions | N/A | No Java actions, ErrorEvent, REST calls, database queries, external actions, download file, workflow actions, import/export mappings, JSON transformation, show home page |
210211

211212
## Microflows - Supported Statements
212213

@@ -225,6 +226,8 @@ authentication basic, session
225226
| Retrieve (Assoc) | `retrieve $list from $Parent/Module.AssocName;` | Retrieve by association |
226227
| Call microflow | `$Result = call microflow Module.Name (Param = $value);` | |
227228
| Call nanoflow | `$Result = call nanoflow Module.Name (Param = $value);` | |
229+
| Call JS action | `$Result = call javascript action Module.Name (Param = $value);` | JavaScript action (nanoflow/microflow) |
230+
| Call Java action | `$Result = call java action Module.Name (Param = $value);` | Java action (microflow only) |
228231
| Show page | `show page Module.PageName ($Param = $value);` | Also accepts `(Param: $value)` |
229232
| Close page | `close page;` | |
230233
| Download file | `download file $FileDocument [show in browser];` | Streams a `System.FileDocument` |

docs/03-development/MDL_PARSER_ARCHITECTURE.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -515,11 +515,11 @@ The `microflowValidator` struct walks the body and checks:
515515
4. **Variable scope** — Variables declared inside IF/ELSE branches or ON ERROR bodies cannot be referenced after the branch ends. The `checkBranchScoping()` method collects variables declared inside branches and checks if subsequent statements reference them.
516516
5. **Validation feedback** — VALIDATION FEEDBACK must have a non-empty message template (CE0091).
517517

518-
This is separate from `ValidateMicroflowBody()` (in `cmd_microflows_builder.go`), which checks undeclared variable usage and runs during `--references` validation.
518+
This is separate from `ValidateMicroflowBody()` and `ValidateNanoflowBody()` (in `cmd_microflows_builder_validate.go`), which check undeclared variable usage and run during `--references` validation. Both delegate to the shared `validateFlowBody()` helper that accepts `[]ast.MicroflowParam` and `[]ast.MicroflowStatement`.
519519

520520
## Microflow Builder Architecture
521521

522-
The microflow builder (`cmd_microflows_builder.go`) converts MDL microflow AST nodes into Mendix microflow objects. A key aspect is **variable type tracking**.
522+
The microflow builder (`cmd_microflows_builder.go`) converts MDL microflow AST nodes into Mendix microflow objects. A key aspect is **variable type tracking**. The `flowBuilder` also maintains `microflowsCache`/`nanoflowsCache` (with `Loaded` bool flags) for lazy-cached return type lookups, and `allNames()` includes nanoflows for forward-reference detection in multi-statement scripts.
523523

524524
### Variable Type Tracking (`varTypes`)
525525

docs/05-mdl-specification/01-language-reference.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -629,7 +629,7 @@ Creates a microflow with activities, parameters, return type, and control flow.
629629

630630
**Syntax:**
631631
```sql
632-
create [or replace] microflow <qualified-name>
632+
create [or modify] microflow <qualified-name>
633633
[folder '<path>']
634634
begin
635635
[<statements>]
@@ -723,7 +723,7 @@ end;
723723
**Restrictions:**
724724
- No `ErrorEvent`, Java action calls, REST/web service calls, workflow actions, import/export mapping actions, or database queries
725725
- Return type cannot be `Binary`
726-
- Activities are the same as microflows minus server-side-only actions (see `PROPOSAL_nanoflow_support.md` for the full list of 20 disallowed action types)
726+
- Activities are the same as microflows minus server-side-only actions (see `PROPOSAL_nanoflow_support.md` for the full list of 22 disallowed action types)
727727

728728
**Example:**
729729
```sql
@@ -1538,6 +1538,7 @@ statement = connect_stmt | disconnect_stmt | status_stmt
15381538
| create_entity_stmt | alter_entity_stmt | drop_entity_stmt
15391539
| create_assoc_stmt | drop_assoc_stmt
15401540
| create_microflow_stmt | drop_microflow_stmt
1541+
| create_nanoflow_stmt | drop_nanoflow_stmt
15411542
| create_page_stmt | alter_page_stmt | drop_page_stmt
15421543
| move_stmt
15431544
| security_stmt | grant_stmt | revoke_stmt

docs/11-proposals/PROPOSAL_nanoflow_support.md

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -31,9 +31,9 @@ Nanoflows execute client-side (browser or native app). In the Mendix metamodel,
3131

3232
### Action Restrictions
3333

34-
**Allowed in nanoflows** (25 actions): ChangeVariable, AggregateList, CreateVariable, Rollback, Retrieve, Delete, CreateChange, Commit, Cast, Change, LogMessage, ListOperation, CreateList, ChangeList, MicroflowCall, ValidationFeedback, ShowPage, ShowMessage, CloseForm, **NanoflowCall**, **JavaScriptActionCall**, **Synchronize**, **CancelSynchronization**, **ClearFromClient**.
34+
**Allowed in nanoflows**: ChangeVariable, AggregateList, CreateVariable, Rollback, Retrieve, Delete, CreateChange, Commit, Cast, Change, LogMessage, ListOperation, CreateList, ChangeList, MicroflowCall, ValidationFeedback, ShowPage, ShowMessage, CloseForm, NanoflowCall, JavaScriptActionCall, Synchronize, CancelSynchronization, ClearFromClient, and others not explicitly denied.
3535

36-
**Disallowed** (32+ actions): All Java actions, REST calls, workflow actions, import/export, external object ops, download file, push to client, show home page, email, document generation, metrics, ML model calls.
36+
**Disallowed** (enforced by `checkDisallowedNanoflowAction` in `nanoflow_validation.go`, 12 case branches covering 22 action types): RaiseError/ErrorEvent, JavaActionCall, RestCall, SendRestRequest, ImportFromMapping, ExportToMapping, CallExternalAction, DownloadFile, ShowHomePage, TransformJson, ExecuteDatabaseQuery, and 11 workflow action types (CallWorkflow, GetWorkflowData, GetWorkflows, GetWorkflowActivityRecords, WorkflowOperation, SetTaskOutcome, OpenUserTask, NotifyWorkflow, OpenWorkflow, LockWorkflow, UnlockWorkflow).
3737

3838
## Supported Commands
3939

@@ -87,7 +87,7 @@ revokeNanoflowAccessStatement
8787

8888
## Validation Rules
8989

90-
1. **Disallowed actions** — Type-switch rejects 21 microflow-only action types with descriptive error messages
90+
1. **Disallowed actions** — Type-switch rejects 12 case branches covering 22 microflow-only action types with descriptive error messages (11 workflow actions collapsed into multi-type case)
9191
2. **ErrorEvent forbidden**`ErrorEvent is not allowed in nanoflows`
9292
3. **Binary return type rejected**`Binary return type is not allowed in nanoflows`
9393
4. **Recursive validation** — Checks compound statements (IF/LOOP/WHILE bodies) and error handling blocks
@@ -118,11 +118,16 @@ revokeNanoflowAccessStatement
118118
| Feature | Priority | Notes |
119119
|---------|----------|-------|
120120
| Roundtrip tests with real `.mpr` baselines | P2 | CREATE → DESCRIBE → re-CREATE verification against App Gallery demos |
121-
| JavaScriptActionCall syntax | P2 | `call javascript action` in nanoflows |
122121
| SynchronizeAction | P3 | `synchronize` action for offline nanoflows |
123-
| ELK layout | P3 | Visual layout (low priority) |
124122
| Web/Native platform mixing check | P3 | CE6051 validation |
125123

124+
### Completed (formerly Future Work)
125+
126+
| Feature | Status | Notes |
127+
|---------|--------|-------|
128+
| JavaScriptActionCall syntax | Done | `call javascript action Module.ActionName(params)` fully supported in grammar, parser, builder, serializer, and roundtrip |
129+
| ELK layout | Done | `describe nanoflow --format elk` produces valid JSON layout |
130+
126131
## Testing
127132

128133
Test plan: `docs/15-testing/nanoflow-test-cases.md` (19 sections, 100+ test cases covering all commands, validation, BSON round-trip, catalog, and edge cases).

docs/15-testing/nanoflow-test-cases.md

Lines changed: 19 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# Nanoflow Test Cases — Manual Testing
22

33
**Updated:** 2026-04-28
4-
**PR:** [retran/mxcli#10](https://github.com/retran/mxcli/pull/10)
4+
**PR:** [mendixlabs/mxcli#301](https://github.com/mendixlabs/mxcli/pull/301)
55

66
## Test Projects
77

@@ -269,7 +269,7 @@ create nanoflow NewModule.TestNano () begin end;
269269

270270
### 3.10 Folder placement
271271
```
272-
create nanoflow MyModule.TestNano () in folder 'SubFolder/Nested' begin end;
272+
create nanoflow MyModule.TestNano () folder 'SubFolder/Nested' begin end;
273273
```
274274
**Expected:** Nanoflow placed in correct folder.
275275

@@ -295,22 +295,23 @@ Attempt CREATE without opening a project for writing.
295295
### 4.1 Disallowed actions
296296
Each must be rejected with clear error:
297297

298-
| # | Disallowed action |
299-
|---|-------------------|
300-
| 1 | ErrorEvent |
301-
| 2 | Java action call |
302-
| 3 | Database query |
303-
| 4 | REST call |
304-
| 5 | Web service call |
305-
| 6 | Import mapping |
306-
| 7 | Export mapping |
307-
| 8 | Generate document |
308-
| 9 | Show home page |
309-
| 10 | Download file |
310-
| 11 | External action |
311-
| 12 | Send external object |
312-
| 13 | Delete external object |
313-
| 14 | All workflow actions (9 types) |
298+
| # | Disallowed action | Notes |
299+
|---|-------------------|-------|
300+
| 1 | ErrorEvent | |
301+
| 2 | Java action call | |
302+
| 3 | Database query | |
303+
| 4 | REST call | |
304+
| 5 | Web service call | No MDL AST type — cannot be written in MDL |
305+
| 6 | Import mapping | |
306+
| 7 | Export mapping | |
307+
| 8 | Generate document | No MDL AST type — cannot be written in MDL |
308+
| 9 | Show home page | |
309+
| 10 | Download file | |
310+
| 11 | External action | |
311+
| 12 | Send external object | No MDL AST type — cannot be written in MDL |
312+
| 13 | Delete external object | No MDL AST type — cannot be written in MDL |
313+
| 14 | Transform JSON | |
314+
| 15 | All workflow actions (11 types) | |
314315

315316
### 4.2 Binary return type rejected
316317
```

0 commit comments

Comments
 (0)