2011-07-24 48 views
0

如何在控制台应用程序中托管工作流程?我搜索了足够多,没有找到任何好的示例。在.NET 4中托管控制台应用程序中的工作流程

+0

我敢肯定,必须有样品在那里.... –

+0

叹息。工作流程控制台应用程序*的*模板已完成100%。您只需将活动添加到工作流程中即可。 – Will

回答

3

我很惊讶你找不到一个例子,因为大多数基本的例子都是使用控制台应用程序完成的。例如这一个。

工作流运行时间与主机类型无关,所以像这样的东西在控制台应用程序中工作得很好,或者在ASP.NET或WPF应用程序中工作得很好。

var workflow = new Workflow1(); 
workflow.FirstName = "Maurice"; 
workflow.LastName = "de Beijer"; 

var result = WorkflowInvoker.Invoke(workflow); 
Console.WriteLine(result["Greeting"]); 
+0

我是WF的新手,我对使用上述代码片段来调用工作流或托管工作流有怀疑吗?我希望将工作流程托管在独立的进程中,如控制台应用程序和另一个控制台应用程序(客户端)。我将调用工作流程。 – VJAI

+1

所以你想使用工作流服务并通过WCF与它交互?在这种情况下,您将从WorkflowServiceHost开始,并将接收活动添加到您的工作流以接收WCF消息。 – Maurice

+0

谢谢莫里斯。 WorkflowService是我需要的。 – VJAI

0

我已经做了类似如下,其中“FeedManager”是控制台应用程序,ProcessAllImports和ProcessAllExportFeeds是代码或XAML活动。它简单但运作良好。 希望这有助于...

class FeedManager 
{ 
    static void Main(string[] args) 
    { 
     FeedManager fm = new FeedManager(); 
     fm.Run(args); 
    } 

    private int Run(string[] args) 
    { 
     ProcessAllImports importProcess = new ProcessAllImports(); 
     List<Feed> importFeedSuccesses = new List<Feed>(); 
     List<Feed> importFeedsFailure = new List<Feed>(); 

     ProcessAllExportFeeds exportProcess = new ProcessAllExportFeeds(); 
     List<Feed> exportFeedSuccesses = new List<Feed>(); 
     List<Feed> exportFeedsFailure = new List<Feed>(); 

     try 
     { 
      IDictionary<string, object> importFeedsArgs = new Dictionary<string, object> 
      { 
       { "FeedsSuccess", importFeedSuccesses }, 
       { "FeedsFailure", importFeedsFailure }, 
      }; 
      var importOutput = WorkflowInvoker.Invoke(importProcess, importFeedsArgs); 
      bool importSuccess = (bool)importOutput["Success"]; 
      importFeedSuccesses = (List<Feed>)importOutput["FeedsSuccess"]; 
      importFeedsFailure = (List<Feed>)importOutput["FeedsFailure"]; 

      IDictionary<string, object> exportFeedsArgs = new Dictionary<string, object> 
      { 
       { "FeedsSuccess", exportFeedSuccesses }, 
       { "FeedsFailure", exportFeedsFailure }, 
      }; 
      var exportOutput = WorkflowInvoker.Invoke(exportProcess, exportFeedsArgs); 
      bool exportSuccess = (bool)exportOutput["Success"]; 
      exportFeedSuccesses = (List<Feed>)exportOutput["FeedsSuccess"]; 
      exportFeedsFailure = (List<Feed>)exportOutput["FeedsFailure"]; 

     } 
     catch (Exception e) 
     { 
      return -1; 
     } 
相关问题