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

Operations ���ラス

カスタムメタデータの取得やリリースなど、メタデータ操作を実行するためのクラスを表します。

名前空間

Metadata

使用方法

Metadata.Operations クラスを使用して、メタデータ操作を実行します。Apex におけるメタデータ操作の使用事���と制限についての詳細は、「メタデータ」を参照してください。

例: メタデータの取得

次の例では、登録者組織から「MyTestCustomMDType」カスタムメタデータレコードを取得してカスタム項目を調べます。

1public class ReadMetadata {
2  public void retrieveMetadata () {
3    // List fullnames of components we want to retrieve
4    List<String> componentNameList = 
5new List<String>{'ISVNamespace__TestCustomMDType.MyTestCustomMDType'};
6
7    // Retrieve components that are records of custom metadata types
8    // based on name
9    List<Metadata.Metadata> components = Metadata.Operations.retrieve(
10Metadata.MetadataType.CustomMetadata, componentNameList);
11    Metadata.CustomMetadata customMetadataRecord = (Metadata.CustomMetadata) components.get(0);
12
13    // Check fields of retrieved component
14    List<Metadata.CustomMetadataValue> values = customMetadataRecord.values;
15    for (integer i = 0; i < values.size(); i++) {
16      if (values.get(i).field == 'testField__c' && 
17          values.get(i).value == 'desired value') {
18        // ...process accordingly...
19      }
20    }
21  }
22}

例: メタデータのリリース

次の例では、Apex のメタデータ API を使用して、MetadataRecordName カスタムメタデータレコードの customField カスタム項目値を更新し、その変更内容を登録者組織にリリースします。リリースは非同期のため、Metadata.DeployCallback インターフェースを実装するコールバッククラスを指定する必要があります。これは、その後、キュー内のリリースが完了したときに使用されます。

1public class CreateMetadata{
2  public void updateAndDeployMetadata() {
3    // Setup custom metadata to be created in the subscriber org.
4    Metadata.CustomMetadata customMetadata =  new Metadata.CustomMetadata();
5    customMetadata.fullName = 'ISVNamespace__MetadataTypeName.MetadataRecordName';
6
7    Metadata.CustomMetadataValue customField = new Metadata.CustomMetadataValue();
8    customField.field = 'customField__c';
9    customField.value = 'New value';
10
11    customMetadata.values.add(customField);
12
13    Metadata.DeployContainer mdContainer = new Metadata.DeployContainer();
14    mdContainer.addMetadata(customMetadata);
15
16    // Setup deploy callback, MyDeployCallback implements
17    // the Metadata.DeployCallback interface (code for
18    // this class not shown in this example)
19    MyDeployCallback callback = new MyDeployCallback();
20
21    // Enqueue custom metadata deployment
22    Id jobId = Metadata.Operations.enqueueDeployment(mdContainer, callback);
23  }
24}

例: 2 つのメタデータレコードの同期作成

メタデータレコードとそれを参照する別のメタデータレコードを同じトランザクションで作成します。親レコードが名前空間を使用してインストールされている場合、API 参照名に recordNs__ というプレフィックスを付けます。

カスタムメタデータリレーションでは、同じタイプのレコードを相互に関連付けることができません。

メモ

1public class CreateMetadata {
2 
3    public Id doCreate(
4        String parentRecDevName,
5        String parentRecLabel, 
6        String childRecDevName, 
7        String childRecLabel) {
8 
9        Metadata.DeployContainer mdContainer = new Metadata.DeployContainer();
10 
11        Metadata.CustomMetadata parentRecord = new Metadata.CustomMetadata();
12        parentRecord.fullName = 'ParentType.' + parentRecDevName;
13        parentRecord.label = parentRecLabel;
14        mdContainer.addMetadata(parentRecord);
15 
16        Metadata.CustomMetadata childRecord = new Metadata.CustomMetadata();
17        childRecord.fullName = 'ChildType.' + childRecDevName;
18        childRecord.label = childRecLabel;
19        Metadata.CustomMetadataValue relValue = new Metadata.CustomMetadataValue();
20        relValue.field = 'Parent__c';
21        relValue.value = parentRecDevName;
22        childRecord.values.add(relValue);
23        mdContainer.addMetadata(childRecord);
24 
25        Id jobId = Metadata.Operations.enqueueDeployment(mdContainer, null);
26        return jobId;
27    }
28 
29}

Operations のメソッド

Operations のメソッドは次のとおりです。

clone()

Metadata.Operations の複製を作成します。

署名

public Object clone()

戻り値

型: Object

enqueueDeployment(container, callback)

カスタムメタデータコンポーネントを非同期にリリースします。

署名

public static Id enqueueDeployment(Metadata.DeployContainer container, Metadata.DeployCallback callback)

パラメータ

container
型: Metadata.DeployContainer
リリースする一連のメタデータコンポーネントを含むコンテナ。
callback
型: Metadata.DeployCallback
Metadata.DeployCallback インターフェースを実装するクラス。リリース結果に関する情報を返すために Salesforce が使用します。

戻り値

型: Id

リリース要求の ID。

retrieve(type, fullNames)

カスタムメタデータコンポーネントのリストを取得します。

署名

public static List<Metadata.Metadata> retrieve(Metadata.MetadataType type, List<String> fullNames)

パラメータ

type
型: Metadata.MetadataType
メタデータコンポーネントのデータ型。
fullNames
型: List<String>
取得するコンポーネント名のリスト。コンポーネント名の形式についての詳細は、「Metadata.fullName()」を参照してください。

戻り値

型: List<Metadata.Metadata>