我正在玩Jonathan Oliver的CommonDomain Saga Implementation。对于我来说,我实现了一个简单的传奇以及一个内存传奇存储库。我这样做是为了真正理解传奇在各种场景下的运作方式。在我加入NSB或其他框架之前,我需要使用它来更好地理解这个概念。
我不确定我是否正确使用此功能。 CommonDomain saga没有测试或示例实现。我使用saga作为它转换事件的事件处理程序。
这有意义吗?任何反馈都将不胜感激。
public class QueryExecutionSaga : SagaBase<IEvent<QueryExecutionID>>,
IEventHandler<QueryExecutedNow>,
IEventHandler<QueryExecutionCancelled>
{
public QueryID QueryID { get; private set; }
public QueryExecutionID QueryExecutionID { get; private set; }
public QueryExecutionSaga()
{
Register<QueryExecutedNow>(Handle);
Register<QueryExecutionCancelled>(Handle);
}
#region Implementation of IEventHandler<in QueryExecutedNow>
public void Handle(QueryExecutedNow theEvent)
{
ID = new SagaID(theEvent.Identity.Identifier);
QueryID = theEvent.QueryID;
QueryExecutionID = theEvent.Identity;
// send prepare query results command
}
#endregion
#region Implementation of IEventHandler<in QueryExecutionC.ancelled>
public void Handle(QueryExecutionCancelled theEvent)
{
// send notify sender command
}
#endregion
public void Handle(IEvent<IIdentity> e)
{
Transition(e);
}
}