問題タブ [workflow-foundation-4.5]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
.net - .NET ワークフロー: コードによる状態間の遷移
私はバグ追跡用の単純なアプリを構築しています。また、バグの状態 (報告済み、割り当て済み、完了) を表す個々の状態を持つステート マシンを備えた .NET ワークフロー アクティビティ ライブラリ プロジェクトを使用しています。
WorkflowInspectionServices クラスを使用して、各状態のバグの状態遷移のリストを取得できます。ただし、次のことを試みています。
- 特定のバグの現在の状態を判断し、
- トリガー条件を使用せずに現在の状態を変更します (ユーザーがドロップダウンから状態を選択したときにコードを介して変更をトリガーしたい)
- ワークフロー内の変数の値を読み取る
.NET ワークフローでこれらを行うにはどうすればよいですか?
workflow-foundation-4.5 - 実行中のワークフローを dynamicUpdateMap で更新する
ワークフローを実行していて、動的に更新しようとしています。これはフローチャートで、FlowStep の Next プロパティを変更しようとしています。問題は、WorkflowApplication.Load(workflowApplicationInstance, map); をロードするときです。マップのあるインスタンス、エラーが発生しました:
実装マップをワークフロー インスタンスに直接適用するには、定義のルートにパブリック/インポートされた子またはパブリック/インポートされたデリゲートが含まれていてはなりません。
マップをファイルとデータベースに保存しようとしましたが、他の例で見たように、マップは file.xml の file.xaml ではなく、拡張子 file.map で保存されます。とにかく駄目でした、まだロードされていません。
c# - WF4.5 動的更新 - カスタム アクティビティを使用して実行時間の長い大規模なフローを更新する際の問題
私は、何年も何十年も続く可能性がある大規模なワークフローの更新プロセスの実装に取り組んでいます。私は、以前の開発者が中断したところを取り上げています。既存のコード (Microsoft が提供する例にほとんど基づいている) を機能させるために 1 週間を費やした後、それを破棄し、独自の WorkflowVersioning ユーティリティを構築しました。永続化されたインスタンスを新しいバージョンに正常に更新できましたが、テストでは、さまざまな変更により、更新プロセス中および影響を受けるワークフローの再開時に例外が発生する可能性があることがわかりました. 私たちのワークフローは複雑であるため、やるべきことはまだあると思いますが、現時点では攻撃の計画はありません。
私が直面している 2 つの特定の問題と、コードの重要な部分をリストしました。コードの他の部分を提供する必要がある場合は、お知らせください。さらに、同様の状況で DynamicUpdate を実装したことがある場合、または役立つリソース、コード例、またはその他のドキュメントを知っている場合は、これで得られるあらゆる支援を歓迎します! WF (および一般的な専門能力開発) は初めてなので、これはかなりの学習プロセスであり、WF4.5 に固有のリソースを見つけるのに苦労しました。
バックグラウンド
現在開発中の 3 つの主要なビジネス プロセスは、それぞれが複数の子フローを持つ大きなフローで構成されており、それ自体が多くのカスタム アクティビティから構築されています。各プロセス内の主要なステップ (「タスク」と呼びます) は、NativeActivity と、Xaml デザイン サーフェイスにドラッグされたいくつかの CodeActivity で構成されます。(デザイナーの動作にも問題がありますが、別の質問のために保存します)。
特定の問題
1) フローを変更するときに、引数を追加または削除すると、更新の適用時に例外が発生します。
MSDN によると (3 番目のリンクを投稿することはできません。コメントに追加します)、引数を追加および削除できるはずです。これを説明するためにさらにコードが必要ですか? 控えめに言っても、Google の検索結果は薄いものでした。ただし、生成された DynamicUpdateMap を分析すると、New および Old 引数が追跡されていることがわかります。
2) メイン フローに変数を追加すると、タスクの再開時に例外が発生しました。
私が見つけた唯一の結果は、IIS に関するこの投稿でしたが、Visual Studio からデスクトップ アプリケーションを実行しているだけなのに、なぜこのエラーが発生するのでしょうか? この方向に私を向ける他の結果を見つけることができないようです..
WorkflowVersioning ユーティリティ プロジェクト
免責事項: このコードの多くは、Matt Milner の WF4.5pluralsight course のおかげです。実際の DynamicUpdate プロセスの例をもっと見たいと思っていますが、今のところ:
更新のためのフローの準備
まず、メイン プロセス (親ワークフロー) の .xaml から ActivityBuilder を取得します。
次に、PrepareForUpdate を呼び出します。
次に、追加された DynamicUpdate メタデータを使用して、ActivityBuilder をファイルに保存し直します。
更新プロセスの準備を実行した後、デザイナーを使用してワークフローを変更するか、引数/変数/アクティビティを追加/削除して NativeActivities を変更します。
DynamicUpdateMap の作成
ワークフローに必要な変更を加えた後、動的更新マップを生成します。
影響を受けるインスタンスに更新マップを適用する
最後に、各インスタンスを永続的に繰り返し処理し、更新を適用します。
c# - ビジュアル デザイナーを使用した動的更新: フローをコードに変換することは可能ですか?
複数の子フローとカスタム アクティビティを含む長期実行フローの更新に関する以前の質問に関連して、私はワークフローが本番環境にリリースされた後にワークフローを変更するための計画とコードの実装に取り組んでいます。
他の質問で概説されているさまざまな問題に加えて、動的更新の準備をした後、ごちゃごちゃに見えるビジュアルデザイナーをデバッグしようとしています。.xaml で差分を実行した後、WorkflowViewState が混乱するという問題があるようです。
以前の投稿によると、ビジュアル デザイナーを放棄することは、この問題を解決する 1 つの確実な方法のようです。しかし、私はほとんどそこに到達しているように見えるコードを見つけました。DynamicUpdateServices.PrepareForUpdate
メソッドを呼び出した後、 MainProcessFlow.xaml をファイルに保存する方法は次のとおりです。
このメソッドを呼び出して、ビジュアル デザイナーで .xaml を開くと、アクティビティの順序が正しくありません。矢印が正しい方向を指しているという点で、フローはまだ「正しい」ですが、レイアウトはごちゃごちゃしています。変更を加え、更新マップを作成し、動的更新情報なしで .xaml を保存した後でも、順序は正しくありません。xaml での Viewstate の設定に関するドキュメント (私が見つけたもの) はあまりありません。何か不足していますか?
あるいは、ビジュアル デザイナーを放棄する方がよい選択肢でしょうか? 私たちはほぼ 1 年分のワークフローを持っているので、それは膨大な作業になりますが、DynamicUpdate を機能させることがより優先されます。
c# - ワークフローC#で引数の値を設定する
Windows Workflow Foundation .NET 4.5.2 を使用しています。CodeActivity 内からデザイナーで型の引数bool
(変数の場合もある) を設定することに関して問題があります。
デザイナーではnewProject
、 typeの引数bool
を directionで設定しますIn
。(それは別の方向を持つべきですか?すなわちInOut
)。
コードでは、引数を designer から value に設定したいと考えていますtrue
。
デザイナでの引数は、次の状態への移行を可能にする遷移で検証されます。であればtrue
、次の状態に進むことができます。問題は、デザイナーの引数が上記のコードで設定された新しい値を受け取らないことです。どうすればそれができますか?
c#-6.0 - InvokeMethod アクティビティがオブジェクトを返す場合、ワークフローで変数を割り当てる方法は?
Windows Workflow Foundation に InvokeMethod アクティビティがあります。このワークフローは非常に単純です。
- ユーザーに身長を尋ねる
- 身長が 5.9 を超える場合は、プロフィールの詳細を尋ねる
- プロフィールの詳細を表示する
これを実現するために、以下に示すワークフローを作成しました。
InvokeMethod から返されるオブジェクトを変数として割り当てるにはどうすればよいですか?
コードを GitHub に投稿しました。