ASP.NET工作流调用ExternalMethod

ASP.NET工作流调用ExternalMethod,asp.net,workflow,Asp.net,Workflow,我不确定我是否遗漏了一些明显的东西,因为在ASP.NET中使用Windows工作流,我真的不知道如何将工作流的输出返回到ASP.NET工作流 我有自己的工作流设置来处理外部事件,所以我的网页可以调用它,这很好,但是如何再次获取信息呢?是否必须查询工作流对象才能找到所需的信息?这似乎是错的 我想我能做的是在工作流中使用CallExternalMethod,但由于运行时中只能有一个工作流外部数据服务实例,我不确定如何将其“附加”到各个页面 我发现的所有示例似乎都使用了页面工作流示例,其中工作流的输出

我不确定我是否遗漏了一些明显的东西,因为在ASP.NET中使用Windows工作流,我真的不知道如何将工作流的输出返回到ASP.NET工作流

我有自己的工作流设置来处理外部事件,所以我的网页可以调用它,这很好,但是如何再次获取信息呢?是否必须查询工作流对象才能找到所需的信息?这似乎是错的

我想我能做的是在工作流中使用CallExternalMethod,但由于运行时中只能有一个工作流外部数据服务实例,我不确定如何将其“附加”到各个页面

我发现的所有示例似乎都使用了页面工作流示例,其中工作流的输出(当调用CallExternalMethod时)只调用静态重定向方法。例如,如果我不想重定向,但将工作流的结果打印到页面,我如何“捕获”该信息以便在页面中使用?(假设运行时是从类似示例的包装器中调用的,因此不能只执行Label1.Text=bla,因为无法访问该变量)


编辑:还是使用工作流将任何内容持久化到数据库并让ASP.NET应用程序从那里查询给定的数据(因为实例GUID可以用作PK?

此链接包含有关在工作流中传入和传出信息的信息:

关于网页:
网页与上面链接中的WinForm示例的唯一区别在于,您需要使用MaualWorkflowSchedulerService(这将捐赠网页使用的线程,而不是为工作流运行时创建新线程)

因此,假设您在按钮单击中调用ExternalMethod,如下所示(DataEvents是您为句柄/调用外部方法添加到运行时的服务):

然后workflowEventsDataReceived的方法(通过您添加到WorkflowrunTime的服务)将能够更新您想要的所有标签,该方法是工作流中CallExternalMethod的目标


不确定这些是否清楚,但如果需要更多帮助,请告诉我,我上周末也遇到了同样的问题。

此链接包含有关在工作流中传递信息的信息:

关于网页:
网页与上面链接中的WinForm示例的唯一区别在于,您需要使用MaualWorkflowSchedulerService(这将捐赠网页使用的线程,而不是为工作流运行时创建新线程)

因此,假设您在按钮单击中调用ExternalMethod,如下所示(DataEvents是您为句柄/调用外部方法添加到运行时的服务):

然后workflowEventsDataReceived的方法(通过您添加到WorkflowrunTime的服务)将能够更新您想要的所有标签,该方法是工作流中CallExternalMethod的目标


不确定这些是否清楚,但如果需要更多帮助,请告诉我,我上周末也遇到了同样的问题。

这里您应该知道,调用CallExternalMethod的呼叫是排队的。它们不一定是立即处理的,这就是为什么这样做的原因,所以在运行时只有一个外部数据交换服务是可以的。在我看来,Cwoo的建议似乎是赢家。您应该知道的是,对CallExternalMethod的调用是排队的。它们不一定是立即处理的,这就是为什么这样做的原因,所以在运行时只有一个外部数据交换服务是可以的。在我看来,Cwoo的建议似乎是赢家。
    AddHandler DataEvents.DataReceived, AddressOf workflowEventsDataReceived    
    manualScheduler = WorkflowrunTime.GetService(GetType(Hosting.ManualWorkflowSchedulerService))
    DataEvents.OnGetDataReceived(New ExternalDataEventArgs(WorkflowInstance.InstanceId))
    manualScheduler.RunWorkflow(WorkflowInstance.InstanceId)