Microsoft Office InfoPath 2003 を用いたSAPフロントエンド開発の概要

Download Report

Transcript Microsoft Office InfoPath 2003 を用いたSAPフロントエンド開発の概要

Microsoft Office InfoPath 2003
を用いたSAPフロントエンド開発の概要
ビジネスプロダクティビティソリューション本部
マイクロソフト株式会社
Agenda






InfoPath 2003 の概要
サンプル構築環境の確認
検索モードの作成
更新モードの追加
おわりに
Appendices
InfoPath 2003 の概要
リッチでダイナミックなフォームの作成を可能に
し、正確な情報を効率的に収集することがで
きる Office アプリケーション
柔軟かつ効率的に正確な情報を収集
時間の削減、入力エラーの無い正確な情報収集、再入力の排除
人、情報、プロセスをより効率的に結合
既存のシステムとデータを最大限に有効活用し、意思決定を支援
容易なフォームソリューションの構築と高いメンテナンス性
ビジネスプロセスの変化への迅速な対応、TCO 削減
サンプル構築環境の確認
作成するフォームテンプレート


SAP CRMのトランザクション
“CRMD_BUS2000111”の一部機能を抜粋し
たフォームを作成
案件を検索する「検索モード」と、特定の案件
を更新する「更新モード」を実装
<検索モード>
<更新モード>
サンプルフォーム構築環境

クライアント コンピュータ




Windows XP Professional (SP1 以上)
または Windows 2000 (SP3 以上)
Internet Explorer 6.0 (SP1 以上)
Microsoft Office InfoPath 2003 SP1
または Microsoft Office Professional Enterprise Edition
2003 SP1
サーバー コンピュータ

mySAP CRM Server 4.0 が正常稼動している環境
※サンプル検証環境は、次の通り


mySAP CRM Server 4.0
mySAP CRM Middleware Server
(参考) SAPモジュールの要件


SAPサーバーと InfoPath 2003 は、Web
サービスを介して通信を行う
Webサービス(SOAPでの通信)に対応する
SAPモジュールは次の通り

カーネル 4.0B 以降のR/3、APO、SRMなど、
ABAPアーキテクチャのもの


「SAP .NET Connector」 を利用して、Webサービス
を別途構築要
カーネル 6.2 以降

WebAS の機能により、Webサービスを設定可能
BAPIのリモート接続有効化
1.
“/nse37” で、各BAPIの
「属性」タブ内の「処理タ
イプ」が、「リモート可能モ
ジュール」になっているこ
とを確認
2.
「リモート可能モジュー
ル」になっていない場合、
“sicf”より、「bc」ノードの
コンテキストメニューから
「サービス有効化」を選択
使用する BAPI

SAP CRMからの各種データ取得 / 更新の際には、
次に挙げる BAPI を、SOAPプロトコルを利用して呼
び出す(Webサービスとしてコール)




CRM_WAP_OPP_GET_LIST
案件情報を取得する際に利用
CRM_WAP_OPP_SAVE
案件情報を更新する際に利用(※新規登録は除く)
CRM_WAP_GET_PHASE_LIST
案件のフェーズ一覧を取得する際に利用
(※セールスサイクル“1”「一般案件」に割り当てられてい
るフェーズが取得対象)
CRM_WAP_GET_OPP_POSSIBLE_STAT
案件のステータス一覧を取得する際に利用
WSDLの確認 (1/2)
1.
2.
3.
“/nse80”を実行
「WebServiceBrowser」
をダブルクリック (※ツ
リーに表示されていない
場合には、「BSPアプリ
ケーション」を選択し、
「WEBSERVICEBROW
SER」と入力後、Enter)
BSPアプリケーション照会
画面の「テスト」アイコンを
クリックし、SAPログオン
時のユーザ名とパスワー
ドを入力して、「OK」ボタ
ンを押す
WSDLの確認 (2/2)
4.
5.
6.
Web Service Browser
画面の「By Name」欄に、
使用するBAPIの名前
(「CRM_WAP_OPP_GE
T_LIST」等)を入力後、
Enter
Result欄の「wsdl」リンク
をクリック
ブラウザに表示された
WSDLのURLを、アドレス
バーから取得し、メモ帳等
でテキストファイルに記入
(URLは個々の環境によ
り異なる)
検索モードの作成
検索モード作成手順の概要
デザインの開始
プライマリデータソースの修正
レイアウト設計
データ接続の追加
フォームテンプレートのテスト
フォームテンプレートの発行
※順不同で繰り返し
デザインの開始


