Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions cmd/mxcli/lsp_completions_gen.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

7 changes: 4 additions & 3 deletions mdl/ast/ast_workflow.go
Original file line number Diff line number Diff line change
Expand Up @@ -56,10 +56,11 @@ type WorkflowUserTaskNode struct {
func (n *WorkflowUserTaskNode) workflowActivityNode() {}

// WorkflowTargetingNode represents user targeting strategy.
// Kind: "microflow", "xpath", "group_microflow", "group_xpath", or ""
type WorkflowTargetingNode struct {
Kind string // "microflow", "xpath", or ""
Microflow QualifiedName // for microflow targeting
XPath string // for xpath targeting
Kind string // "microflow", "xpath", "group_microflow", "group_xpath", or ""
Microflow QualifiedName // for microflow targeting (user or group)
XPath string // for xpath targeting (user or group)
}

// WorkflowUserTaskOutcomeNode represents an outcome of a user task.
Expand Down
8 changes: 8 additions & 0 deletions mdl/executor/cmd_workflows.go
Original file line number Diff line number Diff line change
Expand Up @@ -431,6 +431,14 @@ func formatUserTask(a *workflows.UserTask, indent string) []string {
if us.XPath != "" {
lines = append(lines, fmt.Sprintf("%s TARGETING XPATH '%s'", indent, us.XPath))
}
case *workflows.MicroflowGroupSource:
if us.Microflow != "" {
lines = append(lines, fmt.Sprintf("%s TARGETING GROUPS MICROFLOW %s", indent, us.Microflow))
}
case *workflows.XPathGroupSource:
if us.XPath != "" {
lines = append(lines, fmt.Sprintf("%s TARGETING GROUPS XPATH '%s'", indent, us.XPath))
}
}
}

Expand Down
8 changes: 8 additions & 0 deletions mdl/executor/cmd_workflows_write.go
Original file line number Diff line number Diff line change
Expand Up @@ -250,6 +250,14 @@ func buildUserTask(n *ast.WorkflowUserTaskNode) *workflows.UserTask {
task.UserSource = &workflows.XPathBasedUserSource{
XPath: n.Targeting.XPath,
}
case "group_microflow":
task.UserSource = &workflows.MicroflowGroupSource{
Microflow: n.Targeting.Microflow.Module + "." + n.Targeting.Microflow.Name,
}
case "group_xpath":
task.UserSource = &workflows.XPathGroupSource{
XPath: n.Targeting.XPath,
}
}

// Outcomes
Expand Down
1 change: 1 addition & 0 deletions mdl/grammar/MDLLexer.g4
Original file line number Diff line number Diff line change
Expand Up @@ -650,6 +650,7 @@ ACTIVITY: A C T I V I T Y;
CONDITION: C O N D I T I O N;
OFF: O F F;
USERS: U S E R S;
GROUPS: G R O U P S;

// Workflow microflow action tokens
DATA: D A T A;
Expand Down
10 changes: 5 additions & 5 deletions mdl/grammar/MDLParser.g4
Original file line number Diff line number Diff line change
Expand Up @@ -2698,17 +2698,17 @@ workflowActivityStmt
workflowUserTaskStmt
: USER TASK IDENTIFIER STRING_LITERAL
(PAGE qualifiedName)?
(TARGETING MICROFLOW qualifiedName)?
(TARGETING XPATH STRING_LITERAL)?
(TARGETING (USERS | GROUPS)? MICROFLOW qualifiedName)?
(TARGETING (USERS | GROUPS)? XPATH STRING_LITERAL)?
(ENTITY qualifiedName)?
(DUE DATE_TYPE STRING_LITERAL)?
(DESCRIPTION STRING_LITERAL)?
(OUTCOMES workflowUserTaskOutcome+)?
(BOUNDARY EVENT workflowBoundaryEventClause+)?
| MULTI USER TASK IDENTIFIER STRING_LITERAL
(PAGE qualifiedName)?
(TARGETING MICROFLOW qualifiedName)?
(TARGETING XPATH STRING_LITERAL)?
(TARGETING (USERS | GROUPS)? MICROFLOW qualifiedName)?
(TARGETING (USERS | GROUPS)? XPATH STRING_LITERAL)?
(ENTITY qualifiedName)?
(DUE DATE_TYPE STRING_LITERAL)?
(DESCRIPTION STRING_LITERAL)?
Expand Down Expand Up @@ -3702,7 +3702,7 @@ keyword

