logologo
البدء
الدليل
التطوير
الإضافات
API
English
简体中文
日本語
한국어
Deutsch
Français
Español
Português
Русский
Italiano
Türkçe
Українська
Tiếng Việt
Bahasa Indonesia
ไทย
Polski
Nederlands
Čeština
العربية
עברית
हिन्दी
Svenska
البدء
الدليل
التطوير
الإضافات
API
logologo

مقدمة

ما هو FlowEngine؟
العلاقة بين FlowEngine والإضافات
بدء سريع
خارطة طريق التعلم

دليل

تسجيل FlowModel
إنشاء FlowModel
عرض FlowModel
تدفق أحداث FlowModel والإعداد
استمرارية FlowModel
دورة حياة FlowModel
نظام سياق FlowModel
آلية التفاعل: Observable
FlowModel مقابل React.Component

Definitions

ModelDefinition
FlowDefinition
EventDefinition
ActionDefinition
StepDefinition
Previous Pageإنشاء FlowModel
Next Pageتدفق أحداث FlowModel والإعداد
إشعار الترجمة بالذكاء الاصطناعي

تمت ترجمة هذه الوثائق تلقائيًا بواسطة الذكاء الاصطناعي.

#عرض FlowModel

FlowModelRenderer هو مكون React الأساسي لعرض FlowModel. يتولى هذا المكون مسؤولية تحويل كائن FlowModel إلى مكون React مرئي.

#الاستخدام الأساسي

#FlowModelRenderer

import { FlowModelRenderer } from '@nocobase/flow-engine';

// الاستخدام الأساسي
<FlowModelRenderer model={myModel} />

#FieldModelRenderer

لعرض نماذج الحقول (Field Models) المتحكَّم بها، استخدم FieldModelRenderer:

import { FieldModelRenderer } from '@nocobase/flow-engine';

// عرض الحقول المتحكَّم بها
<FieldModelRenderer model={fieldModel} />

#خصائص المكون (Props)

#FlowModelRendererProps

الخاصيةالنوعالقيمة الافتراضيةالوصف
modelFlowModel-كائن FlowModel المراد عرضه
uidstring-المعرّف الفريد لنموذج سير العمل
fallbackReact.ReactNode<Skeleton.Button size="small" />المحتوى البديل الذي يظهر عند فشل العرض
showFlowSettingsboolean | objectfalseهل يجب إظهار مدخل إعدادات سير العمل
flowSettingsVariant'dropdown' | 'contextMenu' | 'modal' | 'drawer''dropdown'نمط التفاعل لإعدادات سير العمل
hideRemoveInSettingsbooleanfalseهل يجب إخفاء زر الإزالة في الإعدادات
showTitlebooleanfalseهل يجب عرض عنوان النموذج في الزاوية العلوية اليسرى من الإطار
skipApplyAutoFlowsbooleanfalseهل يجب تخطي تطبيق سير العمل التلقائي
inputArgsRecord<string, any>-سياق إضافي يتم تمريره إلى useApplyAutoFlows
showErrorFallbackbooleantrueهل يجب تغليف الطبقة الخارجية بمكون FlowErrorFallback
settingsMenuLevelnumber-مستوى قائمة الإعدادات: 1=النموذج الحالي فقط، 2=يشمل النماذج الفرعية
extraToolbarItemsToolbarItemConfig[]-عناصر شريط الأدوات الإضافية

#إعدادات showFlowSettings التفصيلية

عندما تكون showFlowSettings كائنًا، يتم دعم الإعدادات التالية:

showFlowSettings={{
  showBackground: true,    // إظهار الخلفية
  showBorder: true,        // إظهار الحدود
  showDragHandle: true,    // إظهار مقبض السحب
  style: {},              // نمط شريط الأدوات المخصص
  toolbarPosition: 'inside' // موضع شريط الأدوات: 'inside' | 'above' | 'below'
}}

#دورة حياة العرض

