Visual Studio 2008からRDSサービスを作成(4)(失敗編3)

まだ、解決しておりません。。。
よって、これも失敗例です。
「Visual Studio 2008からRDSサービスを作成(4)(失敗編2)」からの続きです。




  • AddPortTest.csに追加したReplaceのハンドラ(修正前)
        /// <summary>
        /// Replace Handler
        /// </summary>
        /// <param name ="replace"></param>
        /// <reteuns></returns>
        [ServiceHandler(ServiceHandlerBehavior.Exclusive)]
        public virtual IEnumerator<ITask> ReplaceHandler(Replace replace) 
        {
            _state = replace.ResponsePort;
            replace.ResponsePort(DefaultReplaceResponseType.Instance);
            yield break;
        }
    • 74行目(replace.ResponsePort(DefaultReplaceResponseType.Instance);の部分)

実行不可能なメンバ
'Microsoft.Dss.ServiceModel.Dssp.DsspOperation>.ResponsePort'をメソッドのように使用することはできません。

ResponsePortをメソッドのように使用することはできません。

なるほど。そういえば、一行上で

_state = replace.ResponsePort;

と指定しているのだから、もしかして不要なのかな。。。
コメントアウトしてみることにしました。

  • 修正後
        /// <summary>
        /// Replace Handler
        /// </summary>
        /// <param name ="replace"></param>
        /// <reteuns></returns>
        [ServiceHandler(ServiceHandlerBehavior.Exclusive)]
        public virtual IEnumerator<ITask> ReplaceHandler(Replace replace) 
        {
            _state = replace.ResponsePort;
            //replace.ResponsePort(DefaultReplaceResponseType.Instance);
            yield break;
        }

するとめでたくビルドの正常終了(≧▽≦)

ですが、喜ぶのはまだ早く。。。
この作成した「AddPortTest」をVPLから呼び出します。
今回、実験したかったことは・・・

「AddPortTest」ブロックを使ってValueを「Data」ブロックに入力した値で書き換える。

です。

1.「Data」ブロックをドラックアンドドロップし、Doubleg型に指定して、中央テキストボックスには「0.5」と入力します。
2.次に上記で作成した「AddPortTest」ブロックをドラックアンドドロップします。
3.「Data」ブロックと、AddPortTest」ブロックをつないでやるとConnectionsダイアログが表示され、To欄Getの下に上記でポートの追加を行った「Replace」が選択可能となっています。

  • From:DataValue
  • To:Replace

と指定し、OKボタンを押します。

つないだあとはこのような図になります。

4.次に、「AddPortTest」ブロックをもう一つ、ドラックアンドドロップし1個目の「AddPortTest」ブロックと

  • From:Replace-Success
  • To:Get

と指定し、OKボタンを押して接続します。

5.そして、「log」ブロックをドラックアンドドロップし、2個目の「AddPortTest」ブロックと

  • From:Get-Success
  • To:LogInfo

と指定し、OKボタンを押して接続します。

6.Data Connectionsダイアログが表示されるので、Target欄のMessage、Gategoryをvalueに指定します。


7.最終的なVPL図は以下のようになります。

この状態で実行し、Dataブロックに入力した値「0.5」がlogに表示されれば成功なのですが、タイムアウトエラーが発生してしまいました。

DsspForwarder:OutboundFailureHandler.Exception:操作がタイムアウトしました。
Action:http://schemas.microsoft.com/xw/2004/10/dssp.html:ReplaceRequest
Body Type:Microsoft.Dss.ServiceModel.Dssp.GetRequestType
Target Service:dssp.tcp://asa-xp:50001/addporttest/**********
Source Service:dssp.tcp://asa-xp:50001/model/addporttest

次回へ続く。。。
そろそろ成功編を書きたいな(;_;)