2010-05-08 55 views
21

我需要在突出顯示的特定活動的asp.net網頁中顯示文檔審批工作流任務的當前狀態。WF4 - 在asp.net中顯示工作流圖像並突出顯示活動

我所看到的可視化工作流跟蹤器示例(WF & WCF示例),但我有兩個問題,

  1. 我要呈現在asp.net工作流程不是一個WPF應用程序。

  2. 我不需要在工作流程運行時顯示當前狀態,所有需要突出顯示的活動都是需要用戶輸入的活動。例如「等待從部門負責人審批」等

如果我能轉換工作流程XAML爲JPG通過「創建書籤,等待恢復書籤」活動ID突出特定活動後會做工作。

檢查asp.net頁面上呈現所需的工作流程圖像附加的文件:

Workflow with current activity highlighted (that is waiting to be resumed)

+0

看起來好像它不(直接)是可行的,如果實例的轉換主機的設計:http://stackoverflow.com /問題/ 2593302/Windows的工作流基礎-4-WF 4,應用移植 – TrueWill 2011-02-15 02:20:20

回答

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