サブ ワークフローのクラス ライブラリを開発中です。サブワークフローの作成に使用するアクティビティのセットがあります。これらのサブ ワークフローを、実際のワークフローの作成に使用できる再利用可能なワークフローとして開発したいと考えています。私は基本的に、実際のビジネス ワークフローを作成するために他のユーザーが使用できる既存のワークフローのクラス ライブラリを実装しています。私が望むのは、ユーザーが 1 つのサブ ワークフローを作成すると、それが自動的にワークフローのクラス ライブラリに追加され、コンパイルされ、実行時に再利用可能なコンポーネントとして利用可能になるはずです。
2 に答える
私はあなたの目標を理解していると信じていますが、あなたが信じているほど簡単ではありません.
最初の本能は、アクティビティをソリューションに追加し (追加 => 新しいアイテム => ワークフロー => アクティビティ)、他のアクティビティをデザイン サーフェイスにドラッグすることです。
これにより、再利用可能なワークフローが作成されますが、残念ながら、関連付けられた Designer はありません。そのため、別のユーザーがこれらのワークフローをツールボックスからドラッグして別のソリューションのワークフローで使用しようとすると、次のようになります。
それはまったく役に立ちません。別の方法は、 IActivityTemplateFactoryを実装するカスタム アクティビティを作成することです。このタイプ (と私は信じています*) をツールボックスに追加できます。それらをデザイン サーフェイスにドラッグすると、Createメソッドが呼び出されます。このメソッド内で、任意のワークフローを作成して返すことができます。このアクティビティ ツリーがワークフローに追加され、その中のすべてのアクティビティが表示されます。
*ツールボックスに表示するには、Activity を拡張する必要がある場合もあります。それについてはよくわかりません。アクティビティは、実際には使用されないダミーと考えてください。
これも役に立つかもしれません
WF 3 の顧客から頻繁に要求された 1 つのシナリオは、テンプレートまたは「グレー ボックス」または「穴のあるアクティビティ」を含める機能でした (上のスイスチーズの写真はそのためです)。WF4 では、ActivityAction を呼び出す方法でこれを行いました。