「データ接続から新規作成」を選び、フォーム
のデザインを開始
案件情報の取得Webサービス
「CRM_WAP_OPP_GET_LIST」
をプライマリデータソース(データの受信)
に指定
プライマリデータソースの修正 (1/4)

WSDLから自動生成されたスキーマ内の要素
のうち、一部の要素の定義が必須項目となっ
てしまうため、修正が必要
読み取り専用となって
いるためInfoPathの
UIからは修正不可
必須項目は、赤アス
タリスクで示されるが、
実際のBAPI呼び出し
上は必須ではない
プライマリデータソースの修正 (2/4)
1.
2.
3.
赤アスタリスク(*)の付いている項目をチェック
[ファイル] - [フォーム構成ファイルの取り出し] を実
行し、フォームの構成ファイルを展開
(その後、InfoPathを一旦終了)
展開されたファイルの中から、自動生成されたBAPI
のスキーマ情報が格納されたファイルを探す
(“schema1.xsd”等の拡張子“.xsd”のファイル)
ビュー
(xsl)
スキーマ
(xsd)
フォーム定義
manifest
(XSF)
デフォルト
データ
(xml)
ロジック
(DLL)
BAPIの
項目を
定義した
スキーマ
Schema1.xsd 等
プライマリデータソースの修正 (3/4)
4.
次の型の要素を中心に、テキストエディタでチェック


<例>
xsd:decimal , xsd:date , xsd:base64Binary
1で控えたノードと同じなら、nillable=“true” 属性を追加
~ 前略 ~
<xsd:complexType name=“CRMT_REPORT_INBOXLIST”>
<xsd:sequence>
~ 中略 ~
<xsd:element name=“EXP_REVENUE” minOccurs=“0” nillable=“true”>
<xsd:simpleType>
<xsd:restriction base=“xsd:decimal”>
<xsd:totalDigits value=“15”/>
<xsd:fractionDigits value=“2”/>
これを追加
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
~ 中略 ~
</xsd:sequence>
</xsd:complexType>
~ 後略 ~
プライマリデータソースの修正 (4/4)
5.
6.
7.
2で取り出したファイル中の“manifest.xsf”を右ク
リックし、「デザイン」を実行 (InfoPathが起動)
データソース作業ウィンドウにて、必須項目指定が
解除されていることを確認
InfoPathフォームを保存
右クリック
フォーム定義
manifest
(XSF)
InfoPath起動
必須項目指定
が解除されて
いることを確認
フォームで使用するノードの確認
queryFields
ノード名
説明
ラベル
IV_BUSYNESS_PARTNER
ビジネスパートナ番号
パートナ
IV_DATE_FROM
見込終了日(~以降)
見込終了日(~以降)
IV_SELECT_MODE
検索モード:パートナ (PARTNER)
IV_SORT_BY
ソート順:パートナ順 (P)、日付順 (D)
P_GUID
データのGUID
-
ソート順
-
dataFields
ノード名
説明
ラベル
GUID
データのGUID
-
DESCRIPTION
案件の概要説明
案件概要
MAIN_BP_1
顧客名
顧客名
EXPECT_ END
見込終了日
見込終了日
PROBABILITY
受注見込(確度)
受注見込(確度)
CURR_PHASE
フェーズ
フェーズ
STATUS
ステータス
ステータス
EXP_REVENUE
見込販売額
見込販売額
TDFORMAT
ノート行番号
TDLINE
ノート
-
ノート
基本的なレイアウト設計手順
1.
2.
3.
4.
5.
6.
7.
8.
タイトル付きの表を挿入
データソース作業ウィンドウから、配置したいノードを含むグ
ループをドラッグ&ドロップ(セクションの挿入)
各セクションに含めたいノードのレイアウト用に、レイアウト用
の表を挿入
データソース作業ウィンドウから、配置したいノードを、前項で
挿入した表内にドラッグ&ドロップ(コントロールの挿入)
コントロール種別の変更、セカンダリデータソースの割り当て
各ノードのラベル名を調整(日本語ラベルへの書き換え等)
ボタンコントロール等の配置
全体レイアウトの調整、配色等
ドロップダウンリストボックスの設定