تستدعي دورة العرض الكاملة الطرق التالية بالترتيب:

  1. model.dispatchEvent('beforeRender') - حدث ما قبل العرض
  2. model.render() - ينفذ طريقة عرض النموذج
  3. model.onMount() - خطاف تحميل المكون (Component mount hook)
  4. model.onUnmount() - خطاف إلغاء تحميل المكون (Component unmount hook)

#أمثلة الاستخدام

#العرض الأساسي

import { FlowModelRenderer } from '@nocobase/flow-engine';

function MyComponent() {
  const model = useFlowModel();
  
  return (
    <FlowModelRenderer 
      model={model}
      fallback={<div>جاري التحميل...</div>}
    />
  );
}

#العرض مع إعدادات سير العمل

// إظهار الإعدادات ولكن إخفاء زر الإزالة
<FlowModelRenderer
  model={myModel}
  showFlowSettings={true}
  hideRemoveInSettings={true}
/>

// إظهار الإعدادات والعنوان
<FlowModelRenderer
  model={myModel}
  showFlowSettings={true}
  showTitle={true}
/>

// استخدام وضع قائمة السياق (context menu)
<FlowModelRenderer
  model={myModel}
  showFlowSettings={true}
  flowSettingsVariant="contextMenu"
  hideRemoveInSettings={true}
/>

#شريط أدوات مخصص

<FlowModelRenderer
  model={myModel}
  showFlowSettings={true}
  extraToolbarItems={[
    {
      key: 'custom-action',
      title: 'إجراء مخصص',
      icon: 'SettingOutlined',
      onClick: () => {
        console.log('إجراء مخصص');
      }
    }
  ]}
/>

#تخطي سير العمل التلقائي

<FlowModelRenderer
  model={myModel}
  skipApplyAutoFlows={true}
  showErrorFallback={false}
/>

#عرض نموذج الحقل

import { FieldModelRenderer } from '@nocobase/flow-engine';

function FormField({ model, onChange, ...props }) {
  return (
    <FieldModelRenderer
      model={model}
      onChange={onChange}
      {...props}
    />
  );
}

#معالجة الأخطاء

يتضمن FlowModelRenderer آلية شاملة لمعالجة الأخطاء:

  • حدود الأخطاء التلقائية: يتم تمكين showErrorFallback={true} افتراضيًا.
  • أخطاء سير العمل التلقائي: يلتقط ويعالج الأخطاء أثناء تنفيذ سير العمل التلقائي.
  • أخطاء العرض: يعرض محتوى بديلًا عند فشل عرض النموذج.
<FlowModelRenderer
  model={myModel}
  showErrorFallback={true}
  fallback={<div>فشل العرض، يرجى المحاولة مرة أخرى</div>}
/>

#تحسين الأداء

#تخطي سير العمل التلقائي

في السيناريوهات التي لا تتطلب سير عمل تلقائيًا، يمكنك تخطيها لتحسين الأداء:

<FlowModelRenderer
  model={myModel}
  skipApplyAutoFlows={true}
/>

#التحديثات التفاعلية

يستخدم FlowModelRenderer مراقب (observer) من @formily/reactive-react لإجراء تحديثات تفاعلية، مما يضمن إعادة عرض المكون تلقائيًا عند تغير حالة النموذج.

#ملاحظات هامة

  1. التحقق من صحة النموذج: تأكد من أن النموذج (model) المُمرَّر يحتوي على طريقة render صالحة.
  2. إدارة دورة الحياة: يتم استدعاء خطافات دورة حياة النموذج في الأوقات المناسبة.
  3. حدود الأخطاء: يُنصح بتمكين حدود الأخطاء في بيئة الإنتاج لتوفير تجربة مستخدم أفضل.
  4. اعتبارات الأداء: في السيناريوهات التي تتضمن عرض عدد كبير من النماذج، فكر في استخدام خيار skipApplyAutoFlows.