Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.NET-工作流、最终用户关系图、反射_.net_Sharepoint_Workflow_Workflow Foundation - Fatal编程技术网

.NET-工作流、最终用户关系图、反射

.NET-工作流、最终用户关系图、反射,.net,sharepoint,workflow,workflow-foundation,.net,Sharepoint,Workflow,Workflow Foundation,是否有任何工具可以反映Windows工作流或SharePoint工作流程序集,并生成.png或其他某种图像类型以呈现给用户?通过ASP.NET动态访问?或者如果没有这样的事情。。。您如何提供文档/最终用户文档 我对免费或非免费工具感兴趣。`根据您的需要/愿望,使用工作流设计器有几种方法 首先,您可以使用其中一个菜单保存工作流的图像。这是相当静态的,需要在设计时执行 更灵活的选择是在应用程序中重新设置工作流设计器的主体,并动态生成图像。下面的代码来自一个控制台应用程序,但我在ASP.NET中也做了

是否有任何工具可以反映Windows工作流或SharePoint工作流程序集,并生成.png或其他某种图像类型以呈现给用户?通过ASP.NET动态访问?或者如果没有这样的事情。。。您如何提供文档/最终用户文档


我对免费或非免费工具感兴趣。

`根据您的需要/愿望,使用工作流设计器有几种方法

首先,您可以使用其中一个菜单保存工作流的图像。这是相当静态的,需要在设计时执行

更灵活的选择是在应用程序中重新设置工作流设计器的主体,并动态生成图像。下面的代码来自一个控制台应用程序,但我在ASP.NET中也做了同样的操作。主要问题是,设计器是为在Visual Studio中使用而创建的,Visual Studio在MTA线程中运行,而ASP.NET使用STA线程。只需创建一个新的MTA线程,执行代码并等待它在主ASP.NET STA线程中完成,就可以开始了

Imports System.ComponentModel.Design
Imports System.ComponentModel.Design.
Imports System.Drawing.Imaging
Imports System.Workflow.Activities
Imports System.Workflow.ComponentModel
Imports System.Workflow.ComponentModel.Design

Module Module1
Sub Main()
    Dim workflow AsNew SequentialWorkflowActivity
    workflow.Activities.Add(New DelayActivity())

    Dim loader AsNew WorkflowLoader(workflow)
    Dim surface AsNew DesignSurface
    surface.BeginLoad(loader)
    Dim view AsNew WorkflowView(CType(surface, IServiceProvider))
    view.SaveWorkflowImage("workflow.png", ImageFormat.Png)

    Process.Start("workflow.png")
End Sub
End Module


Public Class WorkflowLoader
Inherits WorkflowDesignerLoader

Private _workflowDefinition As Activity

SubNew(ByVal workflowDefinition As Activity)
    _workflowDefinition = workflowDefinition
EndSub

ProtectedOverridesSub PerformLoad(ByVal serializationManager As IDesignerSerializationManager)
    MyBase.PerformLoad(serializationManager)

    Dim designerHost As IDesignerHost = Me.GetService(GetType(IDesignerHost))
    Dim allActivities As List(Of Activity) = WorkflowUtils.GetAllActivities(_workflowDefinition)

    ForEach item As Activity In allActivities
        designerHost.Container.Add(item, item.QualifiedName)
    Next
EndSub

Public Overrides ReadOnly Property FileName() As String
    Get
        Return""
    EndGet
End Property

PublicOverridesFunction GetFileReader(ByVal filePath AsString) As System.IO.TextReader
    ThrowNew NotSupportedException()
End Function

Public Overrides Function GetFileWriter(ByVal filePath AsString) As System.IO.TextWriter
    Throw New NotSupportedException()
End Function
End Class

`根据您的需要/愿望,有几种使用工作流设计器的方法

首先,您可以使用其中一个菜单保存工作流的图像。这是相当静态的,需要在设计时执行

更灵活的选择是在应用程序中重新设置工作流设计器的主体,并动态生成图像。下面的代码来自一个控制台应用程序,但我在ASP.NET中也做了同样的操作。主要问题是,设计器是为在Visual Studio中使用而创建的,Visual Studio在MTA线程中运行,而ASP.NET使用STA线程。只需创建一个新的MTA线程,执行代码并等待它在主ASP.NET STA线程中完成,就可以开始了

Imports System.ComponentModel.Design
Imports System.ComponentModel.Design.
Imports System.Drawing.Imaging
Imports System.Workflow.Activities
Imports System.Workflow.ComponentModel
Imports System.Workflow.ComponentModel.Design

Module Module1
Sub Main()
    Dim workflow AsNew SequentialWorkflowActivity
    workflow.Activities.Add(New DelayActivity())

    Dim loader AsNew WorkflowLoader(workflow)
    Dim surface AsNew DesignSurface
    surface.BeginLoad(loader)
    Dim view AsNew WorkflowView(CType(surface, IServiceProvider))
    view.SaveWorkflowImage("workflow.png", ImageFormat.Png)

    Process.Start("workflow.png")
End Sub
End Module


Public Class WorkflowLoader
Inherits WorkflowDesignerLoader

Private _workflowDefinition As Activity

SubNew(ByVal workflowDefinition As Activity)
    _workflowDefinition = workflowDefinition
EndSub

ProtectedOverridesSub PerformLoad(ByVal serializationManager As IDesignerSerializationManager)
    MyBase.PerformLoad(serializationManager)

    Dim designerHost As IDesignerHost = Me.GetService(GetType(IDesignerHost))
    Dim allActivities As List(Of Activity) = WorkflowUtils.GetAllActivities(_workflowDefinition)

    ForEach item As Activity In allActivities
        designerHost.Container.Add(item, item.QualifiedName)
    Next
EndSub

Public Overrides ReadOnly Property FileName() As String
    Get
        Return""
    EndGet
End Property

PublicOverridesFunction GetFileReader(ByVal filePath AsString) As System.IO.TextReader
    ThrowNew NotSupportedException()
End Function

Public Overrides Function GetFileWriter(ByVal filePath AsString) As System.IO.TextWriter
    Throw New NotSupportedException()
End Function
End Class