このトピックの内容は、Windows Workflow Foundation 4 に該当します。
このサンプルでは、ワークフローに制約を適用する 2 種類の方法を示します。1 つはアクティビティの内部 (ビルド) から適用する方法で、もう 1 つはアクティビティの外部 (ポリシー) から適用する方法です。このシナリオでは、(サードパーティのソフトウェア会社の) アクティビティ作成者が 2 つの引数間のリレーションシップを検証します。ここでは、コストが価格以下になるようにする必要があります。これは、一般的な検証ビルド制約です。
次に、ショップ オーナーがこの一般的なアクティビティに検証を追加します。ここでは、製品のほとんどを $9.99 以下にします。したがって、CreateProduct
アクティビティに基づくポリシー制約を使用します。
このサンプルでは、次の操作を行います。
アクティビティ作成者 (ビルド) は、次を行う必要があります。
制約 (
PriceGreaterThanCost
) を作成します。ここには、すべての検証ロジックが存在します。OnGetConstraints をオーバーライドし、制約 (
PriceGreaterThanCost
) を制約 IList に追加します。
ワークフロー作成者 (ポリシー) は、次を行う必要があります。
検証するアクティビティのインスタンスを含むワークフローを作成します (
CreateProduct
)。制約 (
MaxPrice
) を作成します。ValidatorSettings インスタンス (
validatorSettings
) を作成し、制約 (MaxPrice
) をコレクションAdditionalConstraints
に追加します。ここで、ワークフロー作成者は、シーケンスや並列などのアクティビティにポリシー制約を追加できます。Validate を呼び出すと、ConstraintViolation オブジェクトの ValidationResults コレクションが返されます。
(省略可能) ConstraintViolation オブジェクトを出力します。
サンプルを設定、ビルド、および実行するには
Visual Studio 2010 で ConstraintTypes.sln サンプル ソリューションを開きます。
ソリューションをビルドして実行します。
![]() |
---|
サンプルは、既にコンピューターにインストールされている場合があります。続行する前に、次の (既定の) ディレクトリを確認してください。
<InstallDrive>:\WF_WCF_Samples
このディレクトリが存在しない場合は、「.NET Framework 4 向けの Windows Communication Foundation (WCF) および Windows Workflow Foundation (WF) のサンプル」にアクセスして、Windows Communication Foundation (WCF) および WF のサンプルをすべてダウンロードしてください。このサンプルは、次のディレクトリに格納されます。
<InstallDrive>:\WF_WCF_Samples\WF\Scenario\Validation\ConstraintLibrary
|