代码之家  ›  专栏  ›  技术社区  ›  Rosstified

ASP.NET工作流调用ExternalMethod

  •  1
  • Rosstified  · 技术社区  · 17 年前

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

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

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

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

    1 回复  |  直到 8 年前
        1
  •  1
  •   Cwoo    17 年前

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

    http://books.google.com/books?id=s5eVXpNmQxgC&pg=PA32&dq=pro+windows+workflow+foundation#PPA241,M1

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

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

        AddHandler DataEvents.DataReceived, AddressOf workflowEventsDataReceived    
        manualScheduler = WorkflowrunTime.GetService(GetType(Hosting.ManualWorkflowSchedulerService))
        DataEvents.OnGetDataReceived(New ExternalDataEventArgs(WorkflowInstance.InstanceId))
        manualScheduler.RunWorkflow(WorkflowInstance.InstanceId)
    

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

    推荐文章