この文章は Salesforce 機械翻訳システムを使用して翻訳されました。詳細はこちらをご参照ください。
英語に切り替える

update()

非推奨。組織の 1 つ以上のコンポーネントを非同期に更新します。このコールは API バージョン 31.0 で削除されました。それより前のバージョンでのみ使用できます。代わりに、updateMetadata() または renameMetadata() を使用します。

このコールは、Metadata を拡張するオブジェクトを更新するために使用できます。詳細は、Metadata コンポーネントおよびメタデータ型を参照してください。

構文

1AsyncResult[] = metadataConnection.update(UpdateMetadata[] metadata);

使用方法

このコールを使用して、1 つ以上のコンポーネントの更新します。このコールは SQL の ALTER TABLE ステートメントに類似しています。

バージョン

このコールは、API バージョン 30.0 以前でのみ使用できます。このコールは、API バージョン 31.0 以降では使用できません。メタデータコンポーネントを更新する場合は、代わりに updateMetadata() を、メタデータコンポーネントの名前を変更する場合は renameMetadata() を使用します。

権限

クライアントアプリケーションは、「すべてのデータの編集」権限でログインしている必要があります。

必須項目

コンポーネント内のすべての必須項目に値を指定する必要があります。

有効な項目値

項目のデータ型に対して有効な値を入力する必要があります。たとえば、整数項目については整数を入力します (英字は不可)。クライアントアプリケーションでは、使用しているプログラム言語および開発ツールに指定されたデータ形式ルールに従ってください (開発ツールは、SOAP メッセージのデータ型の適切な対応付けを処理します)。

文字列値

String 項目に値を保存する場合、API は先頭および末尾の空白文字を削除します。たとえば、label 項目の値に "MyObject " と入力されると、その値はデータベースに "MyObject" として保存されます。

メタデータコンポーネント更新の基本手順

メタデータコンポーネントを更新するには、次のプロセスを使用します。
  1. UpdateMetadata コンポーネントの配列を作成し、更新するコンポーネントを挿入します。すべてのコンポーネントは同じ種類である必要があります。
  2. update() コールを呼び出し、更新するメタデータコンポーネントの配列を渡します。
  3. 更新しようとするコンポーネントごとに AsyncResult オブジェクトが返されます。このオブジェクトは、操作がキューから完了またはエラー状態に移行すると、状況情報で更新されます。AsyncResult の状況値が、すべての更新操作が完了したことを示すまで、ループで checkStatus() をコールします。checkStatus() コールの反復間の待機時間を 1 秒間で開始して、以降の各コール実行時にはその待機時間を 2 倍の秒数に指定します。

サンプルコード —Java

1swfobject.registerObject("clippy.codeblock-1", "9");
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17public void updateCustomObject() {
18  try {
19    CustomObject co = new CustomObject();
20    String name = "MyCustomObject";
21    co.setFullName(name + "__c");
22    co.setDeploymentStatus(DeploymentStatus.Deployed);
23    co.setDescription("Created by the Metadata API");
24    co.setEnableActivities(true);
25    co.setLabel(name + " Object");
26    co.setPluralLabel(co.getLabel() + "s");
27    co.setSharingModel(SharingModel.ReadWrite);
28    
29    CustomField nf = new CustomField();
30    nf.setType(FieldType.Text);
31    nf.setLabel(co.getFullName() + " Name");
32    
33    co.setNameField(nf);
34    
35    UpdateMetadata updateMetadata = new UpdateMetadata();
36    updateMetadata.setMetadata(co);
37    updateMetadata.setCurrentName("TheCurrentName");
38    
39    AsyncResult[] ars = metadataConnection.update(new UpdateMetadata[] 
40        { updateMetadata });
41    AsyncResult asyncResult = ars[0];
42    // set initial wait time to one second in milliseconds
43    long waitTimeMilliSecs = 1000;
44    while (!asyncResult.isDone()) {
45      Thread.sleep(waitTimeMilliSecs);
46      // double the wait time for the next iteration
47      waitTimeMilliSecs *= 2;
48      asyncResult = metadataConnection.checkStatus(
49        new String[] {asyncResult.getId()})[0];
50      System.out.println("Status is: " + asyncResult.getState());
51    }
52    
53    if (asyncResult.getState() != AsyncRequestState.Completed) {
54      System.out.println(asyncResult.getStatusCode() + " msg: " +
55          asyncResult.getMessage());
56    }
57  } catch (InterruptedException ie) {
58    ie.printStackTrace();
59  } catch (ConnectionException ce) {
60    ce.printStackTrace();
61  }
62}

引数

名前 説明
metadata UpdateMetadata[] 更新しようとするコンポーネントを表す、1 つ以上の UpdateMetadata データ構造の配列。

上限: 10。

1 つの種類のコンポーネントの配列を送信する必要があります。たとえば、10 個のカスタムオブジェクトの配列または 10 個のプロファイルの配列を送信できますが、両方の種類を混ぜて送信することはできません。

UpdateMetadata

1 つ以上の UpdateMetadata オブジェクトが metadata 引数で定義されます。このオブジェクトは、Metadata を拡張するオブジェクトを更新するために使用できます。詳細は、Metadata コンポーネントおよびメタデータ型を参照してください。各 UpdateMetadata オブジェクトには、次の項目があります。

項目 データ型 説明
currentName string 更新前のコンポーネントまたは項目の API 名。たとえば、Foo という名前の CustomObject を更新する場合、この項目の値は Foo__c になります。この値はこのコールによって名前が変更される可能性があるため提供されるものであり、その値は対応付けに使用されます。
metadata Metadata 更新するコンポーネントまたは項目の完全な仕様。

応答

AsyncResult[]