2011年5月9日月曜日

Workflow 上の Receive アクティビティと WCF での実装

Workflow 上で Receive アクティビティ等を利用し送受信を行うサービスを構築できるのは以前の記事などで書いた通りです。それをWCFでロジックを組んだ場合にどうなるか、というのを比較してみると各プロパティでの設定がなんとなくでも見えてくるかと思います。

1: <ServiceContract()>
2: Public Interface IService1
3: 
4:     <OperationContract()>
5:     Function GetData(ByVal value As Integer) As String
6: 
7: End Interface

このソースが Receive アクティビティを利用した場合をWCFにて表したソースとなります。アクティビティ上で OperationName プロパティで指定した名称はそのまま Function 名となり、WorkflowService の Name プロパティで指定したものがインターフェース名(≒クラス名)となります。Receive アクティビティの Content で指定したものは、Function の引数として定義、または DataContract 属性を付与したクラスとなります。

このような事を自動で行っているために、WCF ではできている事が Workflow 上ではできていない点もあります。一つが Function に対しての属性付加 ( WebGet とか ) で、これができないので REST サービスとしての Workflow が行えていません。

ただ上記のようなロジックを組み、コード上で Workflow を利用する形式であればRESTであろうと行えるので、やりようはあるのですが Workflow 単体では残念ながらまだ手段がわかっていません。

0 件のコメント:

コメントを投稿