[Rt-commit] [svn] r1259 - in rt: . branches/PLATANO-EXPERIMENTAL/docs/design_docs

autrijus at pallas.eruditorum.org autrijus at pallas.eruditorum.org
Fri Jul 16 17:52:54 EDT 2004


Author: autrijus
Date: Fri Jul 16 17:52:53 2004
New Revision: 1259

Added:
   rt/branches/PLATANO-EXPERIMENTAL/docs/design_docs/ruleset-workflow.txt
Modified:
   rt/   (props changed)
Log:
* design docs for ruleset/workflows


Added: rt/branches/PLATANO-EXPERIMENTAL/docs/design_docs/ruleset-workflow.txt
==============================================================================
--- (empty file)
+++ rt/branches/PLATANO-EXPERIMENTAL/docs/design_docs/ruleset-workflow.txt	Fri Jul 16 17:52:53 2004
@@ -0,0 +1,147 @@
+== Text Description
+
+* The user of OrderRequest 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
+
+=== GlobalRule "AquireLocks"
+
+* AppliesTo: All Objects
+* Condition: OnCreate
+* Action: AquireMyLocks
+
+=== Queue "OrderRequest"
+
+* 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 "Manager"
+
+* Rule:
+** Condition: OnCreate 
+** Condition: CF.Price > 2000
+** Action: TryCreateTicketWithRuleset "President"
+
+* Rule:
+** Condition: OnCreate 
+** Condition: "Finance" is not blocked
+** Action: TryCreateTicketWithRuleset "Finance"
+
+* 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.


More information about the Rt-commit mailing list