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

Giriş

FlowEngine Nedir?
FlowEngine ve Eklenti İlişkisi
Hızlı Başlangıç
Öğrenme Yol Haritası

Kılavuz

FlowModel Kaydı
FlowModel Oluşturma
FlowModel İşleme
FlowModel Olay Akışı ve Yapılandırma
FlowModel Kalıcılığı
FlowModel Yaşam Döngüsü
FlowModel Bağlam Sistemi
Reaktif Mekanizma: Observable
FlowModel vs React.Component

Tanımlar

ModelDefinition
FlowDefinition
EventDefinition
ActionDefinition
StepDefinition
Previous PageFlowModel vs React.Component
Next PageFlowDefinition
TIP

Bu belge AI tarafından çevrilmiştir. Herhangi bir yanlışlık için lütfen İngilizce sürümüne bakın

#ModelDefinition

ModelDefinition, FlowEngine.createModel() metodu aracılığıyla bir model örneği oluşturmak için kullanılan bir akış modelinin oluşturma seçeneklerini tanımlar. Bu tanım, modelin temel yapılandırmasını, özelliklerini, alt modellerini ve diğer bilgilerini içerir.

#Tip Tanımı

interface CreateModelOptions {
  uid?: string;
  use: RegisteredModelClassName | ModelConstructor;
  props?: IModelComponentProps;
  flowRegistry?: Record<string, Omit<FlowDefinitionOptions, 'key'>>;
  stepParams?: StepParams;
  subModels?: Record<string, CreateSubModelOptions[]>;
  parentId?: string;
  subKey?: string;
  subType?: 'array' | 'single';
  sortIndex?: number;
  flowRegistry?: Record<string, Omit<FlowDefinitionOptions, 'key'>>;
}

#Kullanım

const engine = new FlowEngine();

// Bir model örneği oluşturun
const model = engine.createModel({
  uid: 'unique-model-id',
  use: 'MyModel',
  props: {
    title: 'My Model',
    description: 'A sample model'
  },
  stepParams: {
    step1: { param1: 'value1' }
  },
  subModels: {
    childModels: [
      {
        use: 'ChildModel',
        props: { name: 'Child 1' }
      }
    ]
  }
});

#Özellik Açıklamaları

#uid

Tip: string
Gerekli: Hayır
Açıklama: Model örneği için benzersiz tanımlayıcı.

Eğer belirtilmezse, sistem otomatik olarak benzersiz bir UID oluşturacaktır.

Örnek:

uid: 'model-123'
uid: 'user-profile-model'
uid: 'data-processing-instance'

#use

Tip: RegisteredModelClassName | ModelConstructor
Gerekli: Evet
Açıklama: Kullanılacak model sınıfı.

Kayıtlı bir model sınıfı adı dizesi veya model sınıfının kurucu fonksiyonu olabilir.

Örnek:

// Dize referansı kullanın
use: 'MyModel'

// Kurucu fonksiyon kullanın
use: MyModel

// Dinamik referans kullanın
const ModelClass = engine.getModelClass('MyModel');
use: ModelClass

#props

Tip: IModelComponentProps
Gerekli: Hayır
Açıklama: Modelin özellik yapılandırması.

Model kurucu fonksiyonuna iletilen özellikler nesnesi.

Örnek:

props: {
  title: 'My Model',
  description: 'A sample model instance',
  config: {
    theme: 'dark',
    language: 'zh-CN'
  },
  metadata: {
    version: '1.0.0',
    author: 'Developer'
  }
}

#stepParams

Tip: StepParams
Gerekli: Hayır
Açıklama: Adım parametre yapılandırması.

İş akışındaki her adım için parametreleri ayarlar.

Örnek:

stepParams: {
  loadData: {
    url: 'https://api.example.com/data',
    method: 'GET',
    timeout: 5000
  },
  processData: {
    processor: 'advanced',
    options: {
      format: 'json',
      encoding: 'utf8'
    }
  },
  saveData: {
    destination: 'database',
    table: 'processed_data'
  }
}

#subModels

Tip: Record<string, CreateSubModelOptions[]>
Gerekli: Hayır
Açıklama: Alt model yapılandırması.

Modelin alt modellerini tanımlar, hem dizi hem de tekil alt modelleri destekler.

Örnek:

subModels: {
  // Dizi tipinde alt model
  childModels: [
    {
      use: 'ChildModel1',
      props: { name: 'Child 1', type: 'primary' }
    },
    {
      use: 'ChildModel2',
      props: { name: 'Child 2', type: 'secondary' }
    }
  ],
  // Tekil alt model
  singleChild: {
    use: 'SingleChildModel',
    props: { name: 'Single Child' }
  }
}

