2010-05-08 13 views
21

Necesito mostrar el estado actual de una tarea de flujo de trabajo de aprobación de documentos en la página web asp.net con una actividad específica resaltada.WF4 - Mostrar imagen de flujo de trabajo en asp.net y resaltar una actividad

he visto el ejemplo de Visual flujo de trabajo de seguimiento (en WF & WCF muestras) pero tengo dos problemas,

  1. tengo que rendir flujo de trabajo en asp.net no en una aplicación de WPF.

  2. No necesito mostrar el estado actual con el flujo de trabajo en ejecución, todas las actividades que necesitan ser resaltadas son las que requieren la entrada del usuario. p.ej. "En espera de la aprobación del jefe de departamento", etc.

Si tan sólo pudiera convertir el flujo de trabajo XAML a JPG después de resaltar una actividad específica por la actividad id "que creó un marcador y en espera de la reanudación el marcador" que haría la obra.

cheque el archivo adjunto de imagen del flujo de trabajo requerido para que se prestarán en la página asp.net:

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

+0

parece como si no lo es (directamente) factible, si los ejemplos utilizan rehosting el diseñador: http://stackoverflow.com/questions/2593302/windows-workflow-foundation-4-wf4-rehosting – TrueWill

Respuesta

1

primera carga del flujo de trabajo en el diseñador.

Ya debe saber la 'actividad' que desea resaltar. Existe un servicio de selección en el flujo de trabajo que puede usar para seleccionar los elementos del modelo apropiados. Este ejemplo muestra una selección única, pero hay múltiples.

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

En el diseñador de flujo de trabajo, hay un botón para copiar el flujo de trabajo como imagen o algo similar. Este enlace le mostrará cómo obtener el jpg de 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(); 
     } 

Como un agregado en cuenta que debe salir Kushals ejemplo: http://blogs.msdn.com/b/kushals/archive/2009/12/22/visualworkflowtracking-aka-workflowsimulator.aspx

Cuestiones relacionadas