スクリプト (VSTA など) を含んだ InfoPath Web フォームを発行 (Publish) して利用するには


環境: Office Sharepoint Server 2007 Beta 2

こんにちは。

InfoPath でスクリプト (VSTA など) を含んだフォームテンプレートを Web フォームとして使うケースは、引数を取得する場合 (ビジネスデータカタログからアクションで連携する場合も引数をとる必要がありますね) など、頻繁につかう機会があると思います。
実は、InfoPath では、ルールやバリデーションなどは内部で AJAX の仕組みを使って動作するようになっていますが、スクリプトの実行については、その柔軟性を考え、(時代と逆行するかもしれませんが) サーバサイドで動作するようになっています。これにより、サーバ側でマネージコードが持つ機能の多くを使って実装できるなど柔軟性を確保しているのですが、その一方で、サーバ上のリソースを使った身勝手なスクリプトなどが動作しないよう、セキュリティに対して厳しい制約があります。具体的には、スクリプトを含まないときのような、ドキュメントライブラリ (Document Library) へのテンプレートの自由な発行はできないようになっていて、一旦、管理者にフォームを渡して許可を受けなければ登録できないという仕様になっているのです。

そこで今回は、この登録と利用の方法について記載することにします。
なお、この手順は、Office Developer Conference で当方が説明した手順と同じですので、こちらにご参加された方は読み飛ばしてください(それ以降の目新しい情報はございません)。

  1. まず、InfoPath Web フォーム で メニュー [Tool] - [Form Options] を選択し、[Security and Trust] として「Full Trust」を設定します。さらに [Sign the form template] をチェックし、適当な Certification を設定します。(未作成の場合は、ボタンを押して簡易の Certification を作成してください。)
  2. では Publish (発行) をおこないます。
    方法概念は、Site Content-Type と呼ばれるものを登録し、ここに、実際のフォームをアタッチしていくという手順です。
    まず、[Publish] をおこない、表示される発行ウィザードで、[To a Sharepoint server with or without InfoPath Forms Services] にチェックを入れてください。
  3. つづいて、発行ウィザードで、[Location] として Sharepoint Central Administration の Web アプリケーションの URL を入力して進んでください。(決して利用するサイトの URL ではありません。)
  4. 発行ウィザードで、登録方法として [Site Content Type (advanced)] を選択してください。適当に Content-Type の名前を付け、フォームを保存して発行を完了してください。(他と識別できるようなユニークな名前であれば何でもかまいませんが、現状、空白文字を使うとエラーになることがありますのでご注意ください。)
  5. つぎに、フォームを登録していきます。
    Sharepoint Central Administration を開き、[Application Management] - [Upload Form Templates] ページを開いて、上記の発行の際に保存したフォームをアップロード対象として選択し、アップロードしてください。(サーバ上などに保存した場は、[Browse] ボタンを押して、[My Network Place] から該当のドキュメントを選択してください。)
  6. Sharepoint Central Administration を開き、[Application Management] - [Manage Form Templates] ページを開いて、先ほど登録した xsn ファイルを選択し、 [Activate to a Site Collection] を選択して、このフォームを利用したい Site Collection を選択して Activate してください。
  7. では、以降では、Activate された Web フォームを利用できるように設定していきます。
    まず、アクティベートした先のWeb Site を開いて、まずは空のフォームライブラリを作成してください。
  8. 作成したライブラリの [Settings] - [Form Library Settings] - [Advanced Settings] を開いて、[Allow management of content types] を [Yes] に設定してください。また同じ画面で、[Opening browser-enabled documents] を [Display as a Web page] に設定して確定してください。
  9. ライブラリの [Customize [フォームライブラリの名称]] ページを開き、[Content Types] - [Add from existing site content types] をクリックして、先ほど登録したテンプレートのコンテントタイプの名称が表示されていますのでこれを選択して追加してください。
    以上で、このライブラリで、テンプレートとして、上記のスクリプトを含んだ Web フォームを使用できるようになります。

なお、発行の際に、「The following URL is no valid.」 (日本語の場合、「次の URL は無効です」というメッセージ) と表示される場合は、OS のサービス [System Event Notification] を自動実行されないように停止してから再起動し、やりなおしてください。(実は、わたしのマシンがこの現象ではまりました、、、)

Comments (1)

  1. SharePoint におけるさまざまな活用場面 InfoPath と Form Services を使ったデータベース連携 Excel と Excel Services を使ったデータ表示 こんにちは。

Skip to main content