مرجع عمليات معاملات AssetCore
تم إنشاؤه من Operations Manifest v1.0.0 (API 0.1.0)
تم إنشاؤه تلقائيًا من بيان العمليات في 2026-01-22
AssetCore هو قاعدة ذاكرة حتمية. الحاويات هي مناطق ذاكرة دائمة. العمليات هي تحويلات ذاكرة ذرية. المعاملات هي التزامات ذاكرة قابلة لإعادة التشغيل.
تعدل العمليات التالية مناطق الذاكرة المهيكلة بطريقة غير مرتبطة بالنطاق.
هذا المستند يوفر مرجعًا كاملاً لجميع العمليات الـ 24 المتاحة في التزامات AssetCore.
جدول المحتويات
نظرة عامة
تتدفق جميع تغييرات الحالة في بنية الذاكرة المنظمة لـ Asset Core عبر نقطة نهاية الالتزام كسلسلة من العمليات. كل عملية هي تحويل ذري يمكن دمجه مع عمليات أخرى في معاملة واحدة.
هيكل طلب الالتزام
{
"operations": [
{ "op": "OperationName", "args": { ... } },
{ "op": "AnotherOperation", "args": { ... } }
],
"idempotency_key": "optional-unique-key"
}
تُنفذ العمليات بالترتيب ضمن معاملة واحدة. إذا فشلت أي عملية، يتم التراجع عن الالتزام بالكامل.
نظام العلامات
تُصنَّف العمليات عبر أربعة أبعاد:
المجال
ما نوع الكيان الذي تؤثر عليه العملية:
- container: عمليات دورة حياة الحاوية
- التوازن: كمية قابلة للتبادل وعمليات التكديس
- instance: عمليات مثيل فريدة
- slot: عمليات تحديد المواقع المكانية للفتحات
- schema: عمليات تعريف الفئة والشكل
إجراء
ما نوع الإجراء الذي يتم تنفيذه:
- إنشاء: يجلب شيئًا إلى الوجود
- تدمير: يزيل شيئًا من الوجود
- move: ينقل بين المواقع
- الرابط: ينشئ أو يزيل العلاقات
- توحيد: دمج أو إعادة تنظيم
نطاق
كم عدد الكيانات المتأثرة:
- مفرد: هدف أساسي واحد
- multi: أهداف أو حاويات متعددة
التأثير
نطاق تأثير العملية:
- مستهدف: التغييرات محدودة على الكيانات المشار إليها بشكل صريح
- fanout: تغييرات تتوزع عبر كيانات متعددة في مجموعة دفعة أو مجموعة مطابقة
- cascade: التغييرات تزيل أو تلغي المحتويات المتداخلة بشكل ضمني
عمليات حسب المجال
عمليات الحاويات
إنشاء الحاوية
ينشئ حاوية (منطقة ذاكرة منظمة) بالنوع المطلوب.
إنشاء حاوية مستهدفة واحدة
ينشئ حاوية دائمة من النوع المطلوب (رصيد، شبكة، فتحات، مستمر 1D/2D). قدم external_id للمطالبة بمعرف خارجي ثابت؛ المعرفات الداخلية كثيفة، مخصصة تلقائيًا، ولا يتم الكشف عنها أبدًا. المعرفات الخارجية محددة بنطاق الاسم ويجب ألا توجد بالفعل.
أخطاء:
- ContainerAlreadyExists: A container with that ID already exists. ContainerAlreadyExists: حاوية بهذا المعرف موجودة بالفعل. مثال:
{
"op": "CreateContainer",
"args": {
"external_id": "container-1000",
"kind": {
"quantization_inv": 100,
"type": "balance"
}
}
}
إزالة الحاوية
يحذف الحاوية بعد تصريف محتوياتها.
تدمير حاوية واحدة بالتتابع
يتم إزالة الحاوية بعد أن تقوم المعاملة بتفريغ أي أرصدة، أو حالات، أو محتويات الفتحات. هذا غير قابل للتراجع بالنسبة لمعرف الحاوية ويحافظ على مناطق الذاكرة المحيطة.
أخطاء:
- ContainerNotFound: The specified container does not exist. ContainerNotFound: الحاوية المحددة غير موجودة. مثال:
{
"op": "RemoveContainer",
"args": {
"container_id": "container-1001"
}
}
عمليات التوازن
أضف قابل للتبادل
يضيف كمية قابلة للتبادل إلى رصيد أو خلية شبكة محددة.
توازن إنشاء مستهدف فردي
يزيد الكمية القابلة للتبادل لفئة/زوج مفاتيح. عند استهداف حاوية الرصيد، تتم إضافة الكمية إلى الرصيد الإجمالي. عند استهداف خلية الشبكة، تنشئ العملية أو تنمي كومة عند النقطة المحددة، مما يفرض الأشكال المسجلة والدوران للت placement.
أخطاء:
- InvalidQuantity: يجب أن تكون الكمية أكبر من صفر.
- WrongContainerKind: لا يمكن لحاويات الفتحات الاحتفاظ بالأصول القابلة للتبادل.
- ContainerNotFound: الحاوية المستهدفة غير موجودة.
- UnregisteredClass: الفئة غير مسجلة في مساحة الأسماء.
- UnregisteredClassShape: تتطلب إضافات الشبكة شكلًا مسجلاً للفئة والمفتاح.
- PositionOccupied: The requested grid anchor overlaps an existing placement. PositionOccupied: النقطة المحورية المطلوبة تتداخل مع موضع موجود. مثال:
{
"op": "AddFungible",
"args": {
"class_id": "class-100",
"key": 1,
"location": {
"container_id": "container-2001",
"kind": "grid_cell",
"position": 5,
"rotation": "none"
},
"quantity": "500"
}
}
إزالة القابلية للتبادل
يتم إزالة الكمية القابلة للتبادل من الرصيد أو خلية الشبكة المحددة.
توازن دمر هدف واحد
يقلل من الكمية القابلة للتداول لفئة/زوج مفاتيح داخل حاوية. يدعم الحرق من الأرصدة أو مسح كومة الشبكة عند نقطة ربط محددة. عندما تصل الكومة إلى الصفر، يمكن إزالتها، مما يحافظ على تحديد الركيزة.
أخطاء:
- InvalidQuantity: يجب أن تكون الكمية أكبر من صفر.
- WrongContainerKind: لا يمكن لحاويات الفتحات الاحتفاظ بالأصول القابلة للتبادل.
- ContainerNotFound: الحاوية المستهدفة غير موجودة.
- UnregisteredClass: الفئة غير مسجلة في مساحة الأسماء.
- InsufficientBalance: الكمية المطلوبة تتجاوز الرصيد المتاح.
- PositionEmpty: No stack exists at the requested grid anchor. PositionEmpty: لا يوجد مكدس عند نقطة الشبكة المطلوبة. مثال:
{
"op": "RemoveFungible",
"args": {
"class_id": "class-100",
"from": {
"container_id": "container-1001",
"kind": "balance"
},
"key": 1,
"quantity": "100"
}
}
تحريك القابل للتداول
ينقل الكمية القابلة للتبادل بين الأرصدة أو خلايا الشبكة.
تحرك التوازن متعدد الأهداف
ينقل كمية قابلة للتبادل من موقع إلى آخر. يدعم التحركات بين الرصيد<->الرصيد، الرصيد<->الشبكة، والشبكة<->الشبكة مع فرض الأشكال المسجلة لوجهات الشبكة وضمان كفاية الكميات المصدرية.
أخطاء:
- InvalidQuantity: يجب أن تكون الكمية أكبر من صفر.
- WrongContainerKind: لا يمكن لحاويات الفتحات المشاركة في الحركات القابلة للتبادل.
- ContainerNotFound: أحد الحاويات غير موجود.
- UnregisteredClass: الفئة غير مسجلة في مساحة الأسماء.
- InsufficientBalance: موقع المصدر يفتقر إلى الكمية المطلوبة.
- PositionEmpty: لا يوجد مكدس عند نقطة الشبكة المطلوبة.
- PositionOccupied: تتداخل نقطة ربط الشبكة الوجهة مع موضع موجود.
- UnregisteredClassShape: Grid destinations require a registered shape for the class and key. UnregisteredClassShape: تتطلب وجهات الشبكة شكلًا مسجلاً للفئة والمفتاح. مثال:
{
"op": "MoveFungible",
"args": {
"class_id": "class-100",
"from": {
"container_id": "container-1001",
"kind": "balance"
},
"key": 1,
"quantity": "50",
"to": {
"container_id": "container-2001",
"kind": "grid_cell",
"position": 4,
"rotation": "clockwise90"
}
}
}
نقل القابل للتحويل
ينقل كمية قابلة للتبادل بين حاويات منظمة.
تحرك التوازن متعدد الأهداف
ينقل الكمية القابلة للتبادل من حاوية إلى أخرى في معاملة واحدة. يجب أن توجد كلتا الحاويتين، وتدعم الأرصدة لزوج الفئة/المفتاح، ويجب أن تحتوي المصدر على الكمية المطلوبة. يتم تطبيق تسجيل الشكل عندما يكون وضع الشبكة مطلوبًا.
أخطاء:
- InvalidQuantity: يجب أن تكون الكمية أكبر من صفر.
- InvalidOperation: تحويل الهوية أو تجاوز الحساب غير صالح.
- ContainerNotFound: أحد الحاويات غير موجود.
- WrongContainerKind: لا يمكن لحاويات الفتحات المشاركة في التحويلات القابلة للتبادل.
- UnregisteredClass: الفئة غير مسجلة في مساحة الأسماء.
- InsufficientBalance: حاوية المصدر تفتقر إلى الكمية المطلوبة.
- UnregisteredClassShape: Grid destinations require a registered shape for the class and key. UnregisteredClassShape: تتطلب وجهات الشبكة شكلًا مسجلاً للفئة والمفتاح. مثال:
{
"op": "TransferFungible",
"args": {
"class_id": "class-100",
"from_container": "container-1001",
"key": 1,
"quantity": "250",
"to_container": "container-1002"
}
}
نقل العديد
ينقل كميات متعددة قابلة للتبادل بين الحاويات في دفعة واحدة.
تحويل رصيد متعدد التوزيع
ينفذ دفعة مرتبة من عمليات النقل من حاوية إلى حاوية مع دلالات ذرية “كل شيء أو لا شيء”. يتحقق كل إدخال من أنواع الحاويات، تسجيل الفئة، والأرصدة الكافية قبل حدوث أي تغييرات.
أخطاء:
- InvalidQuantity: يجب أن تكون الكمية أكبر من صفر.
- InvalidOperation: تم رفض تحويل الهوية أو هيكل الدفعة غير الصالح.
- ContainerNotFound: أحد الحاويات غير موجود.
- WrongContainerKind: لا يمكن لحاويات الفتحات المشاركة في التحويلات القابلة للتبادل.
- UnregisteredClass: الفئة غير مسجلة في مساحة الأسماء.
- InsufficientBalance: حاوية المصدر تفتقر إلى الكمية المطلوبة.
- UnregisteredClassShape: Grid destinations require a registered shape for the class and key. UnregisteredClassShape: تتطلب وجهات الشبكة شكلًا مسجلاً للفئة والمفتاح. مثال:
{
"op": "TransferMany",
"args": {
"transfers": [
{
"class_id": "class-100",
"from_container": "container-1001",
"key": 1,
"quantity": "25",
"to_container": "container-1002"
},
{
"class_id": "class-101",
"from_container": "container-1002",
"quantity": "10",
"to_container": "container-1003"
}
]
}
}
توزيع
يوزع كمية قابلة للتبادل من مصدر واحد إلى وجهات متعددة.
تحويل رصيد متعدد التوزيع
يقوم بتقسيم كمية مصدر واحدة عبر عدة حاويات وجهة في دفعة ذرية واحدة. يجب أن تحتوي المصدر على الكمية الإجمالية المطلوبة عبر جميع إدخالات التوزيع.
أخطاء:
- InvalidQuantity: يجب أن تكون كل كمية توزيع أكبر من الصفر.
- InvalidOperation: يجب أن تتناسب الإجماليات ضمن حدود الرصيد للمصدر.
- ContainerNotFound: أحد الحاويات غير موجود.
- WrongContainerKind: لا يمكن لحاويات الفتحات المشاركة في التوزيع القابل للتبادل.
- UnregisteredClass: الفئة غير مسجلة في مساحة الأسماء.
- InsufficientBalance: حاوية المصدر تفتقر إلى الكمية الإجمالية المطلوبة.
- UnregisteredClassShape: Grid destinations require a registered shape for the class and key. UnregisteredClassShape: تتطلب وجهات الشبكة شكلًا مسجلاً للفئة والمفتاح. مثال:
{
"op": "Distribute",
"args": {
"class_id": "class-100",
"distributions": [
{
"quantity": "10",
"to_container": "container-2001"
},
{
"quantity": "15",
"to_container": "container-2002"
}
],
"from_container": "container-1001",
"key": 1
}
}
دمج المكدسات
يتم دمج كومة قابلة للتبادل في أخرى داخل حاوية.
توازن دمج متعدد مستهدف
يجمع المكدس المصدر في المكدس الوجهة داخل نفس حاوية الشبكة. يجب أن تتشارك المكدسات في الهوية الصفية والمفتاحية. يتم جمع الكميات بشكل حتمي ويتم إزالة المكدس المصدر.
أخطاء:
- InvalidOperation: عمليات الدمج الذاتية، وعمليات الدمج عبر الحاويات، أو الفيضانات مرفوضة.
- ContainerNotFound: اختفى حاوية الشبكة قبل أن يكتمل الدمج.
- WrongContainerKind: تحتوي حاويات الشبكة فقط على كائنات المكدس.
- StackNotFound: واحدة من المكدسات المشار إليها لم تعد موجودة.
- IncompatibleStacks: Stacks must share the same class and key to merge. IncompatibleStacks: يجب أن تتشارك المكدسات نفس الفئة والمفتاح للدمج. مثال:
{
"op": "MergeStacks",
"args": {
"dst_stack": "stack-5001",
"src_stack": "stack-5002"
}
}
ConsolidateStacks
يجمع جميع الكتل القابلة للتبادل المتطابقة داخل حاوية.
توازن دمج متعدد توزيع
يجد كل مكدس في حاوية يتطابق مع زوج الفئة/المفتاح ويجمعها في مكدس واحد. يقوم بتطبيع الأرصدة المجزأة التي تراكمت عبر عمليات متعددة مع الحفاظ على الإجماليات.
أخطاء:
- ContainerNotFound: الحاوية المحددة غير موجودة.
- WrongContainerKind: يمكن فقط لحاويات الشبكة الاحتفاظ بالمكدسات للتوحيد.
- UnregisteredClass: الفئة غير مسجلة في مساحة الأسماء.
- InvalidOperation: لم يتم العثور على أي مكدسات أو أن الكمية الإجمالية تجاوزت u64.
- StackNotFound: A stack disappeared during consolidation. StackNotFound: اختفى المكدس أثناء الدمج. مثال:
{
"op": "ConsolidateStacks",
"args": {
"class_id": "class-100",
"container_id": "container-1001",
"key": 1
}
}
تحريك العديد
ينقل عدة أكوام بين حاويات الشبكة في دفعة واحدة.
تحويل رصيد متعدد التوزيع
ينفذ دفعة من حركات المكدس عبر حاويات الشبكة. يحدد كل إدخال معرف المكدس، وحاوية الوجهة، والكمية؛ حيث تقوم الحركات الجزئية بتقسيم المكدسات بينما تقوم الحركات الكاملة بنقلها.
أخطاء:
- InvalidQuantity: يجب أن تكون كمية النقل أكبر من صفر.
- InvalidOperation: تم رفض المكدسات المكررة أو الوجهات غير الصالحة.
- ContainerNotFound: أحد الحاويات غير موجود.
- WrongContainerKind: يمكن أن تتحرك المكدسات فقط بين حاويات الشبكة.
- StackNotFound: واحدة من المكدسات المشار إليها لم تعد موجودة.
- InsufficientBalance: لا يحتوي المكدس على الكمية المطلوبة للحركة.
- StackLimitExceeded: Destination container exceeds stack limits. StackLimitExceeded: حاوية الوجهة تتجاوز حدود المكدس. مثال:
{
"op": "MoveMany",
"args": {
"moves": [
{
"quantity": "3",
"stack": "stack-5001",
"to_container": "container-2001"
},
{
"quantity": "5",
"stack": "stack-5002",
"to_container": "container-2002"
}
]
}
}
عمليات المثيل
AddInstance
ينشئ مثيلاً جديدًا ويضعه في موقع مستهدف.
إنشاء مثيل مستهدف واحد
ينشئ مثيلاً فريداً للفئة/النوع المحدد ويضعه في فتحة أو ركيزة شبكة أو إحداثيات مستمرة. يتحقق من نوع الحاوية، وقواعد الشكل/الدوران، والتصادم قبل التثبيت.
أخطاء:
- ContainerNotFound: الحاوية المستهدفة غير موجودة.
- UnregisteredClass: الفئة غير مسجلة في مساحة الأسماء.
- WrongContainerKind: تتطلب مواضع الشبكة حاويات الشبكة؛ تتطلب مواضع الفتحات حاويات الفتحات؛ تتطلب المواضع المستمرة حاويات مستمرة.
- SlotOutOfBounds: فهرس الفتحة يتجاوز سعة الحاوية.
- SlotOccupied: المكان المطلوب مشغول بالفعل.
- PositionOccupied: نقطة الشبكة تتداخل مع موضع موجود.
- PositionOutOfBounds: سيكون الموضع خارج حدود الشبكة.
- ContinuousPlacementOutOfBounds: التوزيع المستمر يتجاوز حدود الحاوية.
- UnregisteredClassShape: Grid placements require a registered shape for the class/key. UnregisteredClassShape: تتطلب مواضع الشبكة شكلًا مسجلاً للفئة/المفتاح. مثال:
{
"op": "AddInstance",
"args": {
"class_id": "class-200",
"key": 1,
"location": {
"container_id": "container-500",
"kind": "slot",
"slot_index": 1
}
}
}
MoveInstance
ينقل مثيلاً موجودًا إلى موقع جديد.
مثال نقل مستهدف فردي
يعيد وضع مثيل تم سكّه مسبقًا في فتحة أو ركيزة شبكة أو إحداثيات مستمرة. يتحقق من قواعد الشكل/الدوران ويمنع التداخل في الشبكة والحاويات المستمرة.
أخطاء:
- InstanceNotFound: المثيل غير موجود.
- WrongContainerKind: نوع حاوية الوجهة لا يدعم النقل المطلوب.
- SlotOutOfBounds: فهرس الفتحة يتجاوز سعة الحاوية.
- SlotOccupied: فتحة الوجهة مشغولة بالفعل.
- PositionOccupied: تتداخل نقطة ربط الشبكة الوجهة مع موضع موجود.
- PositionOutOfBounds: نقطة ربط الشبكة الوجهة تتجاوز الحدود.
- ContinuousPlacementOutOfBounds: التوزيع المستمر يتجاوز حدود الحاوية.
- UnregisteredClassShape: تتطلب وجهات الشبكة شكلًا مسجلاً لفئة/مفتاح الحالة.
- ContinuousPlacementOverlap: Continuous destination overlaps an existing placement. ContinuousPlacementOverlap: يتداخل الوجهة المستمرة مع موضع موجود. مثال:
{
"op": "MoveInstance",
"args": {
"instance": "instance-9001",
"to": {
"container_id": "container-2001",
"kind": "grid_cell",
"position": 5,
"rotation": "none"
}
}
}
إزالة المثيل
يحرق مثيلاً من العالم.
تدمير مثيل مستهدف واحد
يتم إزالة الحالة بغض النظر عن موضعها الحالي. لا يمكن أن تحتوي الحالة على أطفال ملحقين. يتم مسح مراجع الشبكة أو الفتحة كجزء من عملية الحرق.
أخطاء:
- InstanceNotFound: معرف المثيل المستهدف غير موجود.
- HasChildren: Children must be detached before burning the instance. HasChildren: يجب فصل الأطفال قبل حرق النسخة. مثال:
{
"op": "RemoveInstance",
"args": {
"instance": "instance-9001"
}
}
حرق الحالة
يتم إزالة حالة فريدة بشكل دائم من الركيزة.
تدمير مثيل مستهدف واحد
يحذف بشكل دائم مثيلًا فريدًا. يجب ألا يكون المثيل مرتبطًا بمثيلات أخرى أو موضوعًا في فتحة. لا يتم إعادة استخدام المعرف مرة أخرى بعد حرقه.
أخطاء:
- InstanceNotFound: معرف المثيل المستهدف غير موجود.
- HasChildren: Children must be detached before burning the instance. HasChildren: يجب فصل الأطفال قبل حرق النسخة. مثال:
{
"op": "BurnInstance",
"args": {
"instance_id": "instance-9001"
}
}
أرفق
يُرفق مثيل طفل بمثيل أب للحركة المرتبطة.
رابط الحالة متعدد الأهداف
ينشئ علاقة أبوية-طفولية بين حالتين بحيث تتحركان معًا. يمكن أن يكون للطفل والد واحد فقط، ويتم رفض الدورات للحفاظ على رسم الحالة خاليًا من الدورات.
أخطاء:
- InvalidOperation: يجب أن يختلف الطفل عن الوالد ويتم رفض الدورات.
- InstanceNotFound: لا توجد نسخة فرعية أو أصلية.
- AlreadyAttached: الطفل لديه والد بالفعل.
- WouldCreateCycle: Attachment would create a cycle in the hierarchy. WouldCreateCycle: المرفق سيؤدي إلى إنشاء دورة في الهيكل التنظيمي. مثال:
{
"op": "Attach",
"args": {
"child_instance": "instance-9002",
"parent_instance": "instance-9001"
}
}
فصل
يفصل مثيل الطفل عن مثيله الأب.
رابط الحالة مستهدف فردي
يتم إزالة علاقة الأب والطفل بحيث يصبح الطفل مستقلاً مع البقاء في مادة الذاكرة. يحتفظ الطفل بمعرفه ويمكن إعادة توصيله في مكان آخر.
أخطاء:
- InstanceNotFound: المثيل المحدد غير موجود.
- NotAttached: The instance has no parent to detach from. NotAttached: لا توجد حالة رئيسية لفصلها. مثال:
{
"op": "Detach",
"args": {
"child_instance": "instance-9002"
}
}
عمليات الفتحات
PlaceInSlot
يضع مثيلاً في فتحة قابلة للعناوين داخل حاوية.
تحريك فتحة واحدة مستهدفة
يضع مثيلًا فريدًا في فتحة محددة داخل حاوية تدعم تخطيطات الفتحات. يجب أن تكون الفتحة فارغة ويجب أن يسمح نوع الحاوية بوضع الفتحات، مع الحفاظ على الترتيب المحدد.
أخطاء:
- ContainerNotFound: الحاوية الوجهة غير موجودة.
- WrongContainerKind: فقط حاويات Slots تدعم وضع الفتحات.
- SlotOutOfBounds: فهرس الفتحة يتجاوز سعة الحاوية.
- InstanceNotFound: الكائن الذي يتم وضعه غير موجود.
- SlotOccupied: The requested slot is already occupied. SlotOccupied: السعة المطلوبة مشغولة بالفعل. مثال:
{
"op": "PlaceInSlot",
"args": {
"container_id": "container-1001",
"instance_id": "instance-9001",
"slot_index": 1
}
}
RemoveFromSlot
يُزيل مثيلاً من فتحة الحاوية.
تحريك فتحة واحدة مستهدفة
يمسح فتحة ويترك الحالة غير موضوعة. تبقى الحالة في ركيزة الذاكرة ولكنها لم تعد تشغل تلك الربط الموضعية، مما يتيح إعادة التمركز.
أخطاء:
- ContainerNotFound: الحاوية غير موجودة.
- WrongContainerKind: فقط حاويات Slots تدعم إزالة الفتحات.
- SlotOutOfBounds: فهرس الفتحة يتجاوز سعة الحاوية.
- SlotEmpty: The slot does not contain an instance to remove. SlotEmpty: الفتحة لا تحتوي على مثيل لإزالته. مثال:
{
"op": "RemoveFromSlot",
"args": {
"container_id": "container-1001",
"slot_index": 1
}
}
SwapSlots
يبدل محتويات فتحتين مشغولتين بشكل ذري.
تحريك فتحة متعددة الأهداف
يتم تبادل محتويات فتحتين بشكل ذري، يمكن أن تكونا في نفس الحاوية أو في حاويات مختلفة. يجب أن توجد الفتحتان وأن تكونا مشغولتين. يحافظ التبادل على الثوابت الموضعية عبر الحاويات.
أخطاء:
- InvalidOperation: لا يمكن تبديل فتحة بنفسها في نفس الحاوية.
- ContainerNotFound: أحد الحاويات غير موجود.
- WrongContainerKind: يجب أن يكون كلا الحاويتين من نوع Slots.
- SlotOutOfBounds: أحد مؤشرات الفتحة يتجاوز سعة الحاوية.
- SlotEmpty: A slot is empty and cannot be swapped. SlotEmpty: الفتحة فارغة ولا يمكن تبديلها. مثال:
{
"op": "SwapSlots",
"args": {
"container_a": "container-1001",
"container_b": "container-1001",
"slot_a": 1,
"slot_b": 5
}
}
عمليات المخطط
RegisterClass
يسجل تعريف الفئة حتى يمكن للعمليات المستقبلية الإشارة إليه.
إنشاء مخطط مستهدف واحد
يسجل معرف خارجي واسم الفئة بحيث يمكن للمعاملات الإشارة إلى الفئة وتطبيق قواعد التحقق الخاصة بها. المعرفات الخارجية محددة بنطاق الفضاء الاسمي وغير قابلة للتغيير بمجرد تسجيلها؛ بينما يتم تعيين المعرفات الداخلية تلقائيًا ولا يتم الكشف عنها أبدًا.
أخطاء:
- ClassAlreadyExists: المعرف المقدم class_id (المعرف الخارجي) قيد الاستخدام بالفعل.
- ClassCapacityExceeded: The global class registry has reached its configured limit. ClassCapacityExceeded: سجل الفصول العالمي قد وصل إلى حدّه المهيأ. مثال:
{
"op": "RegisterClass",
"args": {
"request": {
"class_id": "class-100",
"flags": 2,
"name": "ExampleClass"
}
}
}
RegisterClassShape
يسجل بصمة شكل الشبكة لفئة أو نوع فئة.
إنشاء مخطط مستهدف واحد
يحدد شكل العرض/الارتفاع لـ class_id (معرف خارجي) و stack_key اختياري حتى تتمكن مواضع الشبكة من التحقق من الشغور والدوران. الأشكال مطلوبة قبل وضع الحالات أو المجموعات في حاويات الشبكة لتلك الفئة. يُعتبر إعادة تسجيل شكل مطابق كعملية لا تفعل شيئًا.
أخطاء:
- ClassNotFound: لم يتم تسجيل معرف الفئة (معرف خارجي) المشار إليه.
- ShapeAlreadyDefined: The shape_id already exists for the class. ShapeAlreadyDefined: الـ shape_id موجود بالفعل لهذه الفئة. مثال:
{
"op": "RegisterClassShape",
"args": {
"request": {
"class_id": "class-200",
"shape": {
"height": 3,
"width": 2
}
}
}
}
RegisterClassContinuousShape2d
يسجل مستطيلًا ثنائي الأبعاد مستمرًا لفئة أو نوع فئة.
إنشاء مخطط مستهدف واحد
يحدد المستطيل الثابت لنوع class_id (معرف خارجي) و stack_key اختياري بحيث يمكن أن تتحقق التوزيعات المستمرة ثنائية الأبعاد من التصادمات والدورات. مطلوب قبل وضعه في حاويات continuous_grid_2d لذلك النوع. يُعتبر إعادة تسجيل مستطيل متطابق كعملية لا تفعل شيئًا.
أخطاء:
- ClassNotFound: لم يتم تسجيل معرف الفئة (معرف خارجي) المشار إليه.
- ContinuousShapeAlreadyDefined: The continuous shape is already registered for the class/key. ContinuousShapeAlreadyDefined: الشكل المستمر مسجل بالفعل للفئة/المفتاح. مثال:
{
"op": "RegisterClassContinuousShape2d",
"args": {
"request": {
"class_id": "class-200",
"rect": {
"height": 8,
"width": 10
}
}
}
}
RegisterClassContinuousShape1d
يسجل مدى مستمر 1D لفئة أو نوع فئة.
إنشاء مخطط مستهدف واحد
يحدد طول مدى النقطة الثابتة لـ class_id (معرف خارجي) و stack_key اختياري حتى يمكن التحقق من التصادمات في التوزيعات المستمرة 1D. مطلوب قبل وضعها في حاويات continuous_line_1d لذلك الصنف. يُعتبر إعادة تسجيل مدى مطابق كعملية لا تفعل شيئًا.
أخطاء:
- ClassNotFound: لم يتم تسجيل معرف الفئة (معرف خارجي) المشار إليه.
- ContinuousShapeAlreadyDefined: The continuous shape is already registered for the class/key. ContinuousShapeAlreadyDefined: الشكل المستمر مسجل بالفعل للفئة/المفتاح. مثال:
{
"op": "RegisterClassContinuousShape1d",
"args": {
"request": {
"class_id": "class-200",
"span": {
"length": 10
}
}
}
}
وصفات
نقل الرصيد القابل للتداول بين الحاويات
نقل كمية قابلة للتبادل من حاوية إلى أخرى في عملية دلالية واحدة.
عمليات:
- نقل القابل للتداول
مثال:
{
"namespace_id": 1,
"operations": [
{
"op": "MoveFungible",
"args": {
"class_id": "class-100",
"key": 1,
"quantity": "50",
"from": {
"kind": "balance",
"container_id": "container-1001"
},
"to": {
"kind": "balance",
"container_id": "container-1002"
}
}
}
]
}
نقل المثيل بين الفتحات
قم بإزالة مثيل من فتحة واحدة وضعه في فتحة أخرى قابلة للتوجيه داخل نفس الحاوية مع الحفاظ على المعاملة الذرية.
عمليات:
إزالة من الفتحةPlaceInSlot
مثال:
{
"namespace_id": 1,
"operations": [
{
"op": "RemoveFromSlot",
"args": {
"container_id": "container-1001",
"slot_index": 1
}
},
{
"op": "PlaceInSlot",
"args": {
"container_id": "container-1001",
"slot_index": 2,
"instance_id": "instance-9001"
}
}
]
}
تسجيل الفئة مع الشكل
قم بتسجيل فئة أصول جديدة وأعلن على الفور عن شكل الشبكة حتى تكون قواعد التوزيع متاحة للحاويات المنظمة.
عمليات:
RegisterClassRegisterClassShape
مثال:
{
"namespace_id": 1,
"operations": [
{
"op": "RegisterClass",
"args": {
"request": {
"class_id": "class-100",
"name": "ExampleClass",
"flags": 2
}
}
},
{
"op": "RegisterClassShape",
"args": {
"request": {
"class_id": "class-100",
"shape": {
"width": 2,
"height": 3
}
}
}
}
]
}
مرجع سريع
| العملية | المجال | الإجراء | الملخص |
|---|---|---|---|
| CreateContainer | container | create | ينشئ حاوية (منطقة ذاكرة منظمة) بالنوع المطلوب |
| RemoveContainer | container | destroy | يحذف حاوية بعد تصريف محتوياتها |
| AddFungible | balance | create | يضيف كمية قابلة للتبادل إلى رصيد أو خلية شبكة محددة |
| RemoveFungible | balance | destroy | يزيل كمية قابلة للتبادل من رصيد أو خلية شبكة محددة |
| MoveFungible | balance | move | ينقل كمية قابلة للتبادل بين الأرصدة أو خلايا الشبكة |
| TransferFungible | balance | move | ينقل كمية قابلة للتبادل بين الحاويات المنظمة |
| TransferMany | balance | move | ينقل كميات متعددة قابلة للتبادل بين الحاويات في دفعة واحدة |
| Distribute | balance | move | يوزع كمية قابلة للتبادل من مصدر واحد إلى وجهات متعددة |
| MergeStacks | balance | consolidate | يدمج كومة قابلة للتبادل واحدة في أخرى داخل حاوية |
| ConsolidateStacks | balance | consolidate | يدمج جميع الأكوام القابلة للتبادل المتطابقة داخل حاوية |
| MoveMany | balance | move | ينقل أكوام متعددة بين حاويات الشبكة في دفعة واحدة |
| AddInstance | instance | create | يصنع مثيلًا جديدًا ويضعه في موقع مستهدف |
| MoveInstance | instance | move | ينقل مثيلًا موجودًا إلى موقع جديد |
| RemoveInstance | instance | destroy | يحرق مثيلًا من العالم |
| BurnInstance | instance | destroy | يزيل مثيلًا فريدًا بشكل دائم من الركيزة |
| Attach | instance | link | يربط مثيلًا فرعيًا بمثيل رئيسي للحركة المرتبطة |
| Detach | instance | link | يفصل مثيلًا فرعيًا عن مثيله الرئيسي |
| PlaceInSlot | slot | move | يضع مثيلًا في فتحة قابلة للعناوين داخل حاوية |
| RemoveFromSlot | slot | move | يزيل مثيلًا من فتحة حاوية |
| SwapSlots | slot | move | يبدل محتويات فتحتين مشغولتين بشكل ذري |
| RegisterClass | schema | create | يسجل تعريف فئة حتى يمكن للإجراءات المستقبلية الإشارة إليه |
| RegisterClassShape | schema | create | يسجل بصمة شكل شبكة لفئة أو نوع فئة |
| RegisterClassContinuousShape2d | schema | create | يسجل مستطيلًا مستمرًا ثنائي الأبعاد لفئة أو نوع فئة |
| RegisterClassContinuousShape1d | schema | create | يسجل مدى مستمرًا أحادي البعد لفئة أو نوع فئة |
تم إنشاء هذا المستند تلقائيًا من بيان عمليات AssetCore.