[Rt-commit] r2447 - in rt/branches/PLATANO-EXPERIMENTAL-CSS: .
docs/design_docs
jesse at bestpractical.com
jesse at bestpractical.com
Mon Mar 14 03:02:37 EST 2005
Author: jesse
Date: Mon Mar 14 03:02:37 2005
New Revision: 2447
Added:
rt/branches/PLATANO-EXPERIMENTAL-CSS/docs/design_docs/realflow.txt
rt/branches/PLATANO-EXPERIMENTAL-CSS/docs/design_docs/rt-mvc
Modified:
rt/branches/PLATANO-EXPERIMENTAL-CSS/ (props changed)
Log:
r8607 at hualien: jesse | 2005-03-14 02:42:55 -0500
r8495 at hualien: jesse | 2005-03-14 02:28:11 -0500
r6290 at hualien: jesse | 2005-03-05 19:06:54 -0500
random design docs
Added: rt/branches/PLATANO-EXPERIMENTAL-CSS/docs/design_docs/realflow.txt
==============================================================================
--- (empty file)
+++ rt/branches/PLATANO-EXPERIMENTAL-CSS/docs/design_docs/realflow.txt Mon Mar 14 03:02:37 2005
@@ -0,0 +1,191 @@
+- 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.
+}
+
+- The user of OrderRequest queue needs to fill a numeric "CF",
+ called "Price".
+- On creation, it needs to create following approvals:
+ - "Manager" approval if CF.Price is > 1000
+ - "President" approval if CF.Price is > 2000
+- When all of "M", "P" are resolved (if any, or if there were none
+ to begin with), Create a new approval, "Finance".
+- If any approvals above is rejected, reject the original ticket.
+- If "Finance" is resolved, resolve original ticket.
+- If "Finance" is rejected, create an approval for "CEO".
+- If "CEO" is resolved, resolve the original ticket.
+- If "CEO" is rejected, reject the original ticket.
+
+[RuleAction CreateTicketWithRuleset]
+ -> ReleaseMyLockOnRuleset $ruleset
+ -> UnlessLockOnRuleset $ruleset
+ # i.e. if no active tickets still have a lock on it
+ -> ForceCreateTicketWithRuleset $ruleset
+
+[Queue OrderRequest]
+ -> Condition: OnCreate
+ Action: AddTicketRuleSet "PurchaseApproval"
+ # Triggers immediately
+
+[RuleSet: PurchaseApproval]
+ -> Condition: OnCreate
+ Condition: CF.Price > 1000
+ Action: CreateTicketWithRuleset "ManagerApproval"
+ -> Condition: OnCreate
+ Condition: CF.Price > 2000
+ Action: CreateTicketWithRuleset "PresidentApproval"
+ -> Condition: OnCreate
+ Action: CreateTicketWithRuleset "FinanceApproval"
+ -> Condition: OnReject
+ Action: DeleteTree
+
+[RuleSet: ManagerApproval]
+ -> Condition: OnCreate
+ Action: Prohibit Ruleset "FinanceApproval"
+ -> Condition: OnResolve
+ Action: CreateTicketWithRuleset "FinanceApproval"
+ -> Condition: OnReject
+ Action: RejectTicket TOP
+
+[RuleSet: PresidentApproval]
+ -> Condition: OnCreate
+ Action: Prohibit CreateTicketWithRuleset "FinanceApproval"
+ -> Condition: OnResolve
+ Action: CreateTicketWithRuleset "FinanceApproval"
+ -> Condition: OnReject
+ Action: RejectTicket TOP
+
+[RuleSet: FinanceApproval]
+ -> Condition: OnCreate
+ Action: Prohibit RuleSet "CEOApproval"
+ -> Condition: OnResolve
+ Action: ResolveTicket TOP
+ -> Condition: OnReject
+ Action: CreateTicketWithRuleset "CEOApproval"
+
+[RuleSet: CEOApproval]
+ -> Condition: OnResolve
+ Action: ResolveTicket TOP
+ -> Condition: OnReject
+ Action: RejectTicket TOP
+
+
+
+Prohibit Ticket Operation:
+ Ruleset CEOApproval
+
+
+
+
+
+
+
+ ,--------.
+[TOP] --> [M] --> [F]
+ ` `-> [P] -'
+ `
+ `-> [X] --> [Y]
+
+
+[TOP] => [Approval]
+ -> Queue: B
+ -> Rule: yyy
+ -> Workflow: W
+ -> Stage: Approval
+ -> Rule: xxx
+
+isa_ok( $Approval->Type, 'RT::Ticket' );
+is( $Approval->Workflow->Name, 'W' );
+is( $Approval->Stage->Name, 'Approval' );
+
+[Queue: A]
+ -> Workflow: W
+
+[Workflow: W]
+ -> Stage: TOP
+ -> Stage: Approval
+ -> Stage: SUCCESS
+ -> Stage: FAIL
+
+"RuleCollections"
+
+[Stage: TOP]
+ -> Rule: OnCreate RunStage Approval
+
+ok( TicketA->Rules->HasEntry($ApprovalRule) )
+ok( TicketB->Rules->HasEntry($ApprovalRule) )
+
+[Rule: Approval]
+ -> Rule: OnResolve RunStage SUCCESS
+ -> Rule: OnReject RunStage FAIL
+
+[Stage: SUCCESS]
+ -> Rule: OnCreate SetStatus('resolved') TOP
+
+[Stage: FAIL]
+ -> Rule: OnCreate SetStatus('rejected') TOP
+
+[Unassociated]
+ - Rule FOO: OnAnything {
+ CreateTicketIfNotBlocked StageFOO
+ AddLink DependedOnBy TOP to Stage1
+ AssignRule DoStage2 to Stage1
+ AssignRule DoStage3 to Stage1
+ }
+ - Rule BAR: OnAnything {
+ CreateTicketIfNotBlocked StageBAR
+ DoSomethingBizzare
+ }
+
+ ,==> [Stage0] ==>.
+ , .
+[TOP] ==> [Stage1] ==> [Stage3]
+ ` '
+ `==> [Stage2] ==>'
+
+OnTransaction:
+ $self->Ticket->Queues->Scrips->Apply
+
+OnTransaction:
+ $self->Ticket->Queues->Scrips->Apply
+ ->Scrips->Apply
+
+OnTransaction:
+ $self->Ticket->Queues->Scrips->Apply
+ ->Stages->Scrips->Apply
+
+[QueueX]
+ - Rule:
+ OnCreate:
+ RunRule FOO
+
+[QueueY]
+ - Rule:
+ OnWhatever:
+ RunRule FOO
+
+
+[TOP] => [Stage1] => [Stage2] => [END]
+ `- => [Stage3] => [END]
+ ` -> [Stage4]
+
+[Stages]
+ ->
Added: rt/branches/PLATANO-EXPERIMENTAL-CSS/docs/design_docs/rt-mvc
==============================================================================
--- (empty file)
+++ rt/branches/PLATANO-EXPERIMENTAL-CSS/docs/design_docs/rt-mvc Mon Mar 14 03:02:37 2005
@@ -0,0 +1,32 @@
+Goals:
+
+
+ Never write an init block for a page that just views/edits pages
+ No style embedded in view/edit pages
+
+ Validation / Error display and re-editing.
+
+
+Implementation.
+
+
+ For a given object's fields:
+
+ print a label for the field
+ print the current values for the field
+ print an edit widget for create
+ print an edit widget for update
+
+
+
+ for a given form buttons for "perform the action" "don't perform the main action"
+
+
+Edit widgets
+
+
+ text input
+ hidden
+ fixed enum as { dropdown, select multiple, sleect single, radio}
+ checkbox fixed enum
+
More information about the Rt-commit
mailing list