Formerly WorkflowBackendActorFactory
, the new interface is BackendLifecycleActorFactory
:
trait BackendLifecycleActorFactory {
def getWorkflowInitializationActorProps(...): Option[Props] = ???
def getJobExecutionActorProps(...): Props = ???
def getWorkflowFinalizationActorProps(...): Option[Props] = ???
}
Each backend implements one of these, and it's referenced in the config file:
{
name = "Local"
class = "cromwell.engine.backend.local.LocalBackend" // old-style
shadow-class = "cromwell.backend.impl.local.LocalBackendLifecycleActorFactory" // new-style
config {
...
}
}
There are three lifecycle actors
WorkflowInitializationActor
currently has methodoverride def backendActor(backendName: String, callAssignments: Seq[Call]): Option[ActorRef]
BackendConfiguration
- loads configuration file and creates a Seq[BackendConfigurationEntry]
- Needs to be aware of
shadow-class
CromwellBackend
- contains initBackends
method which takes a Seq[BackendConfigurationEntry]
and sets a global Map[String, Backend]