ドロップダウンリストボックスコントロールとし
て配置するノードと設定値
ノード名
BAPI名
エントリ
値
表示名
queryFields の
IV_BUSYNESS_
PARTNER
-
-
※各環境による
※各環境による
queryFields の
IV_SORT_BY
-
-
“D”
“P”
“日付順”
“パートナ順”
dataFields の
CURR_PHASE
CRM_WAP_GET
_PHASE_LIST
/dfs:myFields/df
s:dataFields/s0:
CRM_WAP_GET
_PHASE_LIST.R
esponse/ET_PH
ASE_TAB/item
PHASE
DESCRIPTION
dataFields の
STATUS
CRM_WAP_GET
_OPP_POSSIBL
E_STAT
/dfs:myFields/df
s:dataFields/s0:
CRM_WAP_GET
_OPP_POSSIBL
E_STAT.Respon
se/ET_STAT/item
ESTAT
TXT30
検索モードのテスト
実際にフォームを動かしてテスト
更新モードの追加
更新モード追加手順の概要
レイアウト設計(ノードの追加等)
条件付書式の設定
データ接続(更新用)の追加
動作規則の設定 / スクリプトの追加
フォームテンプレートのテスト
フォームテンプレートの発行
※順不同で繰り返し
更新モード設計上のポイント (1/2)

検索モード実行後に抽出された案件の中から、
更新したい案件の「案件概要」部分をクリック
することにより、更新モードに移行
<検索モード>
<更新モード>
クリック
更新モード設計上のポイント (2/2)

Webサービスへのデータ送信のポイントは、受信用
データ接続として、送信を設計すること

送信用データ接続では、戻り値を処理できない


受信用データ接続を使えば、戻り値を処理可能




Webサービスが、InfoPathからの引数を受け取れた時点で、 全
て「成功」の扱いになるだけ
クエリの実行 = 送信処理の実行
クエリの結果 = 戻り値
データ接続設定時の、「フォームを開くとき自動的にデータを取得
する」はオフに設定
送信対象となる項目値を、データ接続
「CRM_WAP_OPP_SAVE」の「queryFields」にコ
ピーし、クエリを実行
更新モード切り替え処理の実装 (1/2)
1.
2.
3.
クリックされた案件の“GUID”を取得し、検索
条件(プライマリデータソースの
「queryFields」)の“P_GUID”にセット
クエリの実行
(“GUID”が特定されると、単一の案件のみ抽
出される)
ノート欄から不要な行を削除

いずれもスクリプト(コーディング)により実装
(後述の Script C を参照)
更新モード切り替え処理の実装 (2/2)
4.
画面の書き換え


「条件付書式」を利用して設定
案件情報の各項目は、検索モードでは、読み取
り専用に設定

“P_GUID”が空白のとき、次のコントロールを読み取
り専用に設定すれば OK
案件概要,見込終了日,受注見込,フェーズ,ステータス,見込販売額
(※顧客名は常に読み取り専用に設定)

案件情報のノート欄は、更新モードでのみ表示さ
れるように設定

“P_GUID”が空白のとき、次のノードに対応するセク
ションを非表示に設定すれば OK
/dfs:myFields/dfs:dataFields/s0:CRM_WAP_OPP_GET_LIST.Re
sponse/ET_TEXT
データ更新処理の実装 (1/2)
1.
引数のセット(非繰り返し項目)


「データ更新」ボタンに「動作規則」として設定
「フィールドの値を設定する」として、次の通りに
動作を追加
プライマリデータソース の
dataFields 内の項目
DESCRIPTION
⇒
CRM_WAP_OPP_SAVE の
queryFields 内の項目
IV_DESCRIPTION
EXPECT_END
⇒
IV_EXPECT_END
EXP_REVENUE
⇒
IV_EXP_REVENUE
GUID
⇒
IV_GUID
CURR_PHASE
⇒
IV_PHASE
PROBABILITY
⇒
IV_PROBABILITY
STATUS
⇒
IV_STATUS
データ更新処理の実装 (2/2)
2.
引数のセット(繰り返し項目)

3.
クエリの実行

4.
「データ更新」ボタンにスクリプトにより実装
(後述の Script D を参照)
「データ更新」ボタンにスクリプトにより実装
(後述の Script B を参照)
戻り値のハンドリング

