From b7dec2f1d0e68ae44c28919125aadab21033f1f1 Mon Sep 17 00:00:00 2001 From: Sarah Vaupel Date: Wed, 1 Apr 2020 12:12:07 +0200 Subject: [PATCH] chore: very stubby stub for workflow model --- models/workflows.model | 14 ++++++++++ src/Model/Types/Workflow.hs | 54 +++++++++++++++++++++++++++++++++++++ 2 files changed, 68 insertions(+) create mode 100644 models/workflows.model create mode 100644 src/Model/Types/Workflow.hs diff --git a/models/workflows.model b/models/workflows.model new file mode 100644 index 000000000..a9bcafb96 --- /dev/null +++ b/models/workflows.model @@ -0,0 +1,14 @@ +WorkflowDefinition + graph WorkflowGraph + initiator WorkflowInitiator + +WorkflowInitiator + -- TODO descriptor of a "role" that can initiate an instance of a workflow in a specified scope + +WorkflowInstance + definition WorkflowDefinition + initiator UserId + +Flow + instance WorkflowInstance + diff --git a/src/Model/Types/Workflow.hs b/src/Model/Types/Workflow.hs new file mode 100644 index 000000000..745e604dd --- /dev/null +++ b/src/Model/Types/Workflow.hs @@ -0,0 +1,54 @@ +module Model.Types.Workflow where + +import Import + +data WorkflowGraphNodeStatus = WGNS + { wgnsIdent :: CI Text + , wgnsFinished :: Bool + , wgnsLabel :: Maybe Text + } + deriving (Eq, Ord, Show, Read, Data, Generic, Typeable) +deriveJSON defaultOptions ''WorkflowGraphNodeStatus +data WorkflowGraphNode = WGN + { wgnStatus :: WorkflowGraphNodeStatus + } + deriving (Eq, Ord, Show, Read, Data, Generic, Typeable) +deriveJSON defaultOptions ''WorkflowGraphNode + +data WorkflowEdgePayload = WEPText Text + | WEPBool Bool + deriving (Eq, Ord, Show, Read, Data, Generic, Typeable) + +deriveJSON defaultOptions + { constructorTagModifier = camelToPathPiece' 3 + } ''WorkflowEdgePayload + +type WorkflowEdgePayloadLabel = CI Text +data WorkflowGraphEdge = WGE + { wgeActors :: () -- TODO + , wgeTarget :: WorkflowGraphNode + , wgeForm :: Map Text (FieldType, FieldSettings UniWorX) + , wgePayload :: Map WorkflowEdgePayloadLabel WorkflowEdgePayload + } + deriving (Eq, Ord, Show, Read, Data, Generic, Typeable) +deriveJSON defaultOptions ''WorkflowGraphEdge + +data WorkflowGraph = WG + { wgNodes :: Set WorkflowGraphNode + , wgEdges :: Set WorkflowGraphEdge + } + deriving (Eq, Ord, Show, Read, Data, Generic, Typeable) +deriveJSON defaultOptions ''WorkflowGraph + + +{- +data WorkflowInstanceScope = WISGlobal + | WISTerm TermId + | WISSchool SchoolId + | WISCourse CourseId + deriving (Eq, Ord, Show, Read, Data, Generic, Typeable) + +deriveJSON defaultOptions + { constructorTagModifier = camelToPathPiece' 3 + } ''WorkflowInstanceScope +-}