-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Scientific workflow management system -- -- SciFlow is to help programmers design complex workflows with ease. @package SciFlow @version 0.4.1 module Scientific.Workflow.Types -- | An abstract type representing the database used to store states of -- workflow data WorkflowDB WorkflowDB :: FilePath -> WorkflowDB data Workflow [Workflow] :: (Processor () o) -> Workflow -- | The id of a node type PID = Text -- | The state of a computation node data ProcState Success :: ProcState Scheduled :: ProcState Fail :: SomeException -> ProcState data WorkflowState WorkflowState :: WorkflowDB -> Map PID ProcState -> WorkflowState [_db] :: WorkflowState -> WorkflowDB [_procStatus] :: WorkflowState -> Map PID ProcState db :: Lens' WorkflowState WorkflowDB procStatus :: Lens' WorkflowState (Map PID ProcState) type Processor a b = a -> StateT WorkflowState (ExceptT SomeException IO) b data RunOpt RunOpt :: FilePath -> RunOpt [_dbPath] :: RunOpt -> FilePath defaultRunOpt :: RunOpt dbPath :: Iso' RunOpt FilePath class Serializable a serialize :: Serializable a => a -> ByteString deserialize :: Serializable a => ByteString -> a data Attribute defaultAttribute :: Attribute label :: Lens' Attribute Text note :: Lens' Attribute Text def :: State a () instance (Data.Aeson.Types.Class.FromJSON a, Data.Aeson.Types.Class.ToJSON a) => Scientific.Workflow.Types.Serializable a module Scientific.Workflow.DB openDB :: FilePath -> IO WorkflowDB readData :: Serializable r => PID -> WorkflowDB -> IO r saveData :: Serializable r => PID -> r -> WorkflowDB -> IO () isFinished :: PID -> WorkflowDB -> IO Bool getKeys :: WorkflowDB -> IO [PID] module Scientific.Workflow.Builder -- | Declare a computational node node :: ToExpQ q => PID -> q -> State Attribute () -> Builder () -- | many-to-one generalized link function link :: [PID] -> PID -> Builder () -- | (~>) = link. (~>) :: [PID] -> PID -> Builder () -- | singleton path :: [PID] -> Builder () type Builder = State ([Node], [Edge]) -- | Build the workflow. buildWorkflow :: String -> Builder () -> Q [Dec] -- | Build only a part of the workflow that has not been executed. This is -- used during development for fast compliation. buildWorkflowPart :: State RunOpt () -> String -> Builder () -> Q [Dec] getWorkflowState :: FilePath -> IO WorkflowState -- | Contruct a DAG representing the workflow mkDAG :: Builder () -> DAG instance Language.Haskell.TH.Syntax.Lift Data.Text.Internal.Text instance Scientific.Workflow.Builder.ToExpQ Language.Haskell.TH.Syntax.Name instance Scientific.Workflow.Builder.ToExpQ Language.Haskell.TH.Lib.ExpQ module Scientific.Workflow.Visualize -- | Print the computation graph renderBuilder :: Builder () -> Text module Scientific.Workflow runWorkflow :: [Workflow] -> State RunOpt () -> IO () getWorkflowState :: FilePath -> IO WorkflowState