protected ConventionProcess() { var processType = GetType(); _transitionRouter = new ConventionProcessMessageRouter <TState>(processType); _descriptor = ProcessDescriptor.ScanByConvention(processType); }
public DefaultProcessDependencyFactory(IProcessDescriptor descriptor, Func <IProcess <TState> > processFactory, Func <IProcessStateFactory <TState> > processStateFactory) { RouteMapCreator = () => MessageRouteMap.New(descriptor); ProcessName = descriptor.ProcessType.BeautyName(); ProcessFactory = processFactory; ProcessStateFactory = processStateFactory; }
public Task RegisterProcess(IProcessDescriptor processDescriptor, string name = null) { var processHubActorType = typeof(ProcessHubActor <>).MakeGenericType(processDescriptor.StateType); var processHubActor = CreateDIActor(processHubActorType, name ?? processDescriptor.ProcessType.BeautyName() + "_Hub"); var processStateHubType = typeof(ProcessStateHubActor <>).MakeGenericType(processDescriptor.StateType); //will be consumed in ProcessActor var processStateHubActor = CreateDIActor(processStateHubType, processDescriptor.StateType.BeautyName() + "_Hub"); var processor = new ActorAskMessageProcessor <IProcessCompleted>(processHubActor); foreach (var acceptMsg in processDescriptor.AcceptMessages) { _processCatalog.Add(acceptMsg.MessageType, processor); } return(Task.CompletedTask); }
public static IMessageRouteMap New(IProcessDescriptor descriptor, string name = null) { return(new CustomRouteMap(name ?? $"map for {descriptor.GetType().Name}", r => r.RegisterProcess(descriptor))); }