グローバルクラスBatchSync実装Database.Batchable <のsObject>、Database.AllowsCallouts { 公共の文字列のクエリ=「SELECT ID、アカウントから名前」; グローバルDatabase.QueryLocator開始(Database.BatchableContext BC){ Database.getQueryLocator(クエリ)を返します。 } グローバル無効実行(Database.BatchableContext BC、リスト<アカウント>の記録){ String型のエンドポイント。 {(I ++; I <records.size()は、i = 0の整数)のために {試します HttpRequestのREQ =新しいのHttpRequest(); HttpResponse RES =新しいのHttpResponse(); HTTP HTTP =新しいHTTP(); PARAMSに//設定値 エンドポイント=「あなたのエンドポイント」; req.setHeader( '認可'、ヘッダ)。 req.setHeader( 'Content-Typeの'、 'アプリケーション/ JSON'); req.setEndpoint(エンドポイント)。 req.setMethod( 'POST'); req.setBody(「あなたが送信したい情報」); (真)req.setCompressed。//これは、SFによるIMPですが、かどうかを確認してください // Webサービスの情報を受け付けます。鉱山はしませんでした:P //は、これをfalseに設定する必要がありました (もし!Test.isRunningTest()){ RES = http.send(REQ)。 ストリングsJson = res.getBody()。 System.debug( '筋力:' + res.getBody()); } //今uは応答とにやりたいです。 } キャッチ(例外e){ System.debug( 'エラー:' + e.getMessage()+ 'LN:' + e.getLineNumber()); } } } グローバル無効仕上げ(Database.BatchableContext BC){ } }
BatchSync BS =新しいBatchSync()。
Database.executeBatch(BS、10)。//あなたも10未満でくださいすることができ
ます。また、これらのリンクからの助けを取ることができます
?1-ます。https://developer.salesforce.com/forums/ ID = 906F0000000kK6VIAU
2-のhttp://www.forcedisturbances.com/2012/03 /caching-data-from-googles-geocoding.html
http://www.platforce.org/batch-apex.html
https://www.biswajeetsamal.com/blog/batch-apex-with-webservice-callout/
グローバルクラスbatchAccountUpdate実装Database.Batchable <のsObject>、Database.AllowsCallouts { グローバルDatabase.QueryLocator開始(Database.BatchableContext BC) { 文字列OBJ = 'ACA'; 文字列のクエリ= 'SELECT ID、CreatedDateに、CreatedBy.Name、Ticket_Type__c =ケースからAttest_ID__c:OBJ'; Database.getQueryLocator(クエリ)を返します。 } グローバルボイドは実行(Database.BatchableContext BC、リスト<アカウント>スコープ) { 一覧<Voice_File_Loader__c> searchVFL = [。SELECT ID、Call_Date_Time__c、End_Window__c、Agent_Name__c、Voice_File_Loader__cからVoice_File_Location__c]。 {(範囲アカウントcheckCase)のために {(searchVFL Voice_File_Loader__c matchVFL)のために ブール後=(checkCase.CreatedDate> = matchVFL.Call_Date_Time__c)。 ブール前=(checkCase.CreatedDate <= matchVFL.End_Window__c)。 ブールTIMECHECK =(前&&後)。 ブールnameCheck =(checkCase.CreatedBy.Name.equalsIgnoreCase(matchVFL.Agent_Name__c))。 IF(TIMECHECK && nameCheck){ アタッチメントATTは=新しいアタッチメント(); HTTPバインディング=新しいHTTP(); HttpRequestのREQ =新しいのHttpRequest(); req.setMethod( 'GET'); req.setEndpoint(matchVFL.Voice_File_Location__c)。 HttpResponse RES = binding.send(REQ)。 ブロブB = res.getbodyasblob()。 att.name = '声Attestation.wav'; att.body = B。 att.parentid = checkCase.Id。 system.debug( '#############' +へ)。 挿入するには、 matchVFLを削除します。 } } } } グローバル無効仕上げ(Database.BatchableContext BC) { }
batchAccountUpdate a = new batchAccountUpdate(); database.executebatch(a,10);
グローバルクラスAccountBatchApex実装Database.Batchable <のsObject>、Database.AllowsCallouts { グローバルDatabase.QueryLocator開始(Database.BatchableContext BC){ 文字列soqlQuery = 'SELECT名前、AccountNumberを、アカウントからタイプ'; リターンDatabase.getQueryLocator(soqlQuery)。 } グローバルボイドが{(Database.BatchableContextのBC、リスト<アカウント>スコープ)を実行します {(スコープアカウントACC)用 もし(acc.Type.equals( 'お客様 - 直接')){ {試します HttpRequestの要求=新しいのHttpRequest(); HttpResponseに応答=新しいのHttpResponse(); HTTP HTTP =新しいHTTP(); 文字列名=「あなたのユーザ名」; 文字列のパスワード=「パスワード」; ブロブheaderValueの= Blob.valueOf(ユーザ名+ ':' +パスワード); ストリングauthorizationHeader = 'BASIC' + EncodingUtil.base64Encode(headerValueの)。 request.setHeader( '認証'、authorizationHeader)。 request.setHeader( 'Content-Typeの'、 'アプリケーション/ JSON'); request.setEndpoint( 'あなたのエンドポイントURL'); request.setMethod( 'POST'); request.setBody( '送信する情報'); 応答= http.send(リクエスト)。 IF(response.getStatusCode()== 200){ ストリングjsonResponse = response.getBody()。 System.debug( '対応 - ' + jsonResponse)。 } } キャッチ(例外){ System.debug( 'エラー - ' + e.getMessage()); } } } } グローバル無効仕上げ(Database.BatchableContext BC){ } }
https://blogs.absyz.com/2017/12/11/making-callouts-with-batch-apex-for-data-of-over-12-mb/
グローバルクラスmybatchclassを実装Database.Batchable <のsObject>、database.stateful、database.allowcallouts { //変数はSOQLで使用します 公共日今日= system.today(); 公共セット<ID> finalaccounts =新しいセット<ID>(); 公共の文字列SOQL = 'アカウントからどこCreatedDateに= SELECT ID、名前、タイプ:今日'; バッチクラスの// Startメソッド グローバルDatabase.queryLocator開始(Database.BatchableContext BC){ //クエリのレコードを リターンDatabase.getQueryLocator(SOQL)。 } //は、バッチクラスのメソッドを実行します グローバルボイドが{(Database.BatchableContextのBC、リスト<アカウント> accountlist)を実行します //連絡先のリストを反復処理すると、そのアカウントIDを取得します {(accountlistアカウントCC)のために finalaccounts.add(cc.Id)。 } } //バッチクラスの仕上げ方法。あなたは吹き出しを作るところです グローバル無効仕上げ(Database.BatchableContext BC){ attachfiles.attachfilestoaccount(finalaccounts)。 // 12メガバイトよりもサイズの大きな添付ファイルのデータを取得するため、ここで吹き出しを作ります } }
//あなたは、以下の構文を使用して、匿名のデバッグウィンドウからバッチクラスを呼び出すことができます mybatchclassメガバイト=新しいmybatchclass(); Database.executebatch(MB)。
パブリック クラスattachfiles(){ 公共の 静的な 無効 attachfilestoaccount(セット<ID> listaccount) { // 最初は、authTokenの、エンドポイントとaccessTokenとしてコールアウトパラメータ設定 文字列authTokenの=「テスト認証トークンを」。 文字列authEndpoint = 'テストauthEndpoint' ; 文字列calloutEndpoint = 'テストcalloutEndpoint' ; 文字列accessToken = 'test_act' ; // 今作るHTTPコールアウト のHttp H1 = 新しいHTTP(); HttpRequestのhreq2 = 新しいのHttpRequest(); 文字列dealId = '' ; hreq2.setEndPoint(calloutEndpoint)。 hreq2.setMethod( 'POST' ); hreq2.setHeader( 'コンテンツタイプ'、 'アプリケーション/ xmlの' ); hreq2.setHeader( '認可'、 'ベアラ' +」「+ accessToken)。 hreq2.setTimeout( 30000 )。 hreq2.setBodyAsBlob(Blob.valueOf( 'TestClassを' )); // 添付ファイル含む応答取得 のHttpResponse RES = h1.send(hreq2)を、 一覧 <添付資料> atLst = 新しいリスト<添付資料> (); 以下のための{:(listaccountアカウントACC) 添付ファイルATT1は = 新しいアタッチメント(); att1.Body = Blob.valueOf(res.getbody())。 att1.Name = String.valueOf( 'RESPONSE.TXT' )。 att1.ParentId = acc.Id。 atLst.add(ATT1)。 } // 最後に、リストを挿入し た場合(atLst.size()> 0 ) atLstを挿入します。 } }
http://mysfdc1.blogspot.com/2017/07/how-to-make-http-callouts-in-batch-class.html
グローバルクラスBatchSync実装Database.Batchable <のsObject>、Database.AllowsCallouts { 公共の文字列のクエリ=「SELECT ID、アカウントから名前」; グローバルDatabase.QueryLocator開始(Database.BatchableContext BC){ Database.getQueryLocator(クエリ)を返します。 } グローバル無効実行(Database.BatchableContext BC、リスト<アカウント>の記録){ String型のエンドポイント。 {(I ++; I <records.size()は、i = 0の整数)のために {試します HttpRequestのREQ =新しいのHttpRequest(); HttpResponse RES =新しいのHttpResponse(); HTTP HTTP =新しいHTTP(); PARAMSに//設定値 エンドポイント=「あなたのエンドポイント」; req.setHeader( '認可'、ヘッダ)。 req.setHeader( 'Content-Typeの'、 'アプリケーション/ JSON'); req.setEndpoint(エンドポイント)。 req.setMethod( 'POST'); req.setBody(「あなたが送信したい情報」); (真)req.setCompressed。//これは、SFによるIMPですが、かどうかを確認してください // Webサービスの情報を受け付けます。鉱山はしませんでした:P //は、これをfalseに設定する必要がありました (もし!Test.isRunningTest()){ RES = http.send(REQ)。 ストリングsJson = res.getBody()。 System.debug( '筋力:' + res.getBody()); } //今uは応答とにやりたいです。 } キャッチ(例外e){ System.debug( 'エラー:' + e.getMessage()+ 'LN:' + e.getLineNumber()); } } } グローバル無効仕上げ(Database.BatchableContext BC){ } }