跳到主要内容

project - 模型 API

模块简介

引擎编排模块中包含多种模型,包括:

他们的依赖关系如下图: image.png

在文档模型内部,又有一些引申模型,比如:

整个模型系统,以 project API 为入口,所有模型实例均需要通过 project 来获得,比如 project.currentDocument 来获取当前的文档模型,project.currentDocument.nodesMap 来获取当前文档模型里所有的节点列表。

下面来看看 project API 的具体介绍

变量

currentDocument

获取当前的 document 实例

/**
* 获取当前的 document
* get current document
*/
get currentDocument(): IPublicModelDocumentModel | null;

相关类型:IPublicModelDocumentModel

documents

获取当前 project 下所有 documents

/**
* 获取当前 project 下所有 documents
* get all documents of this project
* @returns
*/
get documents(): IPublicModelDocumentModel[];

相关类型:IPublicModelDocumentModel

simulatorHost

获取模拟器的 host

/**
* 获取模拟器的 host
* get simulator host
*/
get simulatorHost(): IPublicApiSimulatorHost | null;

相关类型:IPublicApiSimulatorHost

方法

openDocument

打开一个 document

/**
* 打开一个 document
* @param doc
* @returns
*/
openDocument(doc?: string | IPublicTypeRootSchema | undefined): IPublicModelDocumentModel | null;

相关类型:

createDocument

创建一个 document

/**
* 创建一个 document
* create a document
* @param data
* @returns
*/
createDocument(data?: IPublicTypeRootSchema): IPublicModelDocumentModel | null;

相关类型:

removeDocument

删除一个 document

/**
* 删除一个 document
* remove a document
* @param doc
*/
removeDocument(doc: IPublicModelDocumentModel): void;

相关类型:IPublicApiSimulatorHost

getDocumentByFileName

根据 fileName 获取 document

/**
* 根据 fileName 获取 document
* get a document by filename
* @param fileName
* @returns
*/
getDocumentByFileName(fileName: string): IPublicModelDocumentModel | null;

相关类型:IPublicApiSimulatorHost

getDocumentById

根据 id 获取 document

/**
* 根据 id 获取 document
* get a document by id
* @param id
* @returns
*/
getDocumentById(id: string): IPublicModelDocumentModel | null;

相关类型:IPublicApiSimulatorHost

exportSchema

导出 project schema

/**
* 导出 project
* export project to schema
* @returns
*/
exportSchema(stage: IPublicEnumTransformStage): IPublicTypeProjectSchema;

相关类型:

importSchema

导入 project

/**
* 导入 project schema
* import schema to project
* @param schema 待导入的 project 数据
*/
importSchema(schema?: IPublicTypeProjectSchema): void;

相关类型:IPublicTypeProjectSchema

addPropsTransducer

增加一个属性的管道处理函数

/**
* 增加一个属性的管道处理函数
* add a transducer to process prop
* @param transducer
* @param stage
*/
addPropsTransducer(
transducer: IPublicTypePropsTransducer,
stage: IPublicEnumTransformStage,
): void;

相关类型:

示例 在保存的时候删除每一个组件的 props.hidden

import { project } from '@alilc/lowcode-engine';
import { IPublicTypeCompositeObject, IPublicEnumTransformStage, IPublicModelPluginContext } from '@alilc/lowcode-types';

export const DeleteHiddenTransducer = (ctx: IPublicModelPluginContext) => {
return {
async init() {
const { project } = ctx;
project.addPropsTransducer((props: IPublicTypeCompositeObject): IPublicTypeCompositeObject => {
delete props.hidden;
return props;
}, IPublicEnumTransformStage.Save);
},
};
}

DeleteHiddenTransducer.pluginName = 'DeleteHiddenTransducer';

setI18n

设置多语言语料

/**
* 设置多语言语料
* 数据格式参考 https://github.com/alibaba/lowcode-engine/blob/main/specs/lowcode-spec.md#2434%E5%9B%BD%E9%99%85%E5%8C%96%E5%A4%9A%E8%AF%AD%E8%A8%80%E7%B1%BB%E5%9E%8Baa
*
* set I18n data for this project
* @param value object
* @since v1.0.17
*/
setI18n(value: object): void;

@since v1.0.17

setConfig

设置当前项目配置

/**
* 设置当前项目配置
* set config for this project
* @param value object
* @since v1.1.4
*/
setConfig(value: IPublicTypeAppConfig): void;
setConfig<T extends keyof IPublicTypeAppConfig>(key: T, value: IPublicTypeAppConfig[T]): void;

@since v1.1.4

如何扩展项目配置

// shims.d.ts
declare module '@alilc/lowcode-types' {
export interface IPublicTypeAppConfig {
customProp: CustomPropType
}
}

export {};

事件

onRemoveDocument

绑定删除文档事件

/**
* 绑定删除文档事件
* set callback for event onDocumentRemoved
* @param fn
* @since v1.0.16
*/
onRemoveDocument(fn: (data: { id: string }) => void): IPublicTypeDisposable;

相关类型:IPublicTypeDisposable

@since v1.0.16

onChangeDocument

当前 project 内的 document 变更事件

/**
* 当前 project 内的 document 变更事件
* set callback for event onDocumentChanged
*/
onChangeDocument(fn: (doc: IPublicModelDocumentModel) => void): IPublicTypeDisposable;

相关类型:

onSimulatorHostReady

当前 project 的模拟器 ready 事件

/**
* 当前 project 的模拟器 ready 事件
* set callback for event onSimulatorHostReady
*/
onSimulatorHostReady(fn: (host: IPublicApiSimulatorHost) => void): IPublicTypeDisposable;

相关类型:

onSimulatorRendererReady

当前 project 的渲染器 ready 事件

/**
* 当前 project 的渲染器 ready 事件
* set callback for event onSimulatorRendererReady
*/
onSimulatorRendererReady(fn: () => void): IPublicTypeDisposable;

相关类型:IPublicTypeDisposable