気ままなに Exchange Server/SharePoint Server

Exchange サーバー、SharePoint サーバーについて勉強したことを記載していきます。

【SharePoint 2010】 InfoPath フォームに SOAP Web サービスを利用して、個人情報をフォームに自動入力する

SharePoint 2010】 InfoPath 2010 (2013) を利用したアンケートフォームの作成方法 (の続き)

 

[目的]

前回作ったものを少しカスタマイズします。

 

[残案件]

・投稿者は、自分のアイテムしか閲覧できない。(http://exchange-sharepoint.hatenablog.jp/entry/2015/12/02/202817 で済)

・個人情報をプロファイルから自動取得 (http://exchange-sharepoint.hatenablog.jp/entry/2015/11/22/155057 が関連)

 ・Webフォームで保存や印刷などを禁止にする。

・配送先を、ドロップダウンボックスにする。

・部数を、半角数字のみ入力を許可する。

 

[今回]

とゆーことで、フォーム起動時に、プロファイルから情報を取得し表示させます。

すでに、関連で検証しているので改めて手順を纏めるだけです。

 

[手順]

1. ShrePoint 2010 のプロファイルサービスから、対象の情報が取得できているかを確認

1-1. [サーバーの全体管理]-[アプリケーション構成の管理]-[サービスアプリケーションの管理] をクリックし、[User Profile Services Application] をクリックする。

f:id:yasu1800:20151203131952p:plain

1-2. [ユーザー プロファイルの管理] をクリック

1-3. プロファイルの検索から、ユーザーを検索し、[個人用プロファイルの編集] をクリックする。

f:id:yasu1800:20151203132158p:plain

1-4. ユーザープロパティのフィールド一覧が表示されますので、値が入っている項目は取得可能です。氏名、部署、役職は既定で入っているので、従業員番号だけ ActiveDirectory または、SQL サーバーから同期する必要があります。

 

2. 従業員番号をプロパティに登録します。

2-1. [ユーザープロパティの管理] をクリックします。

f:id:yasu1800:20151203132512p:plain

2-2. [新しいプロパティ] をクリックします。

2-3. 各項目を修正します。

名前: Code ※ShrePoint側でもつ内部コードです。Infopathから取得するときにここを指定します。

表示名: 従業員番号 ※適当に

ソースへのデータ接続: Active Directory Connection

属性: AD上に属性を指定 (今回は、extensionAttribute1) を使用

方向: インポート

2-4. プロパティ一覧に登録されたことを確認

f:id:yasu1800:20151203133337p:plain

2-5. ユーザープロファイルを再同期

 

3. InfoPathから取得する属性名を確認する。

3-1.  [ユーザープロパティの管理] をクリックします。

3-2. [プロパティ名] から取得したいものを探し、右クリック [編集] をクリックします。表示された [名前] が SharePoint 側の属性名となります。

名前:PreferredName

部署:Department

役職:Title

従業員番号:Code

※一覧にある [マップされた属性] は AD 側の属性名です。

 

4. InfoPath 側で設定します。まずは、Webサービスの接続を作成します。

4-1. 前回つくったInfoPathフォームをデザイナーで開きます。

4-2. [Web サービス] から [SOAP Web サービス] をクリックします。

f:id:yasu1800:20151203134126p:plain

4-3. [SOAP Web サービス定期の場所を入力してください] にサイトコレクションのURLを入力し、[次へ]

サイトコレクション: http://sps01.55/sites/test

ドキュメントライブラリ: http://sps01:55/sites/test/DocLib/

入力値: http://<サイトコレクション>/_vti_bin/userprofileservice.asmx?WSDL

userprofileservice を利用して情報を取得

f:id:yasu1800:20151203135136p:plain

4-4. [GetUserProfileByName] を選択肢、[次へ]

f:id:yasu1800:20151203135305p:plain

4-5. 既定のまま、[次へ]

f:id:yasu1800:20151203135342p:plain

4-5. 既定のまま、[次へ]

f:id:yasu1800:20151203135421p:plain

4-6. 既定のまま、[完了]

f:id:yasu1800:20151203135506p:plain

 ※ フォームを開くときに自動的に取得し、入力するのでここは☑をいれておく。

 

5. 各フィールドに、Webサービスで取得したデータを設定します。

5-1. "所属部署" ボックスを右クリックし、プロパティを開きます。

f:id:yasu1800:20151203135706p:plain

5-2. "fx" ボタンをクリックします。 

f:id:yasu1800:20151203135755p:plain

5-3. [フィールドまたはグループの挿入]をクリックし、[フィールド] から "GetUserProfileByName (セカンダリ)" を選択し、下記の [myFields]-[dataFields]-[....]-[Value] を選択肢、[データのフィルター] をクリックします。

f:id:yasu1800:20151203140102p:plain

5-4. [追加] をクリックします。

f:id:yasu1800:20151203140130p:plain

5-5. [value] をクリックし、[フィールドまたはグループの選択...] をクリックします。

f:id:yasu1800:20151203140235p:plain

5-6. [Name] を選択し、[OK] をクリックします。

f:id:yasu1800:20151203140327p:plain

5-7. 続いて、右側の空欄を選択し、[文字列の入力...] をクリックします。

f:id:yasu1800:20151203140432p:plain

5-8. [3-2 で取得] した Department を入力し、[OK] を4回クリックします。

f:id:yasu1800:20151203140519p:plain

5-9. 下記のように設定されたことを確認し、他の氏名、役職、従業員番号についても同様設定を行ないます。

※部署

f:id:yasu1800:20151203140629p:plain

※従業員番号

f:id:yasu1800:20151203143119p:plain

※役職

f:id:yasu1800:20151203143149p:plain

※氏名(名前)

f:id:yasu1800:20151203143251p:plain

6. 再度発行し、Chrome から確認します。

f:id:yasu1800:20151203145608p:plain

以上です。