#parentId

Tip: string
Gerekli: Hayır
Açıklama: Üst modelin UID'si.

Modeller arasında üst-alt ilişkisi kurmak için kullanılır.

Örnek:

parentId: 'parent-model-123'
parentId: 'master-instance'

#subKey

Tip: string
Gerekli: Hayır
Açıklama: Alt modelin üst modeldeki anahtar adı.

Alt modelin üst model içindeki konumunu belirlemek için kullanılır.

Örnek:

subKey: 'childModels'
subKey: 'subComponents'
subKey: 'nestedItems'

#subType

Tip: 'array' | 'single'
Gerekli: Hayır
Açıklama: Alt modelin tipi.

  • 'array': Birden fazla örnek içerebilen dizi tipinde bir alt model.
  • 'single': Yalnızca bir örnek içerebilen tekil bir alt model.

Örnek:

subType: 'array'  // Dizi tipi
subType: 'single' // Tekil tip

#sortIndex

Tip: number
Gerekli: Hayır
Açıklama: Sıralama indeksi.

Modelin bir listedeki görüntülenme sırasını kontrol etmek için kullanılır.

Örnek:

sortIndex: 0  // En önde
sortIndex: 10 // Orta konumda
sortIndex: 100 // Daha geride

#flowRegistry

Tip: Record<string, Omit<FlowDefinitionOptions, 'key'>>
Gerekli: Hayır
Açıklama: İş akışı kayıt defteri.

Model örneği için belirli iş akışı tanımlarını kaydeder.

Örnek:

flowRegistry: {
  'customFlow': {
    title: 'Custom Flow',
    manual: false,
    steps: {
      step1: {
        use: 'customAction',
        title: 'Custom Step'
      }
    }
  },
  'anotherFlow': {
    title: 'Another Flow',
    on: 'click',
    steps: {
      step1: {
        handler: async (ctx, params) => {
          // Özel işleme mantığı
        }
      }
    }
  }
}

#Tam Örnek

class DataProcessingModel extends FlowModel {}

// Model sınıfını kaydedin
engine.registerModel('DataProcessingModel', DataProcessingModel);

// Bir model örneği oluşturun
const model = engine.createModel({
  uid: 'data-processing-001',
  use: 'DataProcessingModel',
  props: {
    title: 'Data Processing Instance',
    description: 'Processes user data with advanced algorithms',
    config: {
      algorithm: 'neural-network',
      batchSize: 100,
      learningRate: 0.01
    },
    metadata: {
      version: '2.1.0',
      author: 'Data Team',
      createdAt: new Date().toISOString()
    }
  },
  stepParams: {
    loadData: {
      source: 'database',
      query: 'SELECT * FROM users WHERE active = true',
      limit: 1000
    },
    preprocess: {
      normalize: true,
      removeOutliers: true,
      encoding: 'utf8'
    },
    process: {
      algorithm: 'neural-network',
      layers: [64, 32, 16],
      epochs: 100,
      batchSize: 32
    },
    saveResults: {
      destination: 'results_table',
      format: 'json',
      compress: true
    }
  },
  subModels: {
    dataSources: [
      {
        use: 'DatabaseSource',
        props: {
          name: 'Primary DB',
          connection: 'mysql://localhost:3306/db1'
        }
      },
      {
        use: 'APISource',
        props: {
          name: 'External API',
          url: 'https://api.external.com/data'
        }
      }
    ],
    processors: [
      {
        use: 'DataProcessor',
        props: {
          name: 'Main Processor',
          type: 'neural-network'
        }
      }
    ],
    outputHandler: {
      use: 'OutputHandler',
      props: {
        name: 'Results Handler',
        format: 'json'
      }
    }
  },
  flowRegistry: {
    'dataProcessingFlow': {
      title: 'Data Processing Flow',
      manual: false,
      sort: 0,
      steps: {
        load: {
          use: 'loadDataAction',
          title: 'Load Data',
          sort: 0
        },
        process: {
          use: 'processDataAction',
          title: 'Process Data',
          sort: 1
        },
        save: {
          use: 'saveDataAction',
          title: 'Save Results',
          sort: 2
        }
      }
    },
    'errorHandlingFlow': {
      title: 'Error Handling Flow',
      manual: true,
      on: 'error',
      steps: {
        log: {
          use: 'logErrorAction',
          title: 'Log Error'
        },
        notify: {
          use: 'notifyErrorAction',
          title: 'Notify Admin'
        }
      }
    }
  }
});

// Modeli kullanın
model.applyFlow('dataProcessingFlow');