※ SharePoint 2013 以降では、サンボボックス ソリューションは非推奨です。SharePoint アドイン (SharePoint Add-ins) による開発手法を使用してください。
環境 : InfoPath 2010 Beta 2, SharePoint Server 2010 Beta 2
裏 10 行でズバリ ! サンドボックス ソリューション
- SharePoint 2010 ワークフローアクションのサンドボックス配置
- SharePoint 2010 ワークフローの Visual Studio を使用したサンドボックス配置
- SharePoint 2010 コードを含む InfoPath 2010 Web フォームのサンドボックス配置
- SharePoint 2010 モジュールを使ったファイルのサンドボックス配置
- SharePoint 2010 における .aspx ページ (リストフォームなど) のサンドボックス配置
- Bing Maps を使って住所から地図を表示する (サンドボックス ソリューションの Networking)
- SharePoint Online 向けに機能 (フィーチャー) をまとめる
本シリーズは、「10 行でズバリ ! SharePoint 2010 開発」を理解された開発者向けに、さらに踏み込んだ内容を記載しています。(ちなみに、10 行にはおさまっていません。。。)
こんにちは。
ずいぶん間が開きましたが、書きかけのサンドボックス ソリューション ネタについて、今度は InfoPath フォームについて記載したいと思います。
ご存知の通り、SharePoint Server 2007 (および InfoPath 2007) までは、VSTA のプログラムコードを含んだ InfoPath フォームは、管理者承認フォーム (admin-approved form) として発行をおこなう必要がありました。(これについては、かなり以前に以下に記載しています。)
スクリプト (VSTA など) を含んだ InfoPath Web フォームを発行 (Publish) して利用するには :
/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 IfEnd Sub
ビルドをおこなって、SharePoint Server へ発行をおこないます。(下図)
この際、いつもなら、プログラムコードを含む処理は管理者承認用フォームとして発行していましたが、今回は、そのままフォームライブラリとして発行します。(InfoPath 2010 / SharePoint Server 2010 から可能です !)
発行後に、SharePoint 上で、発行先のサイトのソリューションギャラリーを確認してみてください。
下図の通り、発行したInfoPathのフォームロジックがサンドボックス ソリューションとして発行され、アクティブ (有効化) になっているのがわかります。
(なお、サンドボックス ソリューションですので、プログラムで利用できる API などに制限がある、という点にご注意ください。ネットワーク接続などを伴わない一般的な InfoPath 上でのコードを使った処理なら大丈夫です。)
さいごに動作を確認してみましょう。
SharePoint 上で、発行されたドキュメントライブラリを表示し、リボンから [新しいドキュメント] ボタンをクリックすると、下図の通り新規登録用の InfoPath フォームが Web フォームとして表示されますが、この画面で、ブラウザーのアドレス欄 (URL) に「&PartCode=aaa 」を追加して再表示してみてください。
下図の通り、部品番号欄に aaa と設定されるはずです。
ホームページ上のリンクなどを使って簡単に初期値を設定できる、VSTA の InfoPath フォームライブラリが完成しました。
このように、プログラムコードを使った “簡易な” 処理であれば、サンドボックス ソリューションによる発行が使用できます。
Categories: Uncategorized
6 replies»