次の方法で共有


Creator の実装

最終更新日: 2010年4月20日

適用対象: SharePoint Server 2010

この記事の内容
説明
構文
解説

説明

Creator メソッド インスタンスにより、新しいエンティティ インスタンスを作成できます。たとえば、Customer という名前のビジネス オブジェクトがある場合、このメソッドを、外部システムの顧客 "John" を作成するために使用することができます。

外部コンテンツ タイプが Creator ステレオタイプを持っていない場合、Business Connectivity Services 機能を使用して新しいアイテム (エンティティ インスタンス) を作成することはできません。たとえば、アイテムを作成しようとしても、外部リストのリボンの [新しいアイテム] ボタンをクリックできません。

Create メソッドにより、Create で必要なフィールドの値を指定して、外部システムの外部アイテムを作成できます。新しいアイテムを作成するために必要な一連のフィールドは、クリエイター ビューと呼ばれます。フィールド値は必ずしも外部アイテムのフィールドに対応しません。メソッドは作成された外部アイテムに対応する ID を返す必要があります。このメソッドに入力として提供される IFieldValueDictionary インスタンスは、ビューから作成する必要があります。

また、このメソッドにより、作成された外部アイテムのフィールドの値を指定して外部アイテムを作成することができます。Create メソッド インスタンスが提供されたすべてのフィールドを受け入れた場合、BDC は、Create メソッド インスタンスのみを呼び出します。それ以外の場合、BDC は、残りのフィールドに指定された値を設定するために、作成された外部アイテムに対して Update MethodInstance も呼び出します。このメソッドは、作成された外部アイテムに EntityInstanceReference を返します。このメソッドに入力として提供された IFieldValueDictionary インスタンスは、GetCreatorView メソッド経由で取得された、SpecificFinder 型の MethodInstance に対応するビューから作成する必要があります。

構文

以下は Creator メソッドの一般的なメソッド署名です。

structureContainingIdentifierValues CreateEntity(EntityDataType fields)
void CreateEntity(EntityDataType fields)
structureContainingIdentifierValues CreateEntity()

解説

Creator の条件を指定するには、対応するメソッドで以下を行う必要があります。

  • 外部システムでインスタンスを作成するために必須のフィールドを、入力パラメーターとして取る必要があります。

  • 外部システムのオプションのフィールドを、入力パラメーターとして取ることができます。

  • アイテムの識別子 (あるいは識別子の組み合わせ) を入力として取ることができます。あるいは、新たに作成されたアイテムの識別子 (あるいは識別子の組み合わせ) を返すことができます。

  • データ損失から保護するために、トランザクションである必要があります。

Creator ビューは、SpecificFinder メソッド (以下の例を参照) のビューと、同じか、あるいはそのサブセットである必要があります。Creator が、SpecificFinder より多くのフィールドを持っている場合は、Microsoft Office 2010 クライアントでオフラインにできません。

複数の固有の検索がある場合、Creator ビューは、少なくとも 1 つの固有の検索ビューと同じか、そのサブセットである必要があります。

前述のように、Creator ビューは、少なくとも 1 つの固有の検索ビューと同じか、そのサブセットである必要があります (読み取り専用を含めることができます)。これは、外部リストで、アイテムを作成するために使用された Business Connectivity Services 自動生成フォームが SpecificFinder ビューに基づいているからです。Creator ビューにその他のフィールドがある場合、作成操作で問題を起こすことがあるので、自動生成フォームには表示されません。これを回避するために、Business Connectivity Services はこの依存関係のチェックをして、Creator ビューが SpecificFinder ビューより大きい場合は、外部リストでの作成操作を無効にします。

Creator ビューが SpecificFinder ビューのサブセットの場合、Business Connectivity Services は作成操作による外部リストでのアイテムの作成を許可します。しかし、(Microsoft Outlook のような) オフライン シナリオでは、Business Connectivity Services は Create メソッドの直後に Updater メソッドを呼び出すため、(Creator ビューに含まれないフィールドを更新するために) Updater メソッドが必要です。

