[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