Archive for 7 月 31st, 2008

InfoPath 2007を利用したSharePoint Webサービス連携

木曜日, 7 月 31st, 2008

InfoPath 2007にはWebサービス接続が用意されています。一方、MOSSもWebサービスが用意されています。MOSSが用意しているWebサービスは、IIS マネージャからみると、http://server:port/_vti_bin/***.asmxに各種Webサービスが揃っています。

では、まずInfoPathを開き、フォームテンプレートのデザインWebサービスを選択します。次にデータ接続ウィザードが起動します。

  1. 1番目の画面でデータの受信と送信を選択します。
  2. 2番目の画面でWebサービスを選択します。今回は、http://server:port/_vti_bin/search.asmx?WSDLを入力します。
  3. 3番目の画面でQueryを選択します。
  4. 4番目の画面では、適当な名前(既定はメインクエリ)を入力します。
  5. 5番目の画面では、上記で入力したWebサービスのURLが入力されていることを確認し、次へを押します。
  6. 6番目の画面では、Queryを選択します。
  7. 7番目の画面では、パラメータオプションフィールドまたはグループqueryXMLを選択します。
  8. 8番目の画面では、適当な名前(既定はメイン送信)を入力します。
これで、基本的な設定は完了です。そうすると下図のような画面がでてきます。

0731-01.jpg

あとは、queryXMLここにクエリフィールドをドラックしてくださいと記載されている領域にドラッグ&ドロップします。同様にQueryResultをここにデータフィールドをドラッグしてくださいと記載されている領域にドラッグ&ドロップします。次にプレビューを押します(下図になります)。
0731-021.jpg

そして、Query XMLに検索文字を入力し、クエリの実行ボタンを押すと、Qurey Resultに検索結果のXMLが表示されます!
0731-03.jpg

これだけの操作でWebサービスの動作確認ができるなんて楽です!また、他のWebサービスを利用すると、InfoPathフォームを利用した管理ツールなどを利用できる??アクセス権の一覧とか出せたら…

ちなみにQueryではなく、QueryExを選択するとちょっと変わります。

まず、途中でサンプル値を入力する必要があります。下記の例はSharePointという文字で、特に検索範囲を決めない場合です。

<?xml version="1.0" encoding="utf-8" ?>

<QueryPacket xmlns="urn:Microsoft.Search.Query" Revision="1000">

<Query domain="QDomain">

<SupportedFormats>

<Format>urn:Microsoft.Search.Response.Document.Document</Format>

</SupportedFormats>

<Context>

<QueryText language="en-US" type="MSSQLFT">

<![CDATA[ SELECT Title, Rank, Size, Description, Write, Path FROM portal..scope() WHERE CONTAINS ('"sharepoint*"')  ORDER BY "Rank" DESC]]>

</QueryText>

</Context>

<Range>

<StartAt>1</StartAt>

<Count>100</Count>

</Range>

<ImplicitAndBehavior>true</ImplicitAndBehavior>

</Query>

</QueryPacket>

(改行がわかりにくくてすいません…)

あと、もう1つ先程の手順と違う箇所は、RelevantResultsグループをここにデータフィールドをドラッグしてくださいと記載されている領域にドラッグ&ドロップします。また、このときに繰り返しセクションとしてフィールドを設定します(下図になります)。

0731-04.jpg

さて、次にクエリですが、ここも単に文字列ではなく、上記のXMLから<Query Packet >~</Query Packet>の部分を入力し、クエリを実行します。

<QueryPacket xmlns="urn:Microsoft.Search.Query" Revision="1000">

<Query domain="QDomain">

<SupportedFormats>

<Format>urn:Microsoft.Search.Response.Document.Document</Format>

</SupportedFormats>

<Context>

<QueryText language="en-US" type="MSSQLFT"><![CDATA[ SELECT Title, Rank, Size, Description, Write, Path FROM portal..scope() WHERE CONTAINS ('"sharepoint*"')  ORDER BY "Rank" DESC]]></QueryText>

</Context>

<Range>

<StartAt>1</StartAt>

<Count>100</Count>

</Range>

<ImplicitAndBehavior>true</ImplicitAndBehavior>

</Query>

</QueryPacket>

そうすると・・・下図のように検索結果分の項目や、プロパティ毎に検索結果の値が確認できます。QueryExを利用すると、SQLクエリで検索することができるので、表示させたい項目などを指定して検索結果として表示させることが可能になります!
0731-05.jpg


ホットワード background border 利用 SharePoint Webサービス
割引クーポンまとめ情報 - クー割