jik*_*ess 21 asp.net workflow xaml workflow-foundation-4
我需要在asp.net网页中显示文档审批工作流任务的当前状态,并突出显示特定活动.
我已经看过Visual工作流跟踪器示例(在wf和wcf示例中),但我有两个问题,
我必须在asp.net中渲染工作流而不是在WPF应用程序中.
我不需要显示工作流运行的当前状态,所有需要突出显示的活动都是需要用户输入的活动.例如"等待部门主管批准"等
如果我可以通过活动ID"创建书签并等待恢复书签"突出显示特定活动后将工作流XAML转换为JPG,那么它将完成工作.
检查附件中是否要在asp.net页面上呈现所需的工作流图像:
首先将工作流程加载到设计器中。
您应该已经知道您想要突出显示的“活动”。工作流程中有选择服务,您可以使用它来选择适当的模型项。此示例显示了单个选择,但也有多个选择。
ModelService modelService = wd.Context.Services.GetService<ModelService>();
IEnumerable<ModelItem> activityCollection = modelService.Find(modelService.Root, typeof(Activity));
Selection.Select(wd.Context, activityCollection.ElementAt(5));
Run Code Online (Sandbox Code Playgroud)
在工作流程设计器上有一个按钮可以将工作流程复制为图像或类似的内容。此链接将向您展示如何从 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();
}
Run Code Online (Sandbox Code Playgroud)
作为补充说明,您应该查看 Kushals 示例: http://blogs.msdn.com/b/kushals/archive/2009/12/22/visualworkflowtracking-aka-workflowsimulator.aspx
| 归档时间: |
|
| 查看次数: |
3147 次 |
| 最近记录: |