X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=blobdiff_plain;f=rt%2Fdocs%2Fdesign_docs%2Fruleset-workflow.txt;fp=rt%2Fdocs%2Fdesign_docs%2Fruleset-workflow.txt;h=0000000000000000000000000000000000000000;hp=f19dbd765fd212ea9d1138aee05fd2ffd3b7e0c8;hb=43a06151e47d2c59b833cbd8c26d97865ee850b6;hpb=6587f6ba7d047ddc1686c080090afe7d53365bd4 diff --git a/rt/docs/design_docs/ruleset-workflow.txt b/rt/docs/design_docs/ruleset-workflow.txt deleted file mode 100644 index f19dbd765..000000000 --- a/rt/docs/design_docs/ruleset-workflow.txt +++ /dev/null @@ -1,158 +0,0 @@ -# For an online version, see http://wiki.bestpractical.com/?RulesetWorkflow - -_*This is a design document for a work in progress. -It describes features that do not exist today and may never exist*_ - -== Text Description - -* The user of PurchaseOrder queue fill in a numeric "CF", called "Price". -* On creation, it needs to create following approvals: -** "ManagerApproval" if CF.Price is > 1000 -** "PresidentApproval" if CF.Price is > 2000 -* When all of "M", "P" are resolved (or if there were none to begin with), Create "FinanceApproval". -* If any approvals above is rejected, reject the original ticket. -* If "FinanceApproval" is resolved, resolve original ticket. -* If "FinanceApproval" is rejected, create an approval for "CEOApproval". -* If "CEOApproval" is resolved, resolve the original ticket. -* If "CEOApproval" is rejected, reject the original ticket. - -== ASCII Diagram - - ,----------. ,---------------------->[DONE] - | \ / ^ - [TOP]-+-?---->[M]---->[F] | - | | / \ | - `-?->[P]-+-' `-(!)->[C]-----------------' - | | | - | | `-(!)---------->[FAIL] - | | ^ - `-(!)----------------------------------' - -== Objects - -Note that "Scrips" are now called "Rules". - -=== RuleAction "AquireMyLocks" - - FOREACH $Scrip IN $TicketObj->Scrips - WHERE $Scrip.Action.Type == "TryCreateTicketWithRuleset" - DO LockRuleset $Scrip.Action.Argument - -=== RuleAction "TryCreateTicketWithRuleset" - - DO ReleaseMyLockOnRuleset $Argument - UNLESS RulesetLocked $Argument - DO CreateTicketWithRuleset $Argument - -=== RuleAction "CreateTicketWithRuleset" - - GIVEN $Ticket AS CreateTicket(@OtherArguments) - DO SetTicketRuleSet $Argument - DO RunTicketRuleSet $Argument - -=== GlobalRule "AquireLocks" - -* AppliesTo: All Objects -* Condition: OnCreate -* Action: AquireMyLocks - -=== Queue "PurchaseOrder" - -* Rule: -** Condition: OnCreate -** Action: SetTicketRuleSet "PurchaseFlow" -** Action: RunTicketRuleSet "PurchaseFlow" - -=== RuleSet "PurchaseFlow" - -* Rule (implicitly run by AcquireMyLocks): -** Condition: OnCreate -** Action: LockRuleSet "ManagerApproval" -** Action: LockRuleSet "PresidentApproval" -** Action: LockRuleSet "FinanceApproval" - -* Rule: -** Condition: OnCreate -** Condition: CF.Price > 1000 -** Action: TryCreateTicketWithRuleset "ManagerApproval" - -* Rule: -** Condition: OnCreate -** Condition: CF.Price > 2000 -** Action: TryCreateTicketWithRuleset "PresidentApproval" - -* Rule: -** Condition: OnCreate -** Condition: "Finance" is not blocked -** Action: TryCreateTicketWithRuleset "FinanceApproval" - -* Rule: -** Condition: OnReject -** Action: DeleteTree - -=== RuleSet: "ManagerApproval" - -* Rule (implicitly run by AcquireMyLocks): -** Condition: OnCreate -** Action: LockRuleSet "FinanceApproval" - -* Rule: -** Condition: OnResolve -** Action: TryCreateTicketWithRuleset "FinanceApproval" - -* Rule: -** Condition: OnReject -** Action: RejectTicket "PurchaseFlow" - -=== RuleSet: "PresidentApproval" - -* Rule (implicitly run by AcquireMyLocks): -** Condition: OnCreate -** Action: LockRuleSet "FinanceApproval" - -* Rule: -** Condition: OnResolve -** Action: TryCreateTicketWithRuleset "FinanceApproval" - -* Rule: -** Condition: OnReject -** Action: RejectTicket "PurchaseFlow" - -=== RuleSet: "FinanceApproval" - -* Rule: -** Condition: OnResolve -** Action: ResolveTicket "PurchaseFlow" - -* Rule: -** Condition: OnReject -** Action: ForceCreateTicketWithRuleset "CEOApproval" - -=== RuleSet: "CEOApproval" - -* Rule: -** Condition: OnResolve -** Action: ResolveTicket "PurchaseFlow" - -* Rule: -** Condition: OnReject -** Action: RejectTicket "PurchaseFlow" - -### FNORD FNORD FNORD FNORD FNORD FNORD FNORD FNORD FNORD ### - -== Another Text Description - -* 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.