私の以前の質問updating long-running flows with multiple child flows and custom activitiesに関連して、プロダクションにリリースされた後にワークフローを変更するための計画とコードを実装しています。ビジュアルデザイナを使用した動的更新:フローをコードに変換することは可能ですか?
他の質問に記載されているさまざまな問題のほかに、私はビジュアルデザイナをデバッグしようとしていますが、ダイナミックアップデートのためにそれを準備した後に混乱しています。 .xamlでdiffを実行すると、WorkflowViewStateが混乱する問題があるようです。
previous postsによれば、ビジュアルデザイナーを放棄することは、この問題を解決する確実な方法の1つです。しかし、私はと思われるコードを見つけました。ほぼが私にそこにいます。このメソッドを呼び出すと、ビジュアルデザイナでの.xamlを開いた後
private static void SaveBuilderToFile(ActivityBuilder builder, string filePath)
{
// Make sure the activity builder has the right information about the c# expressions (even though its visual basic)
VisualBasic.SetSettings(builder, VisualBasic.GetSettings(builder));
// Set c# as the language
System.Activities.Presentation.Expressions.ExpressionActivityEditor.SetExpressionActivityEditor(builder, "C#");
// This is what I was hoping would correctly set the Viewstate
WorkflowViewState.SetViewStateManager(
builder.Implementation, WorkflowViewState.GetViewStateManager(builder.Implementation));
string fullPath = Path.GetFullPath(filePath);
using (FileStream file = File.Create(fullPath))
{
using (XmlWriter xmlWriter = XmlWriter.Create(file, new XmlWriterSettings { Indent = true, OmitXmlDeclaration = true }))
{
using (XamlWriter xamlWriter = ActivityXamlServices.CreateBuilderWriter(new XamlXmlWriter(xmlWriter, new XamlSchemaContext())))
{
XamlServices.Save(xamlWriter, builder);
}
}
}
}
、活動は順不同である:ここで私はDynamicUpdateServices.PrepareForUpdate
メソッドを呼び出した後、バックファイルへのMainProcessFlow.xamlを保存しています方法です。矢印は正しい方向を向いていますが、レイアウトは混乱しています。変更を行った後、更新マップを作成し、.xamlをdynamicupdate情報なしで保存すると、順序は間違いです。 ViewStateをxamlに設定することについては、(私が見つけることができる)非常に多くのドキュメントはありません。何か不足していますか?
また、ビジュアルデザイナーはより良い選択肢を放棄していますか?ワークフローは1年近くしかかかりませんでした。そのため、大規模な取り組みになるでしょうが、DynamicUpdateを稼動させることが優先されます。
ビジュアルデザイナーを捨てるのではなく、ワークフローファンデーションを完全に放棄し、独自のワークフローエンジンを導入しました。 – alaskanloops