پردازش دسته ای به شما این امکان را می دهد که چندین عملیات را در یک درخواست اجرا کنید، نه اینکه مجبور باشید هر عملیات را به صورت جداگانه ارسال کنید.
توجه : برای انجام عملیات دسته ای، باید از نسخه اخیر کتابخانه سرویس گیرنده Google Data API خود استفاده کنید. عملیات دسته ای توسط کتابخانه سرویس گیرنده جاوا اسکریپت پشتیبانی نمی شود.
این سند برای برنامه نویسانی در نظر گرفته شده است که می خواهند چندین عملیات را در یک درخواست با استفاده از پردازش دسته ای ارسال کنند.
این سند فرض می کند که شما با استفاده از GData Java Client Library آشنا هستید. مثالهای موجود در این سند نحوه استفاده از کتابخانه سرویس گیرنده جاوا را برای اجرای عملیات دستهای نشان میدهند.
نمونههای این سند مختص Google Base Data API هستند. با این حال، سایر خدمات نیز ممکن است قابلیت های دسته ای را ارائه دهند.
توجه: پروتکل و رویههای کلی برای سایر کتابخانههای سرویس گیرنده یکسان خواهد بود، اما روشهای خاص برای انجام درخواستهای دستهای ممکن است متفاوت باشد. لطفاً به اسناد خاص کتابخانه مشتری مراجعه کنید.
با استفاده از یک فید دسته ای GData، می توانید چندین عملیات درج، به روز رسانی، حذف و پرس و جو را جمع آوری کنید و سپس همه آنها را به یکباره ارسال و اجرا کنید.
به عنوان مثال، فید زیر شامل چهار عملیات است:
<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>این سرویس تا حد امکان تغییرات درخواستی را انجام می دهد و اطلاعات وضعیت را برمی گرداند که می توانید از آنها برای ارزیابی موفقیت یا عدم موفقیت هر عملیات استفاده کنید.
این سرویس تلاش میکند تا هر یک از عملیاتها را در یک دسته اجرا کند، حتی اگر برخی از عملیات گنجانده شده در دسته موفق نباشند.
یک درخواست دسته ای باید به عنوان یک HTTP POST به یک URL دسته ای ارسال شود. فیدهای مختلف از عملیات دسته ای مختلف پشتیبانی می کنند. فیدهای فقط خواندنی فقط از جستارها پشتیبانی می کنند.
برای کشف اینکه آیا یک فید معین از عملیات دسته ای پشتیبانی می کند یا خیر، می توانید فید را پرس و جو کنید. اگر فید حاوی یک رابطه پیوند "دسته ای" در سطح خوراک باشد، این نشان می دهد که فید از عملیات دسته ای پشتیبانی می کند.
یک رابطه پیوند "دسته ای" یک عنصر <link> با rel="http://schemas.google.com/g/2005#batch" است. ویژگی href رابطه پیوند نشانی اینترنتی را که ممکن است اسناد فید برای عملیات دسته ای پست شود را مشخص می کند.
برای مثال، اگر اجرا کنید: GET http://www.google.com/base/feeds/items (فید معمولی «اقلام» پایگاه Google)، ممکن است پاسخ زیر را دریافت کنید:
<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>
در این مثال، URL دسته ای http://www.google.com/base/feeds/items/batch است.
یک فید عملیات شامل فهرستی از ورودیها برای درج، بهروزرسانی، حذف یا پرس و جو است. هر عملیات توسط یک عنصر <batch:operation type="insert|update|delete|query"/> تعریف می شود.
این عنصر ممکن است فرزند مستقیم عنصر <feed> ، فرزند مستقیم هر یک از ورودیهای فید یا هر دو باشد. هنگامی که در یک ورودی گنجانده می شود، عملیاتی را که باید برای آن ورودی خاص اجرا شود، مشخص می کند. هنگامی که در فید گنجانده می شود، این عنصر عملیات پیش فرض را برای اجرای هر ورودی که عنصر <batch:operation/> ندارد، مشخص می کند.
وقتی نه ورودی و نه فید عملیاتی را مشخص نمی کنند، عملیات پیش فرض insert است.
برنامه ها نباید چندین عملیات را برای یک ورودی در یک خوراک دسته ای اعمال کنند. اگر چندین عملیات را برای یک ورودی مشخص کنید، نتایج نامشخص هستند.
برای بهبود عملکرد، ممکن است عملیات به ترتیب درخواستی پردازش نشود. با این حال، نتیجه نهایی همیشه همان است که اگر ورودی ها به ترتیب پردازش شده باشند.
تعداد بایت های XML که به سرور ارسال می کنید ممکن است از 1 مگابایت (1,048,576 بایت) تجاوز نکند. به طور کلی، تا زمانی که حجم کل بایت از 1 مگابایت تجاوز نکند، محدودیتی در تعداد عملیاتی که میتوانید درخواست کنید وجود ندارد. با این حال، برخی از خدمات ممکن است محدودیت های اضافی ایجاد کنند.
برای استفاده از عملیات دسته ای، باید اعلان فضای نام دسته ای را به عنوان یک ویژگی به عنصر <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">
عملیات درج به صورت زیر مشخص می شود:
<batch:operation type="insert">
یک عملیات درج معادل POST کردن ورودی است. هنگامی که عملیات با موفقیت انجام شد، کل محتوای ورودی با یک عنصر <id> سند به روز و یک عنصر <batch:status code="201"/> برگردانده می شود.
در اینجا نمونه ای از یک درخواست درج موفق است:
<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>
<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> <batch:operation type="update">
یک عملیات به روز رسانی معادل اجرای یک PUT در URL است که توسط عنصر <id> ورودی ارجاع داده شده است. هنگامی که عملیات با موفقیت انجام شد، کل محتوای ورودی با یک عنصر <batch:status code="200"/> برگردانده می شود.
توجه: با فیدهای خاص، شما همچنین باید پیوند rel="edit" ورودی را با درخواست های به روز رسانی دسته ای مشخص کنید. این شامل فیدهایی میشود که از همزمانی خوشبینانه به سبک v1 پروتکل داده Google پشتیبانی میکنند و فیدهایی که شناسههای URL ندارند.
در اینجا نمونه ای از درخواست به روز رسانی است:
<entry> <id>http://www.google.com/base/feeds/items/17437536661927313949</id> <batch:operation type="update"/> ... </entry>
در اینجا یک نمونه از یک پاسخ موفق است:
<entry> <batch:status code="200"/> <id>http://www.google.com/base/feeds/items/17437536661927313949</id> <batch:operation type="update"/> ... </entry>
توجه: برخی از فیدها از ETag های قوی برای جلوگیری از تغییر ناخواسته تغییرات شخص دیگر استفاده می کنند. هنگام درخواست بهروزرسانی دستهای برای ورودی در یکی از این فیدها، باید مقدار ETag را در ویژگی برای فیدهایی که بهروزرسانیهای جزئی را پشتیبانی میکنند، میتوانید از آنها در درخواستهای دستهای نیز استفاده کنید. یک عملیات به روز رسانی جزئی معادل اجرای یک توجه: با فیدهای خاص، شما همچنین باید پیوند در اینجا نمونه ای از درخواست به روز رسانی جزئی آورده شده است: در اینجا نمونه ای از یک پاسخ موفق است: یک عملیات حذف معادل اجرای توجه: با فیدهای خاص، شما همچنین باید پیوند در اینجا نمونه ای از درخواست حذف آورده شده است: در اینجا یک نمونه از یک پاسخ موفق است: توجه: برخی از فیدها از ETag های قوی برای جلوگیری از تغییر ناخواسته تغییرات شخص دیگر استفاده می کنند. هنگام درخواست حذف دسته ای برای ورودی در یکی از این فیدها، باید مقدار ETag را در ویژگی یک عملیات پرس و جو معادل اجرای یک توجه: با فیدهای خاص، شما همچنین باید پیوند در اینجا نمونه ای از درخواست پرس و جو آورده شده است: در اینجا یک نمونه از یک پاسخ موفق است: نتایج ورودی GData لزوماً به همان ترتیب درخواست بازگردانده نمی شوند. شما می توانید یک عملیات را در طول عمر آن با استفاده از یک شناسه ردیابی کنید. برای عملیات به روز رسانی، حذف و پرس و جو، می توانید از شناسه خود ورودی برای ردیابی عملیات استفاده کنید. برای عملیات درج، از آنجایی که هنوز شناسه ای وجود ندارد، می توانید یک شناسه عملیات را ارسال کنید. از این شناسه می توان برای پیوند دادن ورودی های نتیجه به ورودی های درخواست استفاده کرد. شناسه عملیات در عنصر برای هر عملیات، GData پاسخی را برمیگرداند که بیان میکند آیا عملیات موفق بوده یا شکست خورده است. هر پاسخ ورودی مرتبط را مشخص می کند. برای عملیات به روز رسانی، حذف یا پرس و جو یا عملیات درج موفقیت آمیز، شناسه ورودی همیشه برگردانده می شود. اگر یک Batch ID مشخص کرده اید، این نیز برگردانده می شود. از آنجایی که عملیات درج ناموفق هیچ شناسه ورودی مرتبطی ندارد، فقط شناسه دسته ای بازگردانده می شود. با استفاده از شناسه هر عملیات، میتوانید فقط عملیاتهایی را که شکست خوردهاند دوباره امتحان کنید، نه اینکه مجبور باشید کل دسته عملیات را دوباره ارسال کنید. محتوای مثال زیر یک فید عملیات دسته ای را نشان می دهد. توجه داشته باشید که عنصر مثال زیر ورودی وضعیت دسته ای را نشان می دهد که در پاسخ به این عملیات بازگردانده شده است. کدهای وضعیت با عنصر زیر بیان می شوند: هر ورودی در فید پاسخ حاوی یک عنصر شما باید عنصر ویژگی ویژگی وقتی نوع محتوا تنظیم میشود، بدنه عنصر عنصر زیر در پاسخ برای عملیات قطع شده گنجانده شده است: این عنصر به این معنی است که پردازش دسته ای قطع شد و تمام تلاش ها برای بازیابی علت وقفه ناموفق بود. برخی از ورودیها ممکن است قبلاً با موفقیت پردازش شده باشند. همه ورودیهایی که قبل از این مرحله به عنوان موفقیتآمیز گزارش نشده بودند، کنار گذاشته شدند. این عنصر بسیار غیرعادی است و معمولاً نشان می دهد که فید ارسال شده در بدنه درخواست در قالب XML درستی نبوده است. همانند عنصر در اینجا یک فید عملیات دسته ای است که می تواند به سرور ارسال شود. این فید از سرور درخواست می کند که دو ورودی را حذف کرده و دو ورودی جدید اضافه کند. توجه داشته باشید که عنصر بیایید فرض کنیم که دو درج کار کردند، اما یکی از دو حذف ناموفق بود. در این حالت، فید وضعیت دسته ممکن است به شکل زیر باشد. توجه داشته باشید که ورودیها در مقایسه با فید عملیات دستهای مرتب شدهاند. این بخش نحوه استفاده از عملکرد دسته ای کتابخانه سرویس گیرنده GData Java را برای ارسال گروهی از درخواست های درج، به روز رسانی و/یا حذف توضیح می دهد. مثالهای ارائه شده در این بخش از APIهای Google Base استفاده میکنند. ابتدا کلاسهایی را که نیاز دارید، علاوه بر کلاسهای استاندارد GData و Google Base وارد کنید: برای ارسال درخواست دسته ای، باید URL دسته ای را از یک فید دریافت کنید. قطعه کد زیر نحوه انجام این کار را نشان می دهد، با این فرض که قطعه کد زیر یک فید آماده می کند که دو ورودی را در یک عملیات وارد می کند: کد در این مثال هرگز به صراحت بیان نمی کند که عملیاتی که باید برای این ورودی ها انجام شود برای ارسال خوراک دسته ای و دریافت نتایج، با روش مانند اگر میخواهید یک ورودی سوم (که قبلاً در در اینجا، اگر میخواهید یک ورودی را بهروزرسانی کنید، این نمونه ها از Google Base data API استفاده می کنند. اگر از نتایج یک عملیات دسته ای لزوماً به ترتیب درخواستی بازگردانده نمی شوند. در مثال بالا، فید نتیجه ممکن است به خوبی حاوی همانطور که در عملیات ردیابی توضیح داده شده است، فید عملیات دسته ای شما باید به هر عملیات درج یک شناسه دسته منحصر به فرد اختصاص دهد. در مثال های بالا، Batch ID ها هر ورودی که در فید برگشتی پیدا می کنید یک شی بررسی در مثال بالا با روش راحت کدهای وضعیت و پاسخ ها در Handling status codes توضیح بیشتری داده شده است.gd:etag ورودی ارائه کنید. برای مثال، <entry gd:etag="'F08NQAxFdip7IWA6WhVR'">...<batch:operation type="update"/>...PATCH در URL ارجاع شده توسط عنصر <id> ورودی است. هنگامی که عملیات با موفقیت انجام شد، کل محتوای ورودی با یک عنصر <batch:status code="200"/> برگردانده می شود.rel="edit" ورودی را با درخواست های به روز رسانی دسته ای مشخص کنید. این شامل فیدهایی میشود که از همزمانی خوشبینانه به سبک v1 پروتکل داده Google پشتیبانی میکنند و فیدهایی که شناسههای URL ندارند.<batch:operation type="patch"/><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>
<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>
<batch:operation type="delete">DELETE در URL است که توسط عنصر <id> ورودی ارجاع داده شده است. برای عملیات حذف، فقط باید یک عنصر <id> برای حذف ورودی ارسال کنید. هر اطلاعات دیگری که در عناصری که در batch: فضای نام نادیده گرفته می شود. هنگامی که عملیات با موفقیت انجام شد، ورودی با همان شناسه با عنصر <batch:status code="200"/> برگردانده می شود.rel="edit" ورودی را با درخواست های حذف دسته ای مشخص کنید. این شامل فیدهایی میشود که از همزمانی خوشبینانه به سبک v1 پروتکل داده Google پشتیبانی میکنند و فیدهایی که شناسههای URL ندارند.<entry>
<batch:operation type="delete"/>
<id>http://www.google.com/base/feeds/items/17437536661927313949</id>
</entry>
<entry>
<batch:operation type="delete"/>
<id>http://www.google.com/base/feeds/items/17437536661927313949</id>
<batch:status code="200" reason="Success"/>
</entry>
gd:etag ورودی ارائه دهید. برای مثال، <entry gd:etag="'F08NQAxFdip7IWA6WhVR'">...<batch:operation type="delete"/>...<batch:operation type="query">GET در URL ارجاع شده توسط عنصر <id> ورودی است. هنگامی که عملیات با موفقیت انجام شد، کل محتوای ورودی برگردانده می شود.rel="self" ورودی را با درخواست های پرس و جو دسته ای مشخص کنید. این شامل فیدهایی می شود که شناسه URL ندارند.<entry>
<id>http://www.google.com/base/feeds/items/1743753666192313949</id>
<batch:operation type="query"/>
</entry>
<entry>
<id>http://www.google.com/base/feeds/items/1743753666192313949</id>
<batch:operation type="query"/>
<batch:status code="200" reason="Success"/>
...
</entry>
<batch:id> ارسال می شود.<batch:id> یک مقدار رشته ای است که توسط مشتری تعریف شده است و در ورودی پاسخ مربوطه بازتاب داده می شود. شما می توانید هر مقداری را که به مشتری کمک می کند تا پاسخ را با ورودی درخواست اصلی مرتبط کند، تعیین کنید. این عنصر همانطور که هست در ورودی مربوطه تکرار می شود، حتی اگر عملیات شکست بخورد. GData هرگز محتوای این Batch ID را ذخیره و تفسیر نمی کند.<batch:id> این عملیات را به عنوان 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>
<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><batch:status code="200|201|404|500|..." reason="reason" [content-type="type"]/>
<batch:status> است. این عنصر آنچه را که در حین اجرای عملیات رخ داده است را توصیف می کند. این پاسخ HTTP را تقلید می کند که اگر عملیات به صورت جداگانه ارسال می شد، نه به عنوان بخشی از فید دسته ای، ارسال می شد.<batch:status> هر ورودی را در پاسخ بررسی کنید تا بفهمید آیا عملیات مرتبط با موفقیت پردازش شده است یا خیر. ویژگی code="n" حاوی یک کد وضعیت GData است.reason="reason" عنصر <batch:status> حاوی توضیح مفصل تری از وضعیت عملیات است.content-type="type" عنصر <batch:status> حاوی نوع MIME داده موجود در عنصر <batch:status> است. این مربوط به هدر Content-Type یک پاسخ وضعیت HTTP است. این ویژگی اختیاری است.<batch:status> توضیح میدهد که هنگام پردازش ورودی چه اشتباهی رخ داده است.<batch:interrupted reason="reason" success="N" failures="N" parsed="N"><batch:status> ، یک کد وضعیت کوتاه را می توان در ویژگی reason یافت. ممکن است پاسخ طولانی تری نیز در داخل عنصر پیدا شود. <feed> باید شامل یک تغییر فضای نام برای دسته باشد، همانطور که در مثال زیر مشخص شده است.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><?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> import com.google.gdata.data.batch.*;
import com.google.api.gbase.client.*;
feed یک شی GoogleBaseFeed حاوی اطلاعات مربوط به یک فید است: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
}
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);
insert می شود. نیازی نیست که به صراحت آن را مشخص کنید، زیرا درج عملیات پیشفرض است.Service.batch تماس بگیرید.Service.insert ، Service.batch ورودی های درج شده را با مجموعه مقادیر جدید <atom:id> برمی گرداند. ورودی های برگشتی در یک شیء GoogleBaseFeed قرار دارند.entry3 واکشی و ذخیره کردهاید) را همزمان با وارد کردن دو ورودی دیگر حذف کنید، میتوانید از کد زیر استفاده کنید:
GoogleBaseEntry toDelete = new GoogleBaseEntry();
toDelete.setId(entry3.getId());
BatchUtils.setBatchOperationType(toDelete, BatchOperationType.DELETE);
feed.addEntry(toDelete);
GoogleBaseFeed result = service.batch(batchUrl, feed);
service یک نمونه از com.google.gdata.client.Service است.OperationType.UPDATE مشخص کنید و ورودی را با تغییرات دلخواه مقدار دهی اولیه کنید به جای اینکه آن را عمدتاً خالی بگذارید.service.batch با نوع دیگری از سرویس GData استفاده میکنید، کلاسهای GoogleBaseFeed ، GoogleBaseEntry و GoogleBaseService را با کلاسهای فید، ورودی و سرویس مناسب جایگزین کنید.entry2 و سپس entry1 باشد. هرگز نباید فرض کنید که ورودی ها به ترتیب خاصی برگردانده شده اند.A و B هستند. بنابراین، برای یافتن وضعیت عملیات درخواستی، باید ورودیهای موجود در فید دستهای برگشتی را تکرار کنید و شناسه دسته یا شناسه ورودی آنها را به صورت زیر مقایسه کنید:
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());
}
} BatchStatus مرتبط خواهد داشت. شیء BatchStatus حاوی یک کد بازگشتی HTTP و پاسخی است که نشان میدهد هنگام پردازش ورودی چه اشتباهی رخ داده است. باید کد بازگشت HTTP هر ورودی را بررسی کنید تا بگویید آیا عملیات موفق بوده است یا خیر.BatchUtils.isSuccess انجام می شود. در این مورد، معادل است با: BatchUtils.getBatchStatus(entry) < 300 .