refactor(workflows): flip association of edges
This commit is contained in:
parent
c5eea64b27
commit
54e1d6bb9d
@ -38,7 +38,4 @@ WorkflowWorkflow
|
||||
instance WorkflowInstanceId Maybe
|
||||
scope (WorkflowScope TermIdentifier SchoolShorthand SqlBackendKey) -- TermId, SchoolId, CourseId
|
||||
graph (WorkflowGraph FileReference SqlBackendKey) -- UserId
|
||||
initUser UserId Maybe
|
||||
initTime UTCTime
|
||||
state (WorkflowState FileReference SqlBackendKey) -- UserId
|
||||
currentNode WorkflowGraphNodeLabel
|
||||
|
||||
@ -51,7 +51,6 @@ newtype WorkflowGraphNodeLabel = WorkflowGraphNodeLabel { unWorkflowGraphNodeLab
|
||||
|
||||
data WorkflowGraphNode fileid userid = WGN
|
||||
{ wgnDisplayLabel :: Maybe I18nText
|
||||
, wgnInitial :: Maybe (NonNull (Set (WorkflowRole userid)))
|
||||
, wgnFinal :: Bool
|
||||
, wgnViewers :: Set (WorkflowRole userid)
|
||||
, wgnEdges :: Map WorkflowGraphEdgeLabel (WorkflowGraphEdge fileid userid)
|
||||
@ -67,7 +66,7 @@ newtype WorkflowGraphEdgeLabel = WorkflowGraphEdgeLabel { unWorkflowGraphEdgeLab
|
||||
|
||||
data WorkflowGraphEdge fileid userid
|
||||
= WorkflowGraphEdgeManual
|
||||
{ wgeTarget :: WorkflowGraphNodeLabel
|
||||
{ wgeSource :: WorkflowGraphNodeLabel
|
||||
, wgeActors :: Set (WorkflowRole userid)
|
||||
, wgeForm :: Map WorkflowPayloadLabel (NonNull (Set (WorkflowPayloadSpec fileid userid)))
|
||||
-- ^ field requirement forms a cnf:
|
||||
@ -79,7 +78,11 @@ data WorkflowGraphEdge fileid userid
|
||||
-- since fields can reference other labels this allows arbitrary requirements to be encoded.
|
||||
}
|
||||
| WorkflowGraphEdgeAutomatic
|
||||
{ wgeTarget :: WorkflowGraphNodeLabel
|
||||
{ wgeSource :: WorkflowGraphNodeLabel
|
||||
}
|
||||
| WorkflowGraphEdgeInitial
|
||||
{ wgeActors :: Set (WorkflowRole userid)
|
||||
, wgeForm :: Map WorkflowPayloadLabel (NonNull (Set (WorkflowPayloadSpec fileid userid)))
|
||||
}
|
||||
deriving (Eq, Ord, Show, Generic, Typeable)
|
||||
|
||||
@ -202,10 +205,10 @@ newtype WorkflowPayloadLabel = WorkflowPayloadLabel { unWorkflowPayloadLabel ::
|
||||
deriving stock (Eq, Ord, Show, Read, Data, Generic, Typeable)
|
||||
deriving newtype (IsString, ToJSON, ToJSONKey, FromJSON, FromJSONKey, PersistField, PersistFieldSql)
|
||||
|
||||
type WorkflowState fileid userid = Seq (WorkflowAction fileid userid)
|
||||
type WorkflowState fileid userid = NonNull (Seq (WorkflowAction fileid userid))
|
||||
|
||||
data WorkflowAction fileid userid = WorkflowAction
|
||||
{ wpFrom :: WorkflowGraphNodeLabel
|
||||
{ wpTo :: WorkflowGraphNodeLabel
|
||||
, wpVia :: WorkflowGraphEdgeLabel
|
||||
, wpPayload :: Map WorkflowPayloadLabel (NonNull (Set (WorkflowFieldPayloadW fileid userid)))
|
||||
, wpUser :: Maybe (Maybe userid) -- ^ Outer `Maybe` encodes automatic/manual, inner `Maybe` encodes whether user was authenticated
|
||||
|
||||
Loading…
Reference in New Issue
Block a user