1

複数の子フローとカスタム アクティビティを含む長期実行フローの更新に関する以前の質問に関連して、私はワークフローが本番環境にリリースされた後にワークフローを変更するための計画とコードの実装に取り​​組んでいます。

他の質問で概説されているさまざまな問題に加えて、動的更新の準備をした後、ごちゃごちゃに見えるビジュアルデザイナーをデバッグしようとしています。.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 を機能させることがより優先されます。

4

1 に答える 1