承認プロセスをモデル化する必要があります。以前はかなり単純でした。2 つのロールが何かを承認する必要があり、その後、次のステップに進むことができました。
public class Approved
{
public string ApproverRole;
}
var approvals = Subscribe<Approved>();
var vpOfFinance = approvals.Where(e => e.ApproverRole == "Finance VP");
var vpOfSales = approvals.Where(e => e.ApproverRole == "Sales VP");
var approvedByAll = vpOfFinance.Zip(vpOfSales, Tuple.Create);
approvedByAll.Subscribe(_ => SomeInterestingBusinessProcess());
ただし、新しい要件があります。何かを承認するために必要な役割の数はさまざまです。
public class ApprovalRequested
{
public string[] Roles;
}
var approvalRequest = Subscribe<ApprovalRequested>().Take(1);
var approvals = Subscribe<Approved>();
var approvedByAll = ???;
approvedByAll.Subscribe(_ => SomeInterestingBusinessProcess());
ここでかなり明白な何かが欠けているように感じます...誰かが私を正しい方向に向けることができますか?
編集
明確にするために: 承認プロセスは項目ごとに行われます。承認が到着する順序は定義されていません。1 つのロールが項目を複数回承認してもかまいません。