2010-05-08 4 views
21

Devo visualizzare lo stato corrente di un'attività di flusso di lavoro di approvazione di un documento nella pagina Web di asp.net con un'attività specifica evidenziata.WF4 - Visualizza l'immagine del flusso di lavoro in asp.net ed evidenzia un'attività

ho visto l'esempio del flusso di lavoro di Visual Tracker (in wf & WCF campioni) ma ho due problemi,

  1. devo rendere il flusso di lavoro in asp.net non in un'applicazione WPF.

  2. Non ho bisogno di visualizzare lo stato corrente con il flusso di lavoro in esecuzione, tutte le attività che devono essere evidenziati sono quelli che richiedono l'input dell'utente. per esempio. "In attesa di approvazione da capo dipartimento", ecc

Se solo potessi convertire il flusso di lavoro XAML JPG dopo aver evidenziato una specifica attività per attività id "che ha creato un segnalibro e in attesa di ripresa il segnalibro" che avrebbe fatto il lavoro.

controllo il file allegato immagine del flusso di lavoro richiesti per per essere reso a pagina asp.net:

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

+0

sembra come se non è (direttamente) fattibile, se gli esempi utilizzano Rehosting il progettista: http://stackoverflow.com/domande/2593302/windows-workflow-fondazione-4-WF4-rehosting – TrueWill

risposta

1

primo carico il flusso di lavoro nella finestra di progettazione.

Si dovrebbe già conoscere l'attività che si desidera evidenziare. È disponibile un servizio di selezione nel flusso di lavoro che è possibile utilizzare per selezionare gli elementi del modello appropriati. Questo esempio mostra una selezione singola, ma ce ne sono molti.

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

Nella finestra di progettazione del flusso di lavoro è presente un pulsante per copiare il flusso di lavoro come immagine o qualcosa del genere. Questo link ti mostrerà come ottenere il jpg da WorkflowDesigner.View. 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(); 
     } 

Come aggiunta nota si dovrebbe verificare Kushals esempio: http://blogs.msdn.com/b/kushals/archive/2009/12/22/visualworkflowtracking-aka-workflowsimulator.aspx