「データ更新」ボタンにスクリプトにより実装
(後述の Script E を参照)
※「ボタンのプロパティ」に、「動作規則」と「フォームのコードを編集」
を同時設定した場合には、「動作規則」が先に実行される
Tips: 戻り値のハンドリング

処理内容によって使い分け…

次のような場合は、「動作規則」の設定で十分



戻り値をきめ細かくハンドリングしたい場合には、
「データの入力規則」の設定を考慮


戻り値に応じて適切なメッセージボックスを表示する
戻り値に応じて他のフィールドに値をセットする
コーディングが必須となるため、手間は掛かるが、ある
意味、「何でもできる」
戻り値フィールドは、基本的に読み取り専用に
するか、そもそもフォームに配置しない
Script A: 変数及び関数定義 (1/2)
(※ネームスペース定義部分は省略)
var gdomTLINE;
function getNodeList(xpath)
{
if (typeof(xpath) == "string")
return XDocument.DOM.selectNodes(xpath);
else
return xpath;
}
function count(xpath)
{
var xmlNodeList = getNodeList(xpath);
if (xmlNodeList)
return xmlNodeList.length;
else
return -1;
}
※本サンプルにおけるスクリプト記述は、JScript を利用
Script A: 変数及び関数定義 (2/2)
function CreateNode(dom, strNodeName, strNodeValue)
{
var objNewNode = dom.createElement(strNodeName);
if (strNodeValue)
objNewNode.text = strNodeValue;
return objNewNode;
}
function CloneNode(dom, strNodeName, strNodeValue)
{
var objNewNode = dom.selectSingleNode(strNodeName).cloneNode(false);
if (strNodeValue)
{
objNewNode.text = strNodeValue;
}
return objNewNode;
}
Script B: フォーム読み込み時と
検索ボタンクリック時のイベント
function XDocument::OnLoad(eventObj)
{
// CloneNode 関数実行用に保存
gdomTLINE = XDocument.GetDOM("CRM_WAP_OPP_SAVE")
.getElementsByTagName("IT_TEXT").item(0).cloneNode(true);
}
function btnQuery::OnClick(eventObj)
{
XDocument.DOM.selectSingleNode("/dfs:myFields/dfs:queryFields/
s0:CRM_WAP_OPP_GET_LIST/P_GUID").text = "";
XDocument.Query();
}
Script C: 更新モードへの切替え (1/2)
function XDocument::OnContextChange(eventObj)
{
if (eventObj.Type == "ContextNode" && XDocument.DOM.selectSingleNode("/dfs:myFields/dfs:queryFields/
s0:CRM_WAP_OPP_GET_LIST/P_GUID").text == "")
{
var oContextNode = eventObj.Context;
if (oContextNode.nodeName == "DESCRIPTION")
{
var strGUID = oContextNode.parentNode.selectSingleNode("GUID").text;
var oITEM = getNodeList("/dfs:myFields/dfs:dataFields/
s0:CRM_WAP_OPP_GET_LIST.Response/ET_OPP/item");
var oGUID = getNodeList("/dfs:myFields/dfs:dataFields/
s0:CRM_WAP_OPP_GET_LIST.Response/ET_OPP/item/GUID");
for (var i = 0 ; i < count(oITEM) ; i++)
{
if (oGUID[i].text == strGUID)
{
var idx = i;
}
}
(※次ページに続く)
Script C: 更新モードへの切替え (2/2)
(※前ページからの続き)
var oET_GUID = getNodeList("/dfs:myFields/dfs:dataFields/
s0:CRM_WAP_OPP_GET_LIST.Response/ET_GUID/item/GUID");
XDocument.DOM.selectSingleNode("/dfs:myFields/dfs:queryFields/
s0:CRM_WAP_OPP_GET_LIST/P_GUID").text
= oET_GUID[idx].text;
XDocument.Query();
// 「ノート」欄のノードリストの先頭から、不要なノードを削除
var oET_TEXT = XDocument.DOM.selectSingleNode("/dfs:myFields/
dfs:dataFields/s0:CRM_WAP_OPP_GET_LIST.Response/
ET_TEXT");
var oITEM = getNodeList("/dfs:myFields/dfs:dataFields/
s0:CRM_WAP_OPP_GET_LIST.Response/ET_TEXT/item");
if (oITEM[0].selectSingleNode("TDFORMAT").text == "")
{
oET_TEXT = oET_TEXT.removeChild(oITEM[0]);
}
}
return;
}
}
Script D: 案件情報の「ノート」欄の
セカンダリデータソースへの転記
function updateTLINE()
{
var objITEMNode = null;
var objTDFORMATNode = null;
var objTDLINENode = null;
var oITEM = getNodeList("/dfs:myFields/dfs:dataFields/s0:CRM_WAP_OPP_GET_LIST.Response/ET_TEXT/item");
var oTDFORMAT = getNodeList("/dfs:myFields/dfs:dataFields/
s0:CRM_WAP_OPP_GET_LIST.Response/ET_TEXT/item/TDFORMAT");
var oTDLINE = getNodeList("/dfs:myFields/dfs:dataFields/
s0:CRM_WAP_OPP_GET_LIST.Response/ET_TEXT/item/TDLINE");
var nodeTLINE = XDocument.GetDOM("CRM_WAP_OPP_SAVE").selectSingleNode("/dfs:myFields/
dfs:queryFields/s0:CRM_WAP_OPP_SAVE/IT_TEXT");
var nodeITEM = XDocument.GetDOM("CRM_WAP_OPP_SAVE").selectNodes("/dfs:myFields/
dfs:queryFields/s0:CRM_WAP_OPP_SAVE/IT_TEXT/item");
nodeITEM.removeAll();
for (var i = 0 ; i < count(oITEM) ; i++)
{
objITEMNode = CloneNode(gdomTLINE, "item");
objITEMNode.appendChild(CloneNode(gdomTLINE, "item/TDFORMAT", oTDFORMAT[i].text || ""));
objITEMNode.appendChild(CloneNode(gdomTLINE, "item/TDLINE", oTDLINE[i].text || ""));
nodeTLINE.appendChild(objITEMNode);
}
}
Script E: データ更新処理
function btnUpdate::OnClick(eventObj)
{
updateTLINE();
XDocument.DataObjects("CRM_WAP_OPP_SAVE").QueryAdapter.Query();
// 戻り値が“006”なら、SAP CRM 側データの更新成功
var nodeRETURN = XDocument.GetDOM("CRM_WAP_OPP_SAVE").selectNodes("/dfs:myFields/
dfs:dataFields/s0:CRM_WAP_OPP_SAVE.Response/RETURN/item");
if (nodeRETURN[1].selectSingleNode("NUMBER").text == "006")
{
// 「フォームの送信」に設定されている送信処理も併せて行いたい場合には、下の行のコメントを解除
// XDocument.Submit();
XDocument.UI.Alert("データの更新が完了しました。");
}
else
{
XDocument.UI.Alert(nodeRETURN[1].selectSingleNode("MESSAGE").text);
}
}
更新モードのテスト
実際にフォームを動かしてテスト
おわりに

Microsoft Office InfoPath 2003 を用いた
SAP フロントエンド開発のメリット


エンドユーザのニーズや、使う状況に応じたフロ
ントエンドアプリケーションの開発を容易に実現
Webサービスのコールをウィザードベースで設定
可能な他、多くのロジックをコーディングレスで実
装可能
開発者 / エンドユーザ 双方の皆様方に多くのメリットを
ご享受いただける Microsoft Office InfoPath 2003 を、
是非ご活用下さい。
Appendix-1
InfoPath 2003 における
ロジックの実装
ロジックの実装手段
 コーディングによるロジックの実装
マネージド コード:VB.NET / C#
スクリプト:VBScript / JScript
高度なロジック
 プロパティ設定による
ロジックの実装
 XML スキーマレベルでの
チェック
計算
入力規則
動作規則
条件付書式
入力規則
多くのフォームはノン
コーディングでロジック
の実装が可能
フォームテンプレートに含まれるファイル
ファイル形式
拡張子
説明
テンプレート定義 (マニフェスト)
.xsf
InfoPath で生成される XML ファイル。このファイルには、フォーム テンプ
レートで使用される他のすべてのファイルとコンポーネントに関する情報
が格納される。このファイルは、テンプレートのマニフェストとして機能
スキーマ
.xsd
XML ドキュメント ファイルに対して制約と検証を行うために使用する
XML スキーマ ファイル
ビュー
.xsl
XML ドキュメント ファイルに含まれているデータを公開、表示、および
変換するために使用するプレゼンテーション ロジック ファイル
XML サンプル ファイル
.xml
フォーム テンプレートに記述されているドキュメント クラスに基づいて新
しいファイルを作成する際の、ビューに表示される既定値を格納する
XML ファイル
プレゼンテーション
.htm, .gif, .xml
など
カスタム ユーザー インターフェイスの作成時に、ビュー ファイルと共に使
用されるファイル。このファイルには、XML ドキュメントの新しいインスタン
スを作成するときに表示される既定の XML データが格納
ビジネス ロジック
.js, .vbs, .dll
スクリプト (JScript および VBScript) や VS.NETで開発したマネージ
ド コードアセンブリ。特定の編集動作、データの妥当性検証、イベント
ハンドラ、およびデータ フロー制御の実装に使用するプログラミング コー
ドが格納
バイナリ
.dll, .exe
追加のビジネス ロジックを提供するカスタムのコンポーネントや オブジェ
クト モデル (COM) コンポーネント
アップグレードファイル
upgrade.xsl
フォームテンプレートのスキーマ変換時に生成されるファイル。既存の
データファイルを変更後のスキーマに変更するために利用
InfoPathのオブジェクトモデル
Application
Windows
Window
TaskPanes
User
XDocuments
View
XDocument
MailEnvelope
CommandBars
DOM
Errors
DataObjects
XML DOM と XPath によるノード参照
XML DOM
sales XDocument.DOM.selectSingleNode(“/ns:sales”)
 名前空間を利用
全てのノードは名前空間を持つ
 ns : 名前空間の省略名

items
 DOMに対するメソッド
item
SelectSingleNode(“XPath”)
 SelectNodes(“XPath” )
 text プロパティを利用

price
...selectSingleNode (”/ns:sales/ns:items/ns:item/ns:price”).text
InfoPathのイベント (1/2)


フォームイベント
アプリケーションの状態やユーザーのアクションに応答
データの入力規則
XML Document Object Mode (XML DOM)に対して行われ
た変更に応答
イベント
種類
説明
OnLoad
フォーム
フォームを開いたときに、フォームを初期化するのに使用される。最初の
ビューが表示される前にこのイベントが発生する。
OnBeforeChange
入力規則
フォームの基盤となる XML ドキュメントに対して変更が行われたが、まだ
変更が受け付けられていないときに使用される。
OnValidate
入力規則
フォームの基盤となる XML ドキュメントに対する変更が受け付けられたが、
まだ OnAfterChange イベントが発生していないときに使用される。
OnAfterChange
入力規則
フォームの基盤となる XML ドキュメントに対する変更が受け付けられ、
OnValidate イベントも発生した後で使用される。
フォーム
InfoPath ユーザー インターフェイス、または InfoPath オブジェクト モデ
ルの XDocument オブジェクトの Submit メソッドから送信操作が呼び出
されたときに使用される。
OnSubmitRequest
InfoPathのイベント (2/2)
イベント
種類
説明
OnSwitchView
フォーム
別のビューに切り替えたときに使用される。ユーザーが別のビューに切り
替えるか、ビューを初めて読み込んだときに、このイベントが発生する。
OnClick
フォーム
フォームのボタンがクリックされたときに、それに応答するために使用され
る。
フォーム
フォームが開かれたときに、そのバージョン番号が、フォームを開くときに
使用されたフォーム テンプレートのバージョン番号と一致しているかどうか
を検証するために使用される。バージョン番号が一致しない場合は、このイ
ベントが発生する。
OnAfterImport
フォーム
フォームが別のフォームと結合された後で、追加の処理を実行する場合に
使用される。このイベントは他のフォームからデータがインポートされた後
で発生する。スクリプト コードを使用して、フォームに含まれている結合
データに基づいて適切なビューが設定されるようにすることができる。
OnContextChange
フォーム
フィールド選択の移動時に発生する。
OnSign
フォーム
デジタル署名後に発生する。
OnMargeRequest
フォーム
InfoPath 2003 のユーザーインターフェイスもしくは、コマンドライン
(/aggregate)からの結合操作時に発生する。
OnSaveRequest
フォーム
InfoPath 2003 のユーザーインターフェイスもしくは、Save / SaveAs メ
ソッドによる保存操作時に発生する。
OnVersionUpgrade
Appendix-2
フォームテンプレートの
セキュリティと展開
オブジェクトモデル メンバのセキュリティ レベル
オブジェクトモデルのメンバ(プロパティやメソッド)
の悪用を防ぐためにオブジェクトモデルのメンバを
使用できる展開方法と場所を規定(3つのセキュリ
ティレベル)


(例)XDocument オブジェクトの SaveAs メソッドを利用するとファ
イルシステムの任意の場所にデータの書き込み可能
SDKで提供されるオブジェクトモデル リファレンス
に各メンバのセキュリティレベルが記載されている

レベル
説明
0
すべてのフォーム テンプレートから呼び出すことが可能なメンバ(制限なし)
2
現在開いているフォームと同じドメインで動作しているフォーム、または、ドメイン間
データアクセスの許可を与えられているフォームから呼び出すことが可能なメンバ
3
完全信頼済みのフォームテンプレートからのみ呼び出すことが可能なメンバ
1
将来のために予約
フォームテンプレートのセキュリティ レベル (1/2)




フォームテンプレート内で使用されている機能とフォームテ
ンプレートの配布場所・配布方法に基づいて規定される3つ
のセキュリティレベル
既定では「制限あり」または「ドメイン」のどちらかのセキュリ
ティレベルが自動的に選択
「ドメイン」は、Internet Explorer で定義されたセキュリティ
ゾーンの設定と連動
完全信頼済みのフォームテン
プレートを作成する場合や、
手動で設定する場合は、
「ツール」→「オプション」→
「セキュリティ」タブから設定。
「デザインに基づいて自動的
にセキュリティ レベルを設定」
をオフにして、3つから選択
フォームテンプレートのセキュリティ レベル (2/2)
レベル
制限あり
ドメイン
完全信頼
説明
フォームテンプレートと外部との通信を許可しない場
合に選択。危険なフォームテによって、ローカルPC内
のデータが攻撃者に漏洩してしまうのを防ぐ。カスタム
作業ウィンドウ、データ接続、ActiveX コントロール、マ
ネージド コードでのロジック、ロールなどを利用すること
はできない。
Internet Explorer で定義されたセキュリティ ゾーン内
の場所に基づいてフォームを制限する場合に選択。
例えばフォームがイントラネットゾーンにある場合(発行
先)、同じドメイン内の他のデータとの通信は許可され
るが、他のドメインにあるデータを取得することは禁止
される。
完全に信頼されたフォームを作成する場合に選択。
セキュリティレベル 3 のオブジェクトモデルのメンバを利
用する場合には、完全信頼のフォームテンプレートを
作成する必要がある。
設定される
manifest.xsf の
xDocumentClassの属
性
requireFullTrust =
“yes”
trustLevel =
“Domain” もしくは、
記述なし
trustLevel =
“Restricted”
InfoPath セキュリティ モデル
セキュリティレベル
ドメイン間データアクセス
マネージドコード
URNベース
スクリプトを実行しても
安全だとマークされて
いないActiveX コント
ロール
利用可能なオブ
ジェクトモデル メ
ンバのセキュリ
ティレベル
○
ActiveXなし
失敗
フォームは起動するが実行
されない
0
失敗
ローカル イントラネットのア
クセス許可でのマネージド
コードが実行される
2
ローカルイントラネットのアク
セス許可でマネージドコー
ドが実行される。ドメイン間
のデータアクセスも許可さ
れる
2
識別
URLベース
制限あり
制限付きサイト
IE
ドメイン
セ
キ
ュ
リ
テ
ィ
ゾ
ー
ン
インターネット
○
失敗
イントラネット
○
失敗
確認ダイアログ表示
信頼済みサイト
○
確認ダイアログ表示
OK
ローカルマシン
○
○
確認ダイアログ表示
OK
ローカルイントラネットのアク
セス許可でマネージドコー
ドが実行される。ドメイン間
のデータアクセスも許可さ
れる
○
正式なコード
署名用の証
明書を利用
○
OK
OK
完全信頼
完全信頼
識
別
実行されない
2
2
3
URL
ベース
フォームテンプレートをURLで識別。manifest.xsf の xDocumentClass のpublishUrl 属性にURLを指定。
InfoPath 発行ウィザードを利用して SharePoint フォームライブラリやファイルサーバに発行する場合は自動的
にURLベースのフォームになる。ユーザーは発行先のURLから起動する。
URN
ベース
フォームテンプレートをURN(”urn:文字列:文字列”)で識別。manifest.xsf の xDocumentClassの name属
性にURNを指定。署名を利用しない完全信頼のフォームテンプレートを作成する場合などに指定。
Appendix-3
参考情報
情報リソース
Microsoft Office 製品情報
http://www.microsoft.com/japan/office/default.mspx

InfoPath 2003 製品情報
ナビゲート: Microsoft Office 製品情報 > InfoPath
http://www.microsoft.com/japan/office/infopath/prodinfo/defaul
t.mspx

InfoPath 2003 Service Pack 1 の概要
ナビゲート: Microsoft Office 製品情報 > InfoPath >
InfoPath 2003 Service Pack 1 の概要
http://www.microsoft.com/japan/office/infopath/prodinfo/sp1.m
spx
情報リソース
Office Online
http://office.microsoft.com/

InfoPath 2003 アシスタント
ナビゲート : Office Online > アシスタント > InfoPath 2003
http://office.microsoft.com/assistance/topcategory.aspx?TopLe
velCat=CH010966841041&CTT=6&Origin=HA011221241041

InfoPath 2003 の Service Pack 機能
ナビゲート : Office Online > アシスタント > InfoPath 2003 >
InfoPath の紹介 > InfoPath の Service Pack 機能
http://office.microsoft.com/assistance/preview.aspx?AssetID=HA0112
21241041&CTT=1&Origin=EC010231781041&QueryID=tKy5DoWcq
情報リソース
ダウンロードセンター
http://www.microsoft.com/japan/download.htm

Office 2003 Service Pack 1
InfoPath 2003 に Service Pack 1 を適用するには、Office 2003
Service Pack 1 を利用してください
検索キーワード : Office 2003 SP1
http://www.microsoft.com/downloads/details.aspx?FamilyID=9
c51d3a6-7cb1-4f61-837e-5f938254fc47&displaylang=ja

InfoPath 2003 Toolkit for Visual Studio .NET
Visual Studio .NET 2003 でのロジック開発のためのツールキット
検索キーワード : InfoPath Toolkit
http://www.microsoft.com/downloads/details.aspx?FamilyID=7
e9ebc57-e115-4cac-9986-a712e22879bb&DisplayLang=ja
情報リソース
ダウンロードセンター
http://www.microsoft.com/japan/download.htm

InfoPath 2003 SDK(英語)
InfoPath 2003 Service Pack 1 フォーム開発と展開を支援するサンプル
フォーム、ツール、ドキュメント
検索キーワード:InfoPath SDK
「Microsoft U.S. ダウンロード センターも検索する」をチェックしてください
http://www.microsoft.com/downloads/details.aspx?FamilyId=351F
0616-93AA-4FE8-9238-D702F1BFBAB4&displaylang=en

InfoPath 2003 SDK 日本語ドキュメント
Service Pack 1 関連情報追加分は現在準備中
検索キーワード:InfoPath SDK
http://www.microsoft.com/downloads/details.aspx?displaylang=ja
&FamilyID=351F0616-93AA-4FE8-9238-D702F1BFBAB4
情報リソース

InfoPath 2003 Toolkit for Visual Studio
.NET ヘルプドキュメント
MSDN ライブラリが インストールされていればヘルプ ドキュ
メントを参照することができます
情報リソース
MSDN (Microsoft Developer Network)
http://msdn.microsoft.com

Office Solution Development : InfoPath (英語)
ナビゲート : MSDN > Library > Office Solution
Development > Microsoft Office InfoPath 2003
http://msdn.microsoft.com/library/enus/dnanchor/html/odc_ancinfo.asp

InfoPath 2003 Training (英語)
Service Pack 1 で拡張された機能を含むトレーニングコンテ
ンツサンプルファイルのダウンロードも可能です
ナビゲート : MSDN > Library > Office Solution
Development > Microsoft Office InfoPath 2003 >
Training
http://msdn.microsoft.com/library/default.asp?url=/library/enus/odc_2003_ta/html/odc_landinfo03_tr.asp
情報リソース

MSXML5.0 SDK
Office 2003 / InfoPath 2003 で利用しているXML Core
サービスコンポーネント(MSXML5.dll)のリファレンスマニュ
アル。既定では以下にインストールされます
Drive:\Program Files\Microsoft
Office\OFFICE11\1041\XMLSDK5.CHM

SAP / Microsoft Global Alliance Information
Japan
両社のワールドアライアンスに基づく、日本国内での活動を
ご紹介するサイト
http://www.ms-sap.com/