Pemrosesan batch memberi Anda kemampuan untuk menjalankan beberapa operasi dalam satu permintaan, tanpa harus mengirimkan setiap operasi satu per satu.
Catatan: Untuk melakukan operasi batch, Anda harus menggunakan versi terbaru library klien Google Data API Anda. Operasi batch tidak didukung oleh library klien JavaScript.
Audiens
Dokumen ini ditujukan untuk programmer yang ingin mengirimkan beberapa operasi dalam satu permintaan menggunakan batch processing.
Dokumen ini mengasumsikan bahwa Anda telah memahami penggunaan Library Klien Java Data. Contoh dalam dokumen ini menunjukkan cara menggunakan library klien Java untuk menjalankan operasi batch.
Contoh dalam dokumen ini khusus untuk Google Base Data API. Namun, layanan lain juga dapat menyediakan kemampuan batch.
Catatan: Protokol dan prosedur umum akan sama untuk library klien lainnya, tetapi metode spesifik untuk menjalankan permintaan batch mungkin berbeda. Harap lihat dokumentasi khusus library klien.
Pengantar
Dengan menggunakan feed batch GData, Anda dapat mengumpulkan beberapa operasi sisipkan, perbarui, hapus, dan buat kueri, lalu kirim dan jalankan semuanya sekaligus.
Misalnya, feed berikut mencakup empat operasi:
<feed> <entry> <batch:operation type="insert"/> ... what to insert ... </entry> <entry> <batch:operation type="update"/> ... what to update ... </entry> <entry> <batch:operation type="delete"/> ... what to delete ... </entry> <entry> <batch:operation type="query"/> ... what to query ... </entry> </feed>
Layanan ini akan menjalankan sebanyak mungkin perubahan yang diminta dan menampilkan informasi status yang dapat digunakan untuk mengevaluasi keberhasilan atau kegagalan setiap operasi.
Layanan ini mencoba menjalankan setiap operasi dalam batch, meskipun beberapa operasi yang disertakan dalam batch tidak berhasil.
Mengirimkan permintaan batch
Permintaan batch harus dikirim sebagai HTTP POST ke URL batch. Feed yang berbeda mendukung operasi batch yang berbeda. Feed hanya baca hanya mendukung kueri.
Untuk mengetahui apakah feed tertentu mendukung operasi batch, Anda dapat membuat kueri feed. Jika feed berisi hubungan link "batch" di tingkat feed, hal ini menunjukkan bahwa feed mendukung operasi batch.
Hubungan link "batch" adalah elemen <link>
dengan rel="http://schemas.google.com/g/2005#batch"
. Atribut href
hubungan link menentukan URL tempat dokumen feed untuk operasi batch
dapat diposting.
Misalnya, jika Anda menjalankan: GET http://www.google.com/base/feeds/items
(feed "items" Google Base reguler), Anda mungkin mendapatkan respons berikut:
<feed xmlns=... <id>http://www.google.com/base/feeds/items</id> <link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://www.google.com/base/feeds/items"/> <link rel="http://schemas.google.com/g/2005#post" type="application/atom+xml" href="http://www.google.com/base/feeds/items"/> <link rel="http://schemas.google.com/g/2005#batch" type="application/atom+xml" href="http://www.google.com/base/feeds/items/batch"/> ... </feed>
Dalam contoh ini, URL batchnya adalah http://www.google.com/base/feeds/items/batch
.
Menulis feed operasi batch
Feed operasi berisi daftar entri untuk menyisipkan, memperbarui, menghapus, atau membuat kueri.
Setiap operasi ditentukan oleh elemen <batch:operation type="insert|update|delete|query"/>
.
Elemen ini dapat berupa turunan langsung dari elemen <feed>
, turunan langsung dari entri apa pun dalam feed, atau keduanya. Jika disertakan dalam entri, kode tersebut akan menentukan operasi yang akan dijalankan untuk entri khusus tersebut. Jika disertakan dalam feed, elemen ini menentukan
operasi default yang akan dijalankan pada entri yang tidak memiliki elemen <batch:operation/>
.
Jika entri atau feed tidak menentukan operasi, operasi defaultnya
adalah insert
.
Aplikasi tidak boleh menerapkan beberapa operasi ke entri yang sama dalam satu feed batch. Hasilnya tidak dapat ditentukan jika Anda menentukan beberapa operasi untuk entri yang sama.
Untuk meningkatkan performa, operasi mungkin tidak diproses sesuai urutan permintaannya. Namun, hasil akhir akan selalu sama seperti jika entri telah diproses secara berurutan.
Jumlah byte dalam XML yang Anda kirim ke server tidak boleh melebihi 1 MB (1.048.576 byte). Secara umum, tidak ada batasan jumlah operasi yang dapat Anda minta selama ukuran total byte tidak melebihi 1 MB. Namun, beberapa layanan mungkin memberlakukan batasan tambahan.
Untuk menggunakan operasi batch, Anda harus menambahkan deklarasi namespace batch sebagai atribut ke elemen <f
eed>
:
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/" ... xmlns:batch="http://schemas.google.com/gdata/batch">
Menyisipkan operasi
Operasi penyisipan ditunjukkan sebagai berikut:
<batch:operation type="insert">
Operasi penyisipan setara dengan POSTING entri. Saat operasi berhasil, seluruh konten entri ditampilkan, dengan elemen <id>
dokumen dan elemen <batch:status code="201"/>
yang diperbarui.
Berikut adalah contoh permintaan penyisipan yang berhasil:
<entry> <title type="text">...</title> <content type="html">...</content> <batch:id>itemA</batch:id> <batch:operation type="insert"/> <g:item_type>recipes</g:item_type> ... </entry>
Berikut adalah contoh respons terhadap permintaan penyisipan yang berhasil:
<entry> <batch:status code="201"/> <batch:id>itemA</batch:id> <batch:operation type="insert"/> <id>http://www.google.com/base/feeds/items/17437536661927313949</id> <link rel="self" type="application/atom+xml" href="http://www.google.com/base/feeds/items/17437536661927313949"/> <title type="text">...</title> <content type="html">...</content> <g:item_type>recipes</g:item_type> ... </entry>
Operasi update
<batch:operation type="update">
Operasi pembaruan
sama dengan menjalankan PUT
pada URL yang direferensikan oleh
elemen <id>
entri. Saat operasi berhasil, seluruh konten entri ditampilkan
dengan elemen <batch:status
code="200"/>
.
Catatan: Pada feed tertentu, Anda juga perlu menentukan link rel="edit"
entri dengan permintaan update batch. Ini mencakup feed yang mendukung gaya v1 Google Cloud Protocol dari serentak optimis, dan feed yang tidak memiliki ID yang merupakan URL.
Berikut adalah contoh permintaan pembaruan:
<entry> <id>http://www.google.com/base/feeds/items/17437536661927313949</id> <batch:operation type="update"/> ... </entry>
Berikut contoh respons yang berhasil:
<entry> <batch:status code="200"/> <id>http://www.google.com/base/feeds/items/17437536661927313949</id> <batch:operation type="update"/> ... </entry>
Catatan: Beberapa feed menggunakan ETag yang kuat untuk mencegah Anda mengubah perubahan pengguna lain secara tidak sengaja. Saat membuat permintaan update batch untuk entri dalam salah satu feed ini, Anda harus memberikan nilai ETag dalam atribut gd:etag
entri. Misalnya, <entry gd:etag="'F08NQAxFdip7IWA6WhVR'">...<batch:operation type="update"/>...
Operasi update parsial
Untuk feed yang mendukung pembaruan sebagian, Anda juga dapat menggunakannya dalam permintaan batch. Operasi update parsial
setara dengan menjalankan PATCH
pada URL yang direferensikan oleh
elemen <id>
entri. Saat operasi berhasil, seluruh konten entri ditampilkan
dengan elemen <batch:status
code="200"/>
.
Catatan: Pada feed tertentu, Anda juga perlu menentukan link rel="edit"
entri dengan permintaan update batch. Ini mencakup feed yang mendukung gaya v1 Google Cloud Protocol dari serentak optimis, dan feed yang tidak memiliki ID yang merupakan URL.
<batch:operation type="patch"/>
Berikut adalah contoh permintaan update sebagian:
<entry gd:fields="content" gd:etag="FE8LQQJJeSp7IWA6WhVa"> <id>http://www.google.com/calendar/feeds/jo@gmail.com/private/full/entryID</id> <batch:operation type="patch"/> <title>New title</title> </entry>
Berikut adalah contoh respons yang berhasil:
<entry gd:etag="FE8LQQJJeSp7IWA6WhVa"> <batch:status code="200"/> <id>http://www.google.com/calendar/feeds/jo@gmail.com/private/full/entryID</id> <batch:operation type="patch"/> <title>New title</title> <content></content> ...rest of the entry... </entry>
Menghapus operasi
<batch:operation type="delete">
Operasi penghapusan setara dengan menjalankan DELETE
pada URL yang direferensikan oleh elemen <id>
entri. Untuk operasi penghapusan, Anda hanya perlu mengirim elemen <id>
untuk menghapus entri. Informasi lain apa pun yang Anda berikan dalam elemen yang tidak ada dalam namespace batch:
akan diabaikan. Saat operasi berhasil,
entri dengan ID yang sama akan dikembalikan dengan elemen <batch:status
code="200"/>
.
Catatan: Pada feed tertentu, Anda juga harus menentukan link rel="edit"
entri dengan permintaan penghapusan batch. Ini mencakup feed yang mendukung gaya v1 Google Cloud Protocol dari serentak optimis, dan feed yang tidak memiliki ID yang merupakan URL.
Berikut adalah contoh permintaan penghapusan:
<entry> <batch:operation type="delete"/> <id>http://www.google.com/base/feeds/items/17437536661927313949</id> </entry>
Berikut contoh respons yang berhasil:
<entry> <batch:operation type="delete"/> <id>http://www.google.com/base/feeds/items/17437536661927313949</id> <batch:status code="200" reason="Success"/> </entry>
Catatan: Beberapa feed menggunakan ETag yang kuat untuk mencegah Anda mengubah perubahan pengguna lain secara tidak sengaja. Saat membuat permintaan penghapusan batch untuk entri di salah satu feed ini, Anda harus memberikan nilai ETag dalam atribut gd:etag
entri. Misalnya, <entry gd:etag="'F08NQAxFdip7IWA6WhVR'">...<batch:operation type="delete"/>...
Operasi kueri
<batch:operation type="query">
Operasi kueri setara dengan mengeksekusi GET
pada URL yang direferensikan oleh elemen <id>
entri. Saat operasi berhasil, seluruh konten entri akan ditampilkan.
Catatan: Pada feed tertentu, Anda juga harus menentukan link rel="self"
entri dengan permintaan kueri batch. Ini mencakup feed yang tidak memiliki ID yang merupakan URL.
Berikut adalah contoh permintaan kueri:
<entry> <id>http://www.google.com/base/feeds/items/1743753666192313949</id> <batch:operation type="query"/> </entry>
Berikut contoh respons yang berhasil:
<entry> <id>http://www.google.com/base/feeds/items/1743753666192313949</id> <batch:operation type="query"/> <batch:status code="200" reason="Success"/> ... </entry>
Operasi pelacakan
Hasil entri GData tidak selalu ditampilkan dalam urutan yang sama seperti permintaan. Anda dapat melacak operasi sepanjang masa aktifnya menggunakan ID.
Untuk operasi pembaruan, penghapusan, dan kueri, Anda dapat menggunakan ID entri itu sendiri untuk melacak operasi.
Untuk operasi penyisipan, karena belum ada ID, Anda dapat meneruskan ID operasi. ID ini dapat digunakan untuk menautkan entri hasil ke entri permintaan. ID operasi diteruskan dalam elemen <batch:id>
.
Untuk setiap operasi, GData menampilkan respons yang menyatakan apakah operasi berhasil atau gagal. Setiap respons mengidentifikasi entri terkait. Untuk operasi pembaruan, penghapusan, atau kueri, atau operasi penyisipan yang berhasil, ID entri selalu dikembalikan. Jika Anda telah menentukan ID batch, ini juga akan dikembalikan. Karena operasi penyisipan yang tidak berhasil tidak memiliki ID entri terkait, hanya ID batch yang akan ditampilkan.
Dengan menggunakan ID setiap operasi, Anda hanya dapat mencoba ulang operasi yang gagal, tanpa harus mengirim ulang seluruh batch operasi.
Konten <batch:id>
adalah nilai string yang ditentukan klien dan akan dipantulkan kembali dalam entri respons yang sesuai.Anda
dapat menentukan nilai apa pun yang akan membantu klien menghubungkan respons
dengan entri dalam permintaan asli. Elemen ini akan dipantulkan apa adanya di entri yang sesuai, meskipun operasinya gagal. GData tidak pernah menyimpan
atau menafsirkan konten ID batch ini.
Contoh berikut menunjukkan feed operasi batch. Perhatikan bahwa elemen <batch:id>
melabeli operasi ini sebagai itemB
.
<entry> <title type="text">...</title> <content type="html">...</content> <batch:id>itemB</batch:id> <batch:operation type="insert"/> <g:item_type>recipes</g:item_type> </entry>
Contoh berikut menunjukkan entri status batch yang ditampilkan sebagai respons terhadap operasi ini.
<entry> <id>http://www.google.com/base/feeds/items/2173859253842813008</id> <published>2006-07-11T14:51:43.560Z</published> <updated>2006-07-11T14:51: 43.560Z</updated> <title type="text">...</title> <content type="html">...</content> <link rel="self" type="application/atom+xml" href="http://www.google.com/base/feeds/items/2173859253842813008"/> <link rel="edit" type="application/atom+xml" href="http://www.google.com/base/feeds/items/2173859253842813008"/> <g:item_type>recipes</g:item_type> <batch:operation type="insert"/> <batch:id>itemB</batch:id> <batch:status code="201" reason="Created"/> </entry>
Menangani kode status
Kode status dinyatakan oleh elemen berikut:
<batch:status code="200|201|404|500|..." reason="reason" [content-type="type"]/>
Setiap entri dalam feed respons berisi satu elemen <batch:status>
. Elemen ini menjelaskan apa yang terjadi saat menjalankan operasi. Ini meniru respons HTTP yang akan dikirim jika operasi telah dikirim satu per satu, bukan sebagai bagian dari feed batch.
Anda perlu memeriksa elemen <batch:status>
dari setiap entri dalam respons untuk mengetahui apakah operasi terkait berhasil diproses. Atribut code="n"
berisi kode status GData.
Deskripsi status
Atribut reason="reason"
dari elemen <batch:status>
berisi penjelasan yang lebih panjang tentang status operasi.
Jenis konten
Atribut content-type="type"
dari elemen <batch:status>
berisi jenis MIME dari data yang terdapat dalam elemen <batch:status>
. Ini sama dengan header Content-Type
dari respons status HTTP. Atribut ini bersifat opsional.
Saat jenis konten ditetapkan, isi elemen <batch:status>
menjelaskan apa yang salah saat memproses entri.
Mengidentifikasi operasi yang terganggu
Elemen berikut disertakan dalam respons untuk operasi yang terganggu:
<batch:interrupted reason="reason" success="N" failures="N" parsed="N">
Elemen ini berarti bahwa batch processing terganggu dan semua upaya pemulihan penyebab gangguan gagal. Beberapa entri mungkin telah berhasil diproses. Semua entri yang tidak dilaporkan berhasil sebelum titik ini diabaikan.
Elemen ini sangat tidak biasa dan biasanya menandakan bahwa feed yang dikirim dalam isi permintaan tidak dalam format XML yang benar.
Seperti elemen <batch:status>
, kode status singkat dapat ditemukan di atribut reason
. Respons yang lebih lama juga
dapat ditemukan di dalam elemen.
Contoh operasi batch dan feed status
Berikut adalah feed operasi batch yang dapat dikirim ke server. Feed ini
meminta server menghapus dua entri dan menambahkan dua entri baru. Perhatikan bahwa elemen <feed>
harus menyertakan delarasi namespace untuk batch, seperti yang disorot dalam contoh di bawah ini.
POST : http://www.google.com/base/feeds/items/batch <?xml version="1.0" encoding="UTF-8"?> <feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/" xmlns:g="http://base.google.com/ns/1.0" xmlns:batch="http://schemas.google.com/gdata/batch"> <title type="text">My Batch Feed</title> <entry> <id>http://www.google.com/base/feeds/items/13308004346459454600</id> <batch:operation type="delete"/> </entry> <entry> <id>http://www.google.com/base/feeds/items/17437536661927313949</id> <batch:operation type="delete"/> </entry> <entry> <title type="text">...</title> <content type="html">...</content> <batch:id>itemA</batch:id> <batch:operation type="insert"/> <g:item_type>recipes</g:item_type> </entry> <entry> <title type="text">...</title> <content type="html">...</content> <batch:id>itemB</batch:id> <batch:operation type="insert"/> <g:item_type>recipes</g:item_type> </entry> </feed>
Anggaplah dua penyisipan berfungsi, tetapi salah satu dari dua penghapusan gagal. Dalam hal ini, feed status batch mungkin terlihat seperti berikut. Perhatikan bahwa entri telah diurutkan ulang dibandingkan dengan feed operasi batch.
<?xml version="1.0" encoding="UTF-8"?> <feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/" xmlns:g="http://base.google.com/ns/1.0" xmlns:batch="http://schemas.google.com/gdata/batch"> <id>http://www.google.com/base/feeds/items</id> <updated>2006-07-11T14:51:42.894Z</updated> <title type="text">My Batch</title> <link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://www.google.com/base/feeds/items"/> <link rel="http://schemas.google.com/g/2005#post" type="application/atom+xml" href="http://www.google.com/base/feeds/items"/> <link rel=" http://schemas.google.com/g/2005#batch" type="application/atom+xml" href="http://www.google.com/base/feeds/items/batch"/> <entry> <id>http://www.google.com/base/feeds/items/2173859253842813008</id> <published>2006-07-11T14:51:43.560Z</published> <updated>2006-07-11T14:51: 43.560Z</updated> <title type="text">...</title> <content type="html">...</content> <link rel="self" type="application/atom+xml" href="http://www.google.com/base/feeds/items/2173859253842813008"/> <link rel="edit" type="application/atom+xml" href="http://www.google.com/base/feeds/items/2173859253842813008"/> <g:item_type>recipes</g:item_type> <batch:operation type="insert"/> <batch:id>itemB</batch:id> <batch:status code="201" reason="Created"/> </entry> <entry> <id>http://www.google.com/base/feeds/items/11974645606383737963</id> <published>2006-07-11T14:51:43.247Z</published> <updated>2006-07-11T14:51: 43.247Z</updated> <title type="text">...</title> <content type="html">...</content> <link rel="self" type="application/atom+xml" href="http://www.google.com/base/feeds/items/11974645606383737963"/> <link rel="edit" type="application/atom+xml" href="http://www.google.com/base/feeds/items/11974645606383737963"/> <g:item_type>recipes</g:item_type> <batch:operation type="insert"/> <batch:id>itemA</batch:id> <batch:status code="201" reason="Created"/> </entry> <entry> <id>http://www.google.com/base/feeds/items/13308004346459454600</id> <updated>2006-07-11T14:51:42.894Z</updated> <title type="text">Error</title> <content type="text">Bad request</content> <batch:status code="404" reason="Bad request" content-type="application/xml"> <errors> <error type="request" reason="Cannot find item"/> </errors> </batch:status> </entry> <entry> <id>http://www.google.com/base/feeds/items/17437536661927313949</id> <updated>2006-07-11T14:51:43.246Z</updated> <content type="text">Deleted</content> <batch:operation type="delete"/> <batch:status code="200" reason="Success"/> </entry> </feed>
Menggunakan fungsi batch library klien GData Java
Bagian ini menjelaskan cara menggunakan fungsi batch library klien GData Java untuk mengirimkan grup permintaan penyisipan, pembaruan, dan/atau penghapusan.
Contoh yang diberikan di bagian ini menggunakan Google Base API.
Pertama, impor class yang akan Anda perlukan, selain class GData dan Google Base standar:
import com.google.gdata.data.batch.*; import com.google.api.gbase.client.*;
Untuk mengirimkan permintaan batch, Anda harus mendapatkan URL Batch dari feed. Cuplikan
kode berikut mengilustrasikan cara melakukannya, dengan asumsi bahwa feed
adalah objek GoogleBaseFeed
yang berisi informasi tentang feed:
Link batchLink = feed.getLink(Link.Rel.FEED_BATCH, Link.Type.ATOM); if (batchLink != null) { URL batchUrl = new URL(batchLink.getHref()); ... // batch handling } else { // batching is not supported for this feed }
Cuplikan kode berikut menyiapkan feed yang akan menyisipkan dua entri dalam satu operasi:
GoogleBaseEntry entry1 = new GoogleBaseEntry(); ... // initialize entry 1 content BatchUtils.setBatchId(entry1, "A"); // A is the local batch ID for this entry feed.addEntry(entry1); GoogleBaseEntry entry2 = new GoogleBaseEntry(); ... // initialize entry 2 content BatchUtils.setBatchId(entry2, "B"); // B is the local batch ID for this entry feed.addEntry(entry2);
Kode dalam contoh ini tidak pernah secara eksplisit menyatakan bahwa operasi yang akan dilakukan untuk entri ini adalah insert
. Anda tidak perlu menentukannya secara eksplisit karena penyisipan merupakan operasi default.
Untuk mengirim feed batch dan menerima hasilnya, panggil metode Service.batch
.
Seperti Service.insert
, Service.batch
menampilkan entri yang disisipkan dengan nilai <atom:id>
baru yang ditetapkan. Entri yang ditampilkan terdapat dalam objek GoogleBaseFeed
.
Jika ingin menghapus entri ketiga (yang telah Anda ambil dan simpan di entry3
) secara bersamaan saat Anda menyisipkan dua entri lainnya,
Anda dapat menggunakan kode berikut:
GoogleBaseEntry toDelete = new GoogleBaseEntry(); toDelete.setId(entry3.getId()); BatchUtils.setBatchOperationType(toDelete, BatchOperationType.DELETE); feed.addEntry(toDelete); GoogleBaseFeed result = service.batch(batchUrl, feed);
Di sini, service
adalah instance com.google.gdata.client.Service
.
Jika Anda ingin memperbarui entri, tentukan OperationType.UPDATE
, dan inisialisasi
entri dengan perubahan yang diinginkan, bukan membiarkan
sebagian besar kosong.
Contoh ini menggunakan Google Base data API. Jika Anda menggunakan service.batch
dengan
jenis layanan GData lain, ganti class GoogleBaseFeed
, GoogleBaseEntry
, dan GoogleBaseService
dengan class feed, entri, dan layanan yang sesuai.
Hasil operasi batch tidak selalu ditampilkan sesuai
urutan permintaannya. Pada contoh di atas, feed hasil dapat berisi entry2
dengan baik, diikuti oleh entry1
. Anda tidak boleh berasumsi bahwa entri
ditampilkan dalam urutan tertentu.
Feed operasi batch Anda harus menetapkan ID batch unik ke setiap operasi penyisipan, seperti yang dijelaskan dalam Operasi pelacakan. Pada contoh di atas, ID batch adalah A
dan B
. Oleh karena itu, untuk menemukan status operasi yang diminta, Anda harus melakukan iterasi pada entri dalam feed batch yang ditampilkan dan membandingkan ID batch atau ID entrinya, sebagai berikut:
for (GoogleBaseEntry entry : result.getEntries()) { String batchId = BatchUtils.getBatchId(entry); if (BatchUtils.isSuccess(entry)) { if ("A".equals(batchId)) { entry1 = entry; } else if ("B".equals(batchId)) { entry2 = entry; } else if (BatchUtils.getBatchOperationType(entry) == BatchOperationType.DELETE) { System.out.println("Entry " + entry.getId() + " has been deleted successfully."); } } else { BatchStatus status = BatchUtils.getBatchStatus(entry); System.err.println(batchId + " failed (" + status.getReason() + ") " + status.getContent()); } }
Setiap entri yang akan Anda temukan di feed yang ditampilkan akan memiliki objek BatchStatus
terkait.
Objek BatchStatus
berisi kode pengembalian HTTP dan respons
yang menjelaskan apa yang salah saat entri diproses. Anda harus
memeriksa kode pengembalian HTTP setiap entri untuk mengetahui apakah operasi berhasil.
Pemeriksaan dilakukan dalam contoh di atas dengan metode praktis BatchUtils.isSuccess
.
Dalam hal ini, fungsi adalah sama dengan: BatchUtils.getBatchStatus(entry) < 300
.
Kode status dan respons dijelaskan lebih lanjut dalam Menangani kode status.