project - 模型 API
模块简介
引擎编排模块中包含多种模型,包括:
他们的依赖关系如下图:
在文档模型内部,又有一些引申模型,比如:
整个模型系统,以 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;
方法
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;
getDocumentByFileName
根据 fileName 获取 document
/**
* 根据 fileName 获取 document
* get a document by filename
* @param fileName
* @returns
*/
getDocumentByFileName(fileName: string): IPublicModelDocumentModel | null;
getDocumentById
根据 id 获取 document
/**
* 根据 id 获取 document
* get a document by id
* @param id
* @returns
*/
getDocumentById(id: string): IPublicModelDocumentModel | null;
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;
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;
@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;