وصفات
الوصفات هي أنماط متعددة العمليات شائعة تحقق سير العمل النموذجي. استخدم هذه كقوالب لمعاملاتك.
المتطلبات المسبقة
- فهم العمليات
- فئات الأصول المسجلة لنطاقك
- الحاويات التي تم إنشاؤها للمصدر والوجهة
الخطوة 1 - نقل الرصيد القابل للتداول بين الحاويات
نقل كمية قابلة للتبادل من حاوية إلى أخرى باستخدام عمليات الإزالة والإضافة.
متى تستخدم: نقل الموارد، تحويل الأرصدة، إعادة توازن المخزون.
العمليات: RemoveFungible, AddFungible
{
"operations": [
{
"op": "RemoveFungible",
"args": {
"container_id": 1001,
"class_id": 200,
"key": 1,
"quantity": 150
}
},
{
"op": "AddFungible",
"args": {
"container_id": 1002,
"class_id": 200,
"key": 1,
"quantity": 150
}
}
],
"idempotency_key": "transfer-balance-1001-1002"
}
بدلاً من ذلك، استخدم TransferFungible لنقل بعملية واحدة:
{
"operations": [
{
"op": "TransferFungible",
"args": {
"from_container": 1001,
"to_container": 1002,
"class_id": 200,
"key": 1,
"quantity": 150
}
}
]
}
الخطوة 2 - نقل الحالة بين الفتحات
نقل حالة فريدة من فتحة إلى أخرى داخل حاويات متشابهة أو مختلفة.
متى تستخدم: إعادة تنظيم المخزون، نقل المعدات، إعادة وضع العناصر.
العمليات: RemoveFromSlot, PlaceInSlot
{
"operations": [
{
"op": "RemoveFromSlot",
"args": {
"container_id": 1001,
"slot_index": 0
}
},
{
"op": "PlaceInSlot",
"args": {
"container_id": 1001,
"slot_index": 1,
"instance_id": 9001
}
}
],
"idempotency_key": "slot-move-9001"
}
للتبديل بين موقعين مشغولين، استخدم SwapSlots بدلاً من ذلك.
الخطوة 3 - تسجيل الفئة مع الشكل
إرشادات إضافية:
حدد فئة أصول جديدة وقم بتكوين شكل الشبكة الخاص بها على الفور في معاملة واحدة.
متى تستخدم: إعداد أنواع الأصول الجديدة التي سيتم وضعها في حاويات الشبكة.
العمليات: RegisterClass, RegisterClassShape
{
"operations": [
{
"op": "RegisterClass",
"args": {
"request": {
"class_id": 300,
"name": "Battle Tank",
"fungible": false
}
}
},
{
"op": "RegisterClassShape",
"args": {
"request": {
"class_id": 300,
"shape_id": 1,
"width": 3,
"height": 2
}
}
}
],
"idempotency_key": "class-with-shape-300"
}
الخطوة 4 - سك ووضع النسخة
إرشادات إضافية:
إنشاء مثيل فريد جديد ووضعه على الفور في فتحة.
متى تستخدم: إنشاء العناصر، إنشاء المعدات، إضافة العينات.
العمليات: MintInstance, PlaceInSlot
{
"operations": [
{
"op": "MintInstance",
"args": {
"class_id": 200,
"key": 1
}
},
{
"op": "PlaceInSlot",
"args": {
"container_id": 1001,
"instance_id": 9001,
"slot_index": 0
}
}
]
}
ملاحظة: تحتاج إلى معرفة معرف الحالة الذي سيتم سكّه. إما استخدام مخطط تخصيص حتمي أو إرسال عملية السكّ والمكان كمعاملات منفصلة.
الخطوة 5 - إعداد الحاوية مع الرصيد الأولي
إنشاء حاوية وتعبئتها بالموارد الأولية.
متى تستخدم: تهيئة مخزونات اللاعبين، إنشاء تخزين جديد، إعداد التجارب.
العمليات: CreateContainer, AddFungible
{
"operations": [
{
"op": "CreateContainer",
"args": {
"container_id": 2001,
"kind": "Standard",
"owner": null
}
},
{
"op": "AddFungible",
"args": {
"container_id": 2001,
"class_id": 100,
"key": 1,
"quantity": 1000
}
},
{
"op": "AddFungible",
"args": {
"container_id": 2001,
"class_id": 101,
"key": 1,
"quantity": 500
}
}
],
"idempotency_key": "init-container-2001"
}
الخطوة 6 - ربط المعدات بالشخصية
إنشاء علاقات بين الوالد والطفل بين الحالات للمعدات أو المكونات.
متى تستخدم: تجهيز العناصر، ربط المكونات، بناء الهياكل.
العمليات: MintInstance, Attach
{
"operations": [
{
"op": "MintInstance",
"args": {
"class_id": 300,
"key": 1
}
},
{
"op": "Attach",
"args": {
"child_instance": 9002,
"parent_instance": 9001
}
}
]
}
لإزالة المعدات، استخدم Detach متبوعًا بالمكان المطلوب.
استكشاف الأخطاء وإصلاحها
أهمية الطلب
تُنفذ العمليات بالتسلسل. تأكد من أن العمليات السابقة تخلق الحالة التي تعتمد عليها العمليات اللاحقة.
استخدام مفاتيح التكرار
دائمًا قم بتضمين مفاتيح التكرار للعمليات التي تعدل الحالة. هذا يمنع الالتزامات المكررة عند إعادة المحاولة.
تحقق من أنواع الحاويات
تتطلب عمليات التوازن حاويات قياسية أو حاويات شبكة. تتطلب عمليات الفتحات حاويات الفتحات. تسبب الأنواع غير المتطابقة أخطاء WrongContainerKind.
تحقق من الكميات
تأكد من أن حاويات المصدر تحتوي على رصيد كافٍ قبل التحويلات. يؤدي الرصيد غير الكافي إلى إلغاء المعاملة بالكامل.
الخطوات التالية
- العمليات حسب المجال - مرجع العمليات الكامل
- نموذج الخطأ - فهم الفشل
- Python SDK - منشئي عمليات آمنة من حيث النوع