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

Introduzione

Cos'è FlowEngine?
Relazione tra FlowEngine e Plugin
Avvio Rapido
Percorso di Apprendimento

Guida

Registra FlowModel
Crea FlowModel
Renderizza FlowModel
Flusso Eventi e Configurazione di FlowModel
Persistenza di FlowModel
Ciclo di Vita di FlowModel
Sistema di Contesto di FlowModel
Meccanismo Reattivo: Observable
FlowModel vs React.Component

Definizioni

Definizione Modello
Definizione Flusso
Definizione Evento
Definizione Azione
Definizione Passo
Previous PageFlowModel vs React.Component
Next PageDefinizione Flusso
Avviso di traduzione IA

Questa documentazione è stata tradotta automaticamente dall'IA.

#ModelDefinition

ModelDefinition definisce le opzioni di creazione per un modello di flusso di lavoro, utilizzate per creare un'istanza di modello tramite il metodo FlowEngine.createModel(). Include la configurazione di base del modello, le proprietà, i sotto-modelli e altre informazioni.

#Definizione del Tipo

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'>>;
}

#Utilizzo

const engine = new FlowEngine();

// Crea un'istanza del modello
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' }
      }
    ]
  }
});

#Descrizione delle Proprietà

#uid

Tipo: string
Obbligatorio: No
Descrizione: L'identificatore unico per l'istanza del modello.

Se non fornito, il sistema genererà automaticamente un UID unico.

Esempio:

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

#use

Tipo: RegisteredModelClassName | ModelConstructor
Obbligatorio: Sì
Descrizione: La classe del modello da utilizzare.

Può essere una stringa con il nome di una classe di modello registrata, oppure il costruttore della classe del modello.

Esempio:

// Utilizza il riferimento stringa
use: 'MyModel'

// Utilizza il costruttore
use: MyModel

// Utilizza il riferimento dinamico
const ModelClass = engine.getModelClass('MyModel');
use: ModelClass

#props

Tipo: IModelComponentProps
Obbligatorio: No
Descrizione: La configurazione delle proprietà per il modello.

L'oggetto delle proprietà passato al costruttore del modello.

Esempio:

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

#stepParams

Tipo: StepParams
Obbligatorio: No
Descrizione: Configurazione dei parametri del passo.

Imposta i parametri per ogni passo nel flusso di lavoro.

Esempio:

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

Tipo: Record<string, CreateSubModelOptions[]>
Obbligatorio: No
Descrizione: Configurazione dei sotto-modelli.

Definisce i sotto-modelli del modello, supportando sia sotto-modelli di tipo array che singoli.

Esempio:

subModels: {
  // Sotto-modello di tipo array
  childModels: [
    {
      use: 'ChildModel1',
      props: { name: 'Child 1', type: 'primary' }
    },
    {
      use: 'ChildModel2',
      props: { name: 'Child 2', type: 'secondary' }
    }
  ],
  // Sotto-modello singolo
  singleChild: {
    use: 'SingleChildModel',
    props: { name: 'Single Child' }
  }
}

#parentId

Tipo: string
Obbligatorio: No
Descrizione: L'UID del modello padre.

Utilizzato per stabilire una relazione padre-figlio tra i modelli.

Esempio:

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

#subKey

Tipo: string
Obbligatorio: No
Descrizione: Il nome della chiave del sotto-modello nel modello padre.

Utilizzato per identificare la posizione del sotto-modello all'interno del modello padre.

Esempio:

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

#subType

Tipo: 'array' | 'single'
Obbligatorio: No
Descrizione: Il tipo del sotto-modello.

  • 'array': Un sotto-modello di tipo array, che può contenere più istanze.
  • 'single': Un sotto-modello singolo, che può contenere una sola istanza.

Esempio:

subType: 'array'  // Tipo array
subType: 'single' // Tipo singolo

#sortIndex

Tipo: number
Obbligatorio: No
Descrizione: Indice di ordinamento.

Utilizzato per controllare l'ordine di visualizzazione del modello in un elenco.

Esempio:

sortIndex: 0  // Il più in alto
sortIndex: 10 // Posizione intermedia
sortIndex: 100 // Il più in basso

#flowRegistry

Tipo: Record<string, Omit<FlowDefinitionOptions, 'key'>>
Obbligatorio: No
Descrizione: Registro dei flussi di lavoro.

Registra definizioni di flusso di lavoro specifiche per l'istanza del modello.

Esempio:

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) => {
          // 自定义处理逻辑
        }
      }
    }
  }
}

#Esempio Completo

class DataProcessingModel extends FlowModel {}

// Registra la classe del modello
engine.registerModel('DataProcessingModel', DataProcessingModel);

// Crea un'istanza del modello
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'
        }
      }
    }
  }
});

// Utilizza il modello
model.applyFlow('dataProcessingFlow');