Batch Apex実行方式(並列・直列)とトランザクション間の状態保持
- Jan
- 09
- Posted by Lin
- Posted in APEX, Salesforce
以前のポストに、スケージュール可能なApex一括処理バッチの実装について共有しましたが、
本ポストには引き続きApex一括処理バッチに関して、Apex一括処理バッチの各トランザクションの実行方式と各トランザクション間の状態保持について共有したいと思います。
実際には直列です、下記のサンプルコードとデバッグログではこの問題を解釈できます。
下記のサンプルコードのように:
参照 : https://developer.salesforce.com/docs/atlas.ja-jp.204.0.apexcode.meta/apexcode/apex_batch_interface.htm
Enjoy it!
Apex一括処理バッチ実行方式(並列・直列)
ご存知の通り、Apex の一括処理ジョブの各実行は、個別のトランザクションとみなされます。なので、1,000 件のレコードを含むApexの一括処理ジョブが、それぞれ 200 件のレコードを含む5つのトランザクションと分けて実行されます。複数のジョブが実行されている場合、Apexの一括処理ジョブの execute メソッドが並行して実行されますが、1つApex一括処理の各トランザクションが実行されるのは並列と直列どちらでしょうか?実際には直列です、下記のサンプルコードとデバッグログではこの問題を解釈できます。
SampleBatch.cls
5トランザクションのデバッグログ内容
状態の保持
メンバー変数(静的メンバー変数も含む)の値がトランザクション間で保持せず、リセットされます。その状態をトランザクション間で保持したいであれば、例えばレコードのカウントや集計する場合、クラス定義でDatabase.Statefulを指定することで、インスタンス変数のみ(静的メンバー変数ではなく)がトランザクション間で値を保持できます。下記のサンプルコードのように:
SampleBatchWithState.cls
5トランザクションのデバッグログ内容
参照 : https://developer.salesforce.com/docs/atlas.ja-jp.204.0.apexcode.meta/apexcode/apex_batch_interface.htm
Enjoy it!
Post Tagged with Batch Apex, Database.Stateful, Maintain, Parallel, Salesforce, Series, Stateful, Transaction
最近の投稿
- Salesforce DevTools リリースノート (version 3.10.0) – Lightning上項目一括編集
- Salesforce DevTools リリースノート (version 3.9.0) – 項目検索、SOQLクエリエディター
- Salesforce DevTools リリースノート (version 3.8.0)
- Salesforce DevTools利用者が10,000名達成!ありがとう!
- Lightning ComponentのApex側とデータ通信にPromiseを活用しよう
Top Posts
- Salesforce DevTools – 5万人以上愛用!強力なSalesforce開発者ツール - 226.8K views
- Date format && DateTime format - 209.9K views
- Salesforce一括編集 (Chrome拡張機能) -標準リストビューで一括新規, 更新, コピー, 削除, ClassicとLightning両方使える! - 161.1K views
- スケージュール可能なApex一括処理バッチの実装 - 124.9K views
- Sublime Text 3でSalesforceの爆速開発環境を構築 - 123.1K views
カテゴリー
- APEX
- アプリ
- Custom Label
- Custom Metadata
- Custom Setting
- Design & UI
- 交流会
- Heroku
- iOS & Object-c
- Lightnint Component
- Linux & Mac OS
- Metadata API
- Node.js
- Open Source
- Other
- PHP Framework
- Release Notes
- REST API
- Salesforce
- Salesforce DevTools
- Salesforce DX
- SOQL
- Tooling API
- Unit Tests
- Validation Rule
- Visualforce
- WordPress
コメントを投稿するにはログインしてください。