表 1 は、Creator ビューと Updater ビューの依存関係と、作成および更新操作の状態を要約して示します。

表 1. クリエイターおよび更新ビューの依存関係と、作成および更新操作の状態

シナリオ番号

固有の検索ビューのフィールド

クリエイター ビューのフィールド

アップデーター ビューのフィールド

可能な操作

備考

1.     

A

B (読み取り専用)

C

D

E (読み取り専用)

A

B

C

D

E

F

A

C

D

F

作成: 許可しない

更新: 許可しない

オフライン作成: 許可しない

オフライン更新: 許可しない

フィールド F が固有の検索で見つかりません。このため、BCS は作成および更新操作を無効にします。

2.     

A

B (読み取り専用)

C

D

E (読み取り専用)

A

B

C

D

E

A

C

D

作成: 許可

更新: 許可

オフライン作成: 許可

オフライン更新: 許可

フィールド B とフィールド E の値は、作成中にユーザーが指定できますが、後で更新することはできません。

3.     

A

B (読み取り専用)

C

D

E (読み取り専用)

A

B

A

C

D

作成: 許可

更新: 許可

オフライン作成: 許可

オフライン更新: 許可

フィールド B の値は、作成中にユーザーが指定できますが、後で更新することはできません。

フィールド E の値は、外部システムによって割り当てられ、ユーザーが更新することはできません。

オフライン作成では、更新操作は作成の直後に呼び出されます。

4.     

A

B (読み取り専用)

C

D

E (読み取り専用)

A

B

A

C

作成: 既定 EL フォームでのみ許可

更新: 許可しない

オフライン作成: 許可しない

オフライン

更新: 許可しない

フィールド D を更新できません。この不整合により、BCS は更新操作を無効にします。

有効な更新操作がないため、オフライン作成は無効になります。

5.     

A

B (読み取り専用)

C

D

E (読み取り専用)

A

C

D

定義された更新操作はありません

作成: 許可

更新: 許可しない

オフライン作成: 許可

オフライン更新: 許可しない

フィールド B とフィールド E の値は、外部システムによって割り当てられます。

6.     

A

B (読み取り専用)

C

D

E (読み取り専用)

A

B

C

定義された更新操作はありません

作成: 既定 EL フォームでのみ許可

更新: 許可しない

オフライン作成: 許可しない

オフライン更新: 許可しない

フィールド D の値は作成中に設定できず、後でそれを設定する有効な更新操作が定義されていません。このため、BCS は、オフライン作成操作を無効にします。

例外は、必ず適切に処理してください。外部システムでの作成操作に問題がある場合は、表 2 の例外を使用します。

表 2. 例外

例外名

以下の場合に使用

AccessDeniedException

ユーザーは、外部システムでこの操作を実行することはできません。

PartialCreateException

いくつかの外部システムでは、フィールドをいくつか含む新しいアイテムを作成し、後で残りのフィールドを更新する必要があるシナリオがあります。アイテムが作成され、ID が返されても、フィールド値が適切に設定されていない場合、エラー処理を最適化するためにこの例外を使用します。

Runtime Exception

作成が失敗した場合、ユーザーに警告し、Outlook 2010 と Microsoft SharePoint Workspace 2010 のエラー処理機能を使用するために、この例外を必ず使用してください。

注意

パラメーターの名前は外部システムで定義された名前と同じである必要があります。パラメーターの名前では、大文字小文字を区別します。パラメーターの名前がすべてのメソッドで同一ではない場合は、Microsoft SharePoint Designer 2010 はそれらを異なるフィールドと解釈します。

コード スニペット: Creator の実装

関連項目

概念

XML スニペット: Creator メソッドのモデリング

コード スニペット: 外部コンテンツ タイプの Creator メソッド インスタンスを実行する