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

Apex 保存プロセスのカスタマイズ

このセクションでは、APEX コールを使用した保存プロセスをカスタマイズするための各種のワークフロープロセスについて説明します。
  1. 管理パッケージの SObject 項目の値を変更します。
    1// Get the TPM_Promotion instance
    2TPM_Promotion promotion = (TPM_Promotion) args.get('promotion');
    3
    4// Update the Promotion__c SObject field
    5Promotion__c myPromo = (Promotion__c) promotion.getPromotion().getRecord();
    6myPromo.Slogan_Language_1__c = 'My New Slogan';
    7
    8// Update the First Tactic__c Group Text
    9Tactic__c myTactic = (Tactic__c) promotion.getTactics()[0].getRecord();
    10myTactic.Group_Text__c = 'My New group text';
  2. 管理パッケージの SObject レコードを削除します。
    1// Get the TPM_Promotion instance
    2TPM_Promotion promotion = (TPM_Promotion) args.get('promotion');
    3
    4// Delete the first Tactic__c SObject
    5TPM_Promotion.Record tacticRecordWrapper = promotion.getTactics()[0];
    6if (!tacticRecordWrapper.isDeleted()) { // We can also check if the record is new with isNew()
    7    tacticRecordWrapper.setIsDeleted(true);
    8}
  3. カスタム SObject をプロモーション保存に追加します。
    プロモーションの SObject データベースのコミット時に保存される別の SObject を追加できます。
    1// Get the TPM_Promotion instance
    2TPM_Promotion promotion = (TPM_Promotion) args.get('Promotion');
    3
    4// Append a new SObject to be saved
    5MyCustomSObject__c mySObject = new MyCustomSObject__c();
    6TPM_Promotion.Record myRecordWrapper = promotion.append(mySObject);

    TPM_Promotion クラスでは、トランザクションのすべての操作をカプセル化している間に、プロモーション関連のすべての SObject が all or none の方式でコミットされます。フックは複数の TPM プロセスの複数の場所からコールされます。したがって、不完全なデータや無効なデータがコミットされないようにするため、提供されたメソッドを使用して、カスタムレコードやリレーションを処理することがベストプラクティスとして推奨されます。カスタム sobject レコードに対する SObject 書き込み順序は、append コールの順序によって決まります。

  4. 保存するカスタム SObject をリレーションと共に追加します。
    1// Get the TPM_Promotion instance
    2TPM_Promotion promotion = (TPM_Promotion) args.get('Promotion');
    3
    4// Append a new SObject to be saved
    5MyCustomSObject__c mySObject = new MyCustomSObject__c();
    6TPM_Promotion.Record myRecordWrapper = promotion.append(mySObject);
    7
    8// Add relationship to the Promotion__c record
    9promotion.addRelationship(
    10    myRecordWrapper,
    11    MyCustomSObject__c.Promotion__c,
    12    promotion.getPromotion()
    13);
    14
    15// Append an additional Child SObject
    16MyChildSObject__c myChildSObject = new MyChildSObject__c();
    17TPM_Promotion.Record myChildRecordWrapper = promotion.append(myChildSObject);
    18
    19// Relate the child object to our custom object
    20promotion.addRelationship(
    21    myChildRecordWrapper,
    22    MyChildSObject__c.MyCustomSObject__c,
    23    myRecordWrapper
    24);
  5. TPM UI でカスタムデータを保存します。
    プロモーションデータと共に保存するために送信されたカスタムデータを保存します。コール可能なクラスでは、プロモーション状態の一部として設定されたカスタム状態にアクセスできます。

    この状態はシリアライズされます。このデータをデシリアライズする操作は、データアクセスが可能になる前に行ってください。

    メモ

    1// Get the TPM_Promotion instance
    2TPM_Promotion promotion = (TPM_Promotion) args.get('promotion');
    3
    4// Get the custom data serialized data
    5String payloadString = (String) args.get('customState');
    6
    7// Deserialize it to be able to access the data
    8MyCustomStructure payload = (MyCustomStructure) JSON.deserialize(payloadString, MyCustomStructure.class);
    9
    10// Add the retrieved records to be saved on the promotion transaction
    11if (payload.myRecords != null) {
    12    for (MyRecord__c mr: payload.myRecords) {
    13        // Add the sobject record to the list of objects to insert or update
    14        TPM_Promotion.Record = wrapper = promotion.append(mr);
    15        // Relate it to the promotion (if needed)
    16        promotion.addRelationship(
    17            wrapper,
    18            MyRecord__c.Promotion__c,
    19            promotion.getPromotion()
    20        );
    21    }
    22}