複数の子フローとカスタム アクティビティを含む長期実行フローの更新に関する以前の質問に関連して、私はワークフローが本番環境にリリースされた後にワークフローを変更するための計画とコードの実装に取り組んでいます。
他の質問で概説されているさまざまな問題に加えて、動的更新の準備をした後、ごちゃごちゃに見えるビジュアルデザイナーをデバッグしようとしています。.xaml で差分を実行した後、WorkflowViewState が混乱するという問題があるようです。
以前の投稿によると、ビジュアル デザイナーを放棄することは、この問題を解決する 1 つの確実な方法のようです。しかし、私はほとんどそこに到達しているように見えるコードを見つけました。DynamicUpdateServices.PrepareForUpdate
メソッドを呼び出した後、 MainProcessFlow.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);
}
}
}
}
このメソッドを呼び出して、ビジュアル デザイナーで .xaml を開くと、アクティビティの順序が正しくありません。矢印が正しい方向を指しているという点で、フローはまだ「正しい」ですが、レイアウトはごちゃごちゃしています。変更を加え、更新マップを作成し、動的更新情報なしで .xaml を保存した後でも、順序は正しくありません。xaml での Viewstate の設定に関するドキュメント (私が見つけたもの) はあまりありません。何か不足していますか?
あるいは、ビジュアル デザイナーを放棄する方がよい選択肢でしょうか? 私たちはほぼ 1 年分のワークフローを持っているので、それは膨大な作業になりますが、DynamicUpdate を機能させることがより優先されます。