Пример #1
0
        public static SagaConfiguration <ISagaInstance <TSaga, TData>, SagaDataAggregate <TData> > Instance <TSaga, TData>(Func <object, ISagaInstance <TSaga, TData> > factory, ISagaDescriptor descriptor, Func <ISnapshotsPersistencePolicy> snapShotsPolicy = null)
            where TSaga : Saga <TData>
            where TData : class, ISagaState
        {
            var producer = new SagaProducer <ISagaInstance <TSaga, TData> >(descriptor, factory);


            return(new SagaConfiguration <ISagaInstance <TSaga, TData>, SagaDataAggregate <TData> >(producer, snapShotsPolicy));
        }
Пример #2
0
        public static SagaConfiguration <TSaga, TState> State <TSaga, TState, TFactory, TStartMessage>(ISagaDescriptor descriptor,
                                                                                                       Func <ISnapshotsPersistencePolicy> snapShotsPolicy = null,
                                                                                                       Func <IMemento, TState> snapshotsConstructor       = null)
            where TFactory : ISagaFactory <TSaga, TState>,
        ISagaFactory <TSaga, TStartMessage>,
        new()

            where TSaga : class, ISagaInstance
            where TState : AggregateBase
        {
            var producer = new SagaProducer <TSaga>(descriptor);
            var factory  = new TFactory();

            producer.Register <TState>(factory);
            producer.Register <TStartMessage>(factory);

            return(new SagaConfiguration <TSaga, TState>(producer, snapShotsPolicy, snapshotsConstructor));
        }
Пример #3
0
        public static SagaConfiguration <ISagaInstance <TSaga, TData>, SagaDataAggregate <TData> > Instance <TSaga, TData, TFactory, TStartMessageA, TStartMessageB>
            (ISagaDescriptor descriptor, Func <ISnapshotsPersistencePolicy> snapShotsPolicy = null, Func <IMemento, SagaDataAggregate <TData> > stateConstructor = null)
            where TSaga : Saga <TData>
            where TData : class, ISagaState
            where TFactory : ISagaFactory <ISagaInstance <TSaga, TData>, SagaDataAggregate <TData> >,
        ISagaFactory <ISagaInstance <TSaga, TData>, TStartMessageA>,
        ISagaFactory <ISagaInstance <TSaga, TData>, TStartMessageB>,
        new()
        {
            var producer = new SagaProducer <ISagaInstance <TSaga, TData> >(descriptor);
            var factory  = new TFactory();

            producer.Register <TStartMessageA>(factory);
            producer.Register <TStartMessageB>(factory);
            producer.Register <SagaDataAggregate <TData> >(factory);
            stateConstructor = stateConstructor ?? SagaDataAggregate <TData> .FromSnapshot;

            return(new SagaConfiguration <ISagaInstance <TSaga, TData>, SagaDataAggregate <TData> >(producer, snapShotsPolicy, stateConstructor));
        }
Пример #4
0
 public static SagaConfiguration <ISagaInstance <TSaga, TData>, SagaDataAggregate <TData> > Instance <TSaga, TData>
     (SagaProducer <ISagaInstance <TSaga, TData> > producer, Func <ISnapshotsPersistencePolicy> snapShotsPolicy = null) where TData : ISagaState
 {
     return(new SagaConfiguration <ISagaInstance <TSaga, TData>, SagaDataAggregate <TData> >(producer, snapShotsPolicy));
 }