RulesetWorkflow
Jump to navigation
Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
_*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 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] | \ / ^ [FLOW]-+-?---->[M]---->[F] | | | / \ | `-?->[P]-+-' `-(!)->[C]-----------------' | | | | | `-(!)---------->[FAIL] | | ^ `-(!)----------------------------------'
Objects
Note that "Scrips" are now called "Rules".
(Audrey says that LockRuleset is needed, "to register dependency.")
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"
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.