2012-07-23 88 views
1

可能重複:
RESTful Workflow Service Endpoints in WF4/WCFWCF工作流服務REST接口

我試圖讓Windows工作流服務4.0工作與REST接口。我有一個非常簡單的工作流服務,名爲「Service1」,帶有一個receiveRequest和sendResponse活動。

默認情況下,WF服務自動生成實現的類和接口,但是我想強制WF服務使用我自己的啓用REST的接口而不是一些內部自動生成的接口。

的接口將是以下幾點:

[ServiceContract] 
public interface IService 
{ 
    [OperationContract] 
    [WebInvoke(UriTemplate = "/Data/{item}", Method = "GET")] 
    String GetData(Int32 item); 
} 

然而,我在配置XAML的困難與此接口的工作。 我需要一個像這樣的XAML配置,以指定服務合同的名字是我自己的合同:

<Receive x:Name="__ReferenceID0" CanCreateInstance="True" DisplayName="ReceiveRequest" sap:VirtualizedContainerService.HintSize="464,90" OperationName="GetData" ServiceContractName="w:IService"> 

然而,當我運行這個工作流服務我得到以下異常:

合同名稱無法在服務'Service1'實施的合同列表中找到'wfService.IService'。

然而,被幕後創建的服務沒有實現IService接口,我想知道我怎麼可以擴展得到由工作流引擎實例化的服務來實現自己的界面(我描述以上)?

謝謝

+0

看看@Maurice的答案[這裏](http://stackoverflow.com/questions/3678129/restful-workflow-service-endpoints-in-wf4-wcf)。 – 2012-08-21 12:46:04

回答

3

在WF4中,您不能在代碼中聲明ServiceContract並使用它。合同在XAML中聲明,WorkflowServiceHost從聲明中生成端點。

要啓用REST爲您workflowservice您有幾種選擇:

  1. 使用HttpWorkflowHost從http://wf.codeplex.com/wikipage?title=WebAPIWorkflow。限制是,那麼你將只有REST。
  2. 做同樣的事情到這一點:http://msdn.microsoft.com/en-us/library/aa967564.aspx 的差異是:更換WorkflowFormatterBehavior代替DataContractSerializerOperationBehavior,參數從消息契約,而不是經營合同提取,並記住,你不會有這個例子中的客戶端部分,你將不得不格式根據協議進行響應。