SharePoint 2010 コードを含む InfoPath 2010 Web フォームのサンドボックス配置

※ SharePoint 2013 以降では、サンボボックス ソリューションは非推奨です。SharePoint アドイン (SharePoint Add-ins) による開発手法を使用してください。

環境 : InfoPath 2010 Beta 2, SharePoint Server 2010 Beta 2

裏 10 行でズバリ ! サンドボックス ソリューション 

本シリーズは、「10 行でズバリ ! SharePoint 2010 開発」を理解された開発者向けに、さらに踏み込んだ内容を記載しています。(ちなみに、10 行にはおさまっていません。。。)

こんにちは。

ずいぶん間が開きましたが、書きかけのサンドボックス ソリューション ネタについて、今度は InfoPath フォームについて記載したいと思います。

ご存知の通り、SharePoint Server 2007 (および InfoPath 2007) までは、VSTA のプログラムコードを含んだ InfoPath フォームは、管理者承認フォーム (admin-approved form) として発行をおこなう必要がありました。(これについては、かなり以前に以下に記載しています。)

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

https://blogs.msdn.microsoft.com/tsmatsuz/2006/08/23/vsta-infopath-web-publish-2103/

この方法は、発行時にわざわざサーバー管理者 (ファーム管理者) に依頼が必要で、上記 (リンク) の手順からわかる通り、”作る側” としても非常に面倒な作業が必要になります。セキュリティの危険を伴いかねない複雑な処理ならともかく、ちょっとしたコードを入れる程度ならば、「もう少し楽に発行できないか?」 と思われるでしょう。

SharePoint 2010 / InfoPath 2010 からは、サンドボックス ソリューション (Sandboxed Solution) の仕組みによってこれを解決しています。今回からは、ファーム管理者である必要はなく、サイトコレクション管理者であれば、プログラムコードを含んだ VSTA の InfoPath フォームでも発行可能です。(つまり、サイトコレクションを使用している現場から、InfoPath フォームをアップできます。)

では、簡単にみていきましょう。
今回は、ブラウザーのアドレスから入力引数 (クエリ文字列) を受け取って、この内容をフォーム上に表示する簡単な InfoPath フォームを作成して発行します。

まず、InfoPath の VSTA (Visual Studio Tools for Applications) を有効にします。コントロールパネルから [プログラムと機能] で Microsoft Office 2010 を選択して [変更] をクリックし、[機能の追加/削除] 画面を表示して、InfoPath の VSTA を下図の通り有効にします。

InfoPath 2010 を起動して [空白] のフォームを新規作成しましょう。

今回は、下図の通りデザインします。

リボンの [開発] タブで [Loading イベント] を選択して、ロード時の VSTA によるプログラムコードを記述していきましょう。

今回は、フォームのロード時に、ブラウザの入力引数を取得して、上図の「フィールド1」にその値を表示するため、下記の通り、プログラムコードを記述します。(既定で、C# を使うか、Visual Basic を使うか選べますが、今回は VB を使いました)

Public Sub FormEvents_Loading(ByVal sender As Object, ByVal e As LoadingEventArgs)
    Dim partCode As String = ""
    If e.InputParameters.ContainsKey("PartCode") Then
        e.InputParameters.TryGetValue("PartCode", partCode)
        MainDataSource.CreateNavigator().SelectSingleNode("/my:マイフィールド/my:フィールド1", Me.NamespaceManager).SetValue(partCode)
    End If
End Sub

ビルドをおこなって、SharePoint Server へ発行をおこないます。(下図)

この際、いつもなら、プログラムコードを含む処理は管理者承認用フォームとして発行していましたが、今回は、そのままフォームライブラリとして発行します。(InfoPath 2010 / SharePoint Server 2010 から可能です !)

発行後に、SharePoint 上で、発行先のサイトのソリューションギャラリーを確認してみてください。
下図の通り、発行したInfoPathのフォームロジックがサンドボックス ソリューションとして発行され、アクティブ (有効化) になっているのがわかります。
(なお、サンドボックス ソリューションですので、プログラムで利用できる API などに制限がある、という点にご注意ください。ネットワーク接続などを伴わない一般的な InfoPath 上でのコードを使った処理なら大丈夫です。)

さいごに動作を確認してみましょう。

SharePoint 上で、発行されたドキュメントライブラリを表示し、リボンから [新しいドキュメント] ボタンをクリックすると、下図の通り新規登録用の InfoPath フォームが Web フォームとして表示されますが、この画面で、ブラウザーのアドレス欄 (URL) に「&PartCode=aaa 」を追加して再表示してみてください。
下図の通り、部品番号欄に aaa と設定されるはずです。

ホームページ上のリンクなどを使って簡単に初期値を設定できる、VSTA の InfoPath フォームライブラリが完成しました。

このように、プログラムコードを使った “簡易な” 処理であれば、サンドボックス ソリューションによる発行が使用できます。

 

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s