21

特定のアクティビティを強調表示して、asp.net Web ページでドキュメント承認ワークフロー タスクの現在のステータスを表示する必要があります。

ビジュアル ワークフロー トラッカーの例 (wf & wcf サンプル) を見てきましたが、2 つの問題があります。

  1. WPF アプリではなく、asp.net でワークフローをレンダリングする必要があります。

  2. ワークフローの実行中に現在のステータスを表示する必要はありません。強調表示する必要があるすべてのアクティビティは、ユーザー入力が必要なものです。例:「部長からの承認待ち」など

「ブックマークを作成し、ブックマークの再開を待っている」アクティビティIDで特定のアクティビティを強調表示した後、ワークフローXAMLをJPGに変換できれば、それでうまくいきます。

asp.net ページでレンダリングするために必要なワークフロー イメージについては、添付ファイルを確認してください。

現在のアクティビティが強調表示されたワークフロー (再開待ち)

4

1 に答える 1

1

まず、ワークフローをデザイナーに読み込みます。

強調表示する「アクティビティ」を既に知っている必要があります。ワークフローには、適切なモデル アイテムを選択するために使用できる選択サービスがあります。この例では単一の選択を示していますが、複数あります。

ModelService modelService = wd.Context.Services.GetService<ModelService>();
        IEnumerable<ModelItem> activityCollection = modelService.Find(modelService.Root, typeof(Activity));
        Selection.Select(wd.Context, activityCollection.ElementAt(5));

ワークフロー デザイナーには、ワークフローをイメージとしてコピーするボタンなどがあります。このリンクは、WorkflowDesigner.View から jpg を取得する方法を示します。 http://social.msdn.microsoft.com/Forums/en-US/wfprerelease/thread/b781c8df-608a-485a-80e3-a795d800f08d

        const double DPI = 96.0;

        Rect size = VisualTreeHelper.GetDescendantBounds(view);
        int imageWidth = (int)size.Width;
        int imageHeight = (int)size.Height;

        RenderTargetBitmap renderBitmap = new RenderTargetBitmap(imageWidth, imageHeight, DPI, DPI, PixelFormats.Pbgra32);
        renderBitmap.Render(view);
        BitmapFrame bf = BitmapFrame.Create(renderBitmap);

        using (FileStream fs = new FileStream(@"c:\test.jpg", FileMode.Create))
        {
            JpegBitmapEncoder encoder = new JpegBitmapEncoder();
            encoder.Frames.Add(BitmapFrame.Create(bf));
            encoder.Save(fs);
            fs.Close();
        }

追加のメモとして、Kushals の例を確認してください: http://blogs.msdn.com/b/kushals/archive/2009/12/22/visualworkflowtracking-aka-workflowsimulator.aspx

于 2011-04-04T02:39:07.617 に答える