diff options
Diffstat (limited to 'rt/docs/design_docs/realflow.txt')
-rw-r--r-- | rt/docs/design_docs/realflow.txt | 191 |
1 files changed, 0 insertions, 191 deletions
diff --git a/rt/docs/design_docs/realflow.txt b/rt/docs/design_docs/realflow.txt deleted file mode 100644 index 3717e273b..000000000 --- a/rt/docs/design_docs/realflow.txt +++ /dev/null @@ -1,191 +0,0 @@ -- I have a MonitoredQueue that sets tickets to "Monitored" - if its subject matches /monitored/. - -- I want to have a kind of Ticket that are 'Monitored'. -- I want all monitored tickets, when they are overdue for - 14 days, to: - - send notification to manager - - mark as stalled -- I want all monitored tickets, when they are overdue for - 28 days, to: - - mark as rejected -- I want to query all tickets that are monitored as such -- I want to modify 14 => 15 and have it affect all existing - tickets that are monitored - -{ -- I want to add a new "overdue for 27 days, add a 'ultimatum' - correspondence to it" rule for all monitored tickets. -- I want to add a new "overdue for 27 days, add a 'ultimatum' - correspondence to it" rule for all _new_ monitored tickets - without affecting existing ones. -} - -- The user of OrderRequest queue needs to fill a numeric "CF", - called "Price". -- On creation, it needs to create following approvals: - - "Manager" approval if CF.Price is > 1000 - - "President" approval if CF.Price is > 2000 -- When all of "M", "P" are resolved (if any, or if there were none - to begin with), Create a new approval, "Finance". -- If any approvals above is rejected, reject the original ticket. -- If "Finance" is resolved, resolve original ticket. -- If "Finance" is rejected, create an approval for "CEO". -- If "CEO" is resolved, resolve the original ticket. -- If "CEO" is rejected, reject the original ticket. - -[RuleAction CreateTicketWithRuleset] - -> ReleaseMyLockOnRuleset $ruleset - -> UnlessLockOnRuleset $ruleset - # i.e. if no active tickets still have a lock on it - -> ForceCreateTicketWithRuleset $ruleset - -[Queue OrderRequest] - -> Condition: OnCreate - Action: AddTicketRuleSet "PurchaseApproval" - # Triggers immediately - -[RuleSet: PurchaseApproval] - -> Condition: OnCreate - Condition: CF.Price > 1000 - Action: CreateTicketWithRuleset "ManagerApproval" - -> Condition: OnCreate - Condition: CF.Price > 2000 - Action: CreateTicketWithRuleset "PresidentApproval" - -> Condition: OnCreate - Action: CreateTicketWithRuleset "FinanceApproval" - -> Condition: OnReject - Action: DeleteTree - -[RuleSet: ManagerApproval] - -> Condition: OnCreate - Action: Prohibit Ruleset "FinanceApproval" - -> Condition: OnResolve - Action: CreateTicketWithRuleset "FinanceApproval" - -> Condition: OnReject - Action: RejectTicket TOP - -[RuleSet: PresidentApproval] - -> Condition: OnCreate - Action: Prohibit CreateTicketWithRuleset "FinanceApproval" - -> Condition: OnResolve - Action: CreateTicketWithRuleset "FinanceApproval" - -> Condition: OnReject - Action: RejectTicket TOP - -[RuleSet: FinanceApproval] - -> Condition: OnCreate - Action: Prohibit RuleSet "CEOApproval" - -> Condition: OnResolve - Action: ResolveTicket TOP - -> Condition: OnReject - Action: CreateTicketWithRuleset "CEOApproval" - -[RuleSet: CEOApproval] - -> Condition: OnResolve - Action: ResolveTicket TOP - -> Condition: OnReject - Action: RejectTicket TOP - - - -Prohibit Ticket Operation: - Ruleset CEOApproval - - - - - - - - ,--------. -[TOP] --> [M] --> [F] - ` `-> [P] -' - ` - `-> [X] --> [Y] - - -[TOP] => [Approval] - -> Queue: B - -> Rule: yyy - -> Workflow: W - -> Stage: Approval - -> Rule: xxx - -isa_ok( $Approval->Type, 'RT::Ticket' ); -is( $Approval->Workflow->Name, 'W' ); -is( $Approval->Stage->Name, 'Approval' ); - -[Queue: A] - -> Workflow: W - -[Workflow: W] - -> Stage: TOP - -> Stage: Approval - -> Stage: SUCCESS - -> Stage: FAIL - -"RuleCollections" - -[Stage: TOP] - -> Rule: OnCreate RunStage Approval - -ok( TicketA->Rules->HasEntry($ApprovalRule) ) -ok( TicketB->Rules->HasEntry($ApprovalRule) ) - -[Rule: Approval] - -> Rule: OnResolve RunStage SUCCESS - -> Rule: OnReject RunStage FAIL - -[Stage: SUCCESS] - -> Rule: OnCreate SetStatus('resolved') TOP - -[Stage: FAIL] - -> Rule: OnCreate SetStatus('rejected') TOP - -[Unassociated] - - Rule FOO: OnAnything { - CreateTicketIfNotBlocked StageFOO - AddLink DependedOnBy TOP to Stage1 - AssignRule DoStage2 to Stage1 - AssignRule DoStage3 to Stage1 - } - - Rule BAR: OnAnything { - CreateTicketIfNotBlocked StageBAR - DoSomethingBizzare - } - - ,==> [Stage0] ==>. - , . -[TOP] ==> [Stage1] ==> [Stage3] - ` ' - `==> [Stage2] ==>' - -OnTransaction: - $self->Ticket->Queues->Scrips->Apply - -OnTransaction: - $self->Ticket->Queues->Scrips->Apply - ->Scrips->Apply - -OnTransaction: - $self->Ticket->Queues->Scrips->Apply - ->Stages->Scrips->Apply - -[QueueX] - - Rule: - OnCreate: - RunRule FOO - -[QueueY] - - Rule: - OnWhatever: - RunRule FOO - - -[TOP] => [Stage1] => [Stage2] => [END] - `- => [Stage3] => [END] - ` -> [Stage4] - -[Stages] - -> |