// Workflow
| ABORT | ACTIVITY | ANNOTATION | BOUNDARY | BY | COMPLETE_TASK
| CONDITION | DATE | DECISION | DUE | INTERRUPTING | JUMP
| CONDITION | DATE | DECISION | DUE | GROUPS | INTERRUPTING | JUMP
| LOCK | MULTI | NODE | NON | NOTIFICATION | NOTIFY
| OPEN | OUTCOME | OUTCOMES | OVERVIEW | PARALLEL | PAUSE
| REASON | RESTART | RETRY | SPLIT | TARGETING | TASK | TIMER
Expand Down
5 changes: 4 additions & 1 deletion mdl/grammar/parser/MDLLexer.interp

Large diffs are not rendered by default.

153 changes: 77 additions & 76 deletions mdl/grammar/parser/MDLLexer.tokens
Original file line number Diff line number Diff line change
Expand Up @@ -505,79 +505,80 @@ ACTIVITY=504
CONDITION=505
OFF=506
USERS=507
DATA=508
RECORDS=509
NOTIFY=510
PAUSE=511
UNPAUSE=512
ABORT=513
RETRY=514
RESTART=515
LOCK=516
UNLOCK=517
REASON=518
OPEN=519
COMPLETE_TASK=520
NOT_EQUALS=521
LESS_THAN_OR_EQUAL=522
GREATER_THAN_OR_EQUAL=523
EQUALS=524
LESS_THAN=525
GREATER_THAN=526
PLUS=527
MINUS=528
STAR=529
SLASH=530
PERCENT=531
MOD=532
DIV=533
SEMICOLON=534
COMMA=535
DOT=536
LPAREN=537
RPAREN=538
LBRACE=539
RBRACE=540
LBRACKET=541
RBRACKET=542
COLON=543
AT=544
PIPE=545
DOUBLE_COLON=546
ARROW=547
QUESTION=548
HASH=549
MENDIX_TOKEN=550
STRING_LITERAL=551
DOLLAR_STRING=552
NUMBER_LITERAL=553
VARIABLE=554
IDENTIFIER=555
HYPHENATED_ID=556
QUOTED_IDENTIFIER=557
'<='=522
'>='=523
'='=524
'<'=525
'>'=526
'+'=527
'-'=528
'*'=529
'/'=530
'%'=531
';'=534
','=535
'.'=536
'('=537
')'=538
'{'=539
'}'=540
'['=541
']'=542
':'=543
'@'=544
'|'=545
'::'=546
'->'=547
'?'=548
'#'=549
GROUPS=508
DATA=509
RECORDS=510
NOTIFY=511
PAUSE=512
UNPAUSE=513
ABORT=514
RETRY=515
RESTART=516
LOCK=517
UNLOCK=518
REASON=519
OPEN=520
COMPLETE_TASK=521
NOT_EQUALS=522
LESS_THAN_OR_EQUAL=523
GREATER_THAN_OR_EQUAL=524
EQUALS=525
LESS_THAN=526
GREATER_THAN=527
PLUS=528
MINUS=529
STAR=530
SLASH=531
PERCENT=532
MOD=533
DIV=534
SEMICOLON=535
COMMA=536
DOT=537
LPAREN=538
RPAREN=539
LBRACE=540
RBRACE=541
LBRACKET=542
RBRACKET=543
COLON=544
AT=545
PIPE=546
DOUBLE_COLON=547
ARROW=548
QUESTION=549
HASH=550
MENDIX_TOKEN=551
STRING_LITERAL=552
DOLLAR_STRING=553
NUMBER_LITERAL=554
VARIABLE=555
IDENTIFIER=556
HYPHENATED_ID=557
QUOTED_IDENTIFIER=558
'<='=523
'>='=524
'='=525
'<'=526
'>'=527
'+'=528
'-'=529
'*'=530
'/'=531
'%'=532
';'=535
','=536
'.'=537
'('=538
')'=539
'{'=540
'}'=541
'['=542
']'=543
':'=544
'@'=545
'|'=546
'::'=547
'->'=548
'?'=549
'#'=550
4 changes: 3 additions & 1 deletion mdl/grammar/parser/MDLParser.interp

Large diffs are not rendered by default.

Loading
Loading