Quick Start
Build your first diagram in six steps
بداية سريعة
قم ببناء أول مخطط معماري تم التحقق منه في ست خطوات. تقدم كل خطوة مفهوم Datro جديدًا. في النهاية، سيكون لديك رسم تخطيطي كامل ومُصمم ومُدقق في القيود وجاهز للتصدير بتنسيق SVG.
تابع في المحرر المباشر - الصق كل مقتطف وانقر على التحقق من الصحة.
الخطوة 1 - اكتب العقد والحواف الأولى
يبدأ كل ملف .dtro برأس سحري. بعد ذلك، أعلن عن العقد (الكيانات) و الحواف (العلاقات). الصق هذا في المحرر:
#!DATRO 1.0
node frontend { type: web label: "React App" }
node backend { type: service label: "NestJS API" }
node db { type: database label: "PostgreSQL" }
edge frontend -> backend { kind: http }
edge backend -> db { kind: query }مطلوب رأس سحري
السطر #!DATRO 1.0 على السطر 1 إلزامي. يقوم المحلل بإرجاع E100 إذا كان مفقودًا.
الخطوة 2 — أضف `attrs` للحصول على بيانات وصفية أكثر ثراءً
تحتوي الكتلة attrs على بيانات تعريف عشوائية لقيمة المفتاح. يمكن أن تكون القيم عبارة عن سلاسل أو أرقام أو منطقية أو صفائف. السمات الشائعة هي tech، owner، deprecated، و sla.
node backend {
type: service
label: "NestJS API"
attrs {
tech: "nestjs"
owner: "platform-team"
}
}تمر السمات عبر JSON IR وتظهر كتلميحات أدوات في SVG المقدمة - وهي مفيدة للبيانات التعريفية عند الطلب وSLA.
الخطوة 3 - إضافة بيانات تعريف الحافة
تحتوي الحواف على نوع (نوع العلاقة الدلالية)، وتسمية اختيارية، ووزن (حركة مرور نسبية)، وعلامة غير متزامنة. يتم عرض الحواف غير المتزامنة كخطوط متقطعة.
edge backend -> stripe {
kind: http
label: "charge API"
async: false
}| Field | Type | Required | Default | Description |
|---|---|---|---|---|
kind | EdgeKind "http""grpc""query""publish""subscribe""read""write""deploys""monitors""depends""…21 total" | Yes | unknown | نوع العلاقة الدلالية |
label | string | No | — | نص قصير معروض على سطر الحافة |
weight | number | No | 1.0 | الوزن النسبي لحركة المرور - الحواف الأثقل تصبح أكثر سمكًا |
async | boolean | No | false | عندما يكون صحيحًا، يتم عرض الحافة على أنها متقطعة (نمط إطلاق النار والنسيان) |
الخطوة 4 - تجميع العقد في مجموعات
استخدم كتلة group لتجميع العقد ذات الصلة. يتم عرض المجموعات كمربعات رسم بياني فرعي مسماة في SVG. يمكن أن تنتمي العقدة إلى مجموعة واحدة فقط.
group data_tier {
label: "Data Layer"
members: [db, redis_cache]
}
node redis_cache { type: cache label: "Redis" }
edge backend -> redis_cache { kind: read label: "session" }المجموعات مقابل العقدة.المجموعة
يمكنك أيضًا تعيين مجموعة مباشرة على العقدة باستخدام group: data_tier. كلا الأسلوبين صالحان؛ قائمة group الخاصة بالكتلة members لها الأولوية.
الخطوة 5 - إضافة قيد معماري
القيود هي قواعد معمارية يتم فحصها آليًا. يقوم المدقق بتقييمها مقابل IR وإرجاع أخطاء E501 عند انتهاك القاعدة.
constraint {
id: "no-db-external"
rule: "database !-> external"
message: "Databases must not connect to external services"
severity: error
}القاعدة database !-> external تعني: لا يجوز أن يكون لأي عقدة من النوع database حافة موجهة لأي عقدة من النوع external. يؤدي هذا إلى حظر مكالمات DB المباشرة غير المقصودة → واجهة برمجة تطبيقات الطرف الثالث.
الخطوة 6 - إضافة تلميحات التخطيط والموضوع
تحكم في كيفية ترتيب الرسم التخطيطي باستخدام كتلة layout وحدد لوحة الألوان باستخدام كتلة theme. يتم تشغيل فحص إمكانية الوصول W602 إذا كان أي لون أقل من تباين WCAG AA.
layout { direction: LR algo: dagre node_sep: 60 rank_sep: 120 }
theme {
palette {
service: "#D0E8FF"
database: "#FFE8C0"
web: "#E8D0FF"
cache: "#C0FFE8"
background: "#FFFFFF"
}
accessibility { min_contrast: AA }
}تباين WCAG تلقائي
يقوم مصدر DOT تلقائيًا باختيار لون الخط الأسود أو الأبيض لكل تعبئة عقدة باستخدام صيغة النصوع النسبي WCAG 2.1 - لا يلزم أي تكوين.
الخطوات التالية
- اقرأ Language Reference للحصول على الصيغة الكاملة لكل نوع كتلة.
- استخدم CLI Reference للتحقق من الصحة والتنسيق والتصدير من سطر الأوامر.
- تعرف على كيفية إنشاء مستندات embed diagrams in Markdown باستخدام الملاحظة أو البرنامج الإضافي markdown-it.
الرسم التخطيطي الخاص بك جاهز للعرض — انقر فوق Render → SVG في شريط أدوات المحرر.