RulesetWorkflow

From Request Tracker Wiki
Jump to: navigation, search

_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:
  • 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"

Queue "OrderRequest"

RuleSet "PurchaseFlow"

RuleSet: "ManagerApproval"

RuleSet: "PresidentApproval"

RuleSet: "FinanceApproval"

RuleSet: "CEOApproval"

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.