跳转到内容

数据服务

数据服务负责和远程接口进行交互、数据缓存及数据格式转换,为界面服务层提供统一的数据访问接口,保障数据的高效存取和一致性。除此之外数据服务中还包含工作流服务数据缓存

API

数据服务主要包含以下预置方法:

方法名称参数说明
exec(id: string, context: IContext, params?: IData | IData[], params2?: IParams,header?: IData)执行服务方法
execAc(id: string, context: IContext, params?: IData | IData[], params2?: IParams)执行服务方法(AC模式)
getDraft(context: IContext,params?: IData | IData[],params2?: IParams)获取草稿数据
create(context: IContext,params?: IData | IData[],params2?: IParams)创建数据
get(context: IContext,params?: IData | IData[],params2?: IParams)获取数据
update(context: IContext,params?: IData | IData[],params2?: IParams)更新数据
remove(context: IContext,params?: IData | IData[],params2?: IParams)删除数据
fetchDefault(context: IContext,params?: IData | IData[],params2?: IParams)获取默认数据集
getDraftTemp(context: IContext,params?: IData | IData[],params2?: IParams)获取草稿数据(临时数据)
createTemp(context: IContext,params?: IData | IData[],params2?: IParams)创建数据(临时数据)
getTemp(context: IContext,params?: IData | IData[],params2?: IParams)获取数据(临时数据)
updateTemp(context: IContext,params?: IData | IData[],params2?: IParams)更新数据(临时数据)
removeTemp(context: IContext,params?: IData | IData[],params2?: IParams)删除数据(临时数据)
fetchTempDefault(context: IContext,params?: IData | IData[],params2?: IParams)获取默认数据集(临时数据)
createEntity(data: IData | IData[] | IDataEntity | IDataEntity[])创建数据对象实例
destroy-服务实例销毁
js
// 获取应用实例
const app = ibiz.hub.getApp(this.context.srfappid);
// 获取指定实体服务
const deService = await app.deService.getService(
    this.context,
    appDataEntityId, // 实体标识
);
// 执行服务方法
deService.exec(id, this.context, this.params);

数据缓存

数据缓存机制基于应用实体的关联关系设计,通过DECache工具类实现对应用对子实体数据的独立管控,其核心流程采用包数据模式(Packet Data Pattern)进行前后端交互,确保数据结构的完整性与一致性。

数据缓存主要包含以下预置方法:

方法名称参数说明
get(context: IContext, srfKey: string)查找数据
add(context: IContext, entity: IDataEntity)新增数据
update(context: IContext, entity: IDataEntity)更新数据
delete(context: IContext, srfKey: string)删除数据
createBatch(context: IContext, entities: IDataEntity[])批量创建数据
updateBatch(context: IContext, entities: IDataEntity[])批量更新数据
deleteBatch(context: IContext, srfKeys: string[])批量删除数据
checkData(context: IContext, srfKey: string)检查数据是否已经存在
forceAdd(context: IContext, entity: IDataEntity)强制设置数据,忽略其它逻辑
forceUpdate(context: IContext, entity: IDataEntity)强制更新数据,非合并,忽略其他逻辑
forceDelete(context: IContext, srfKey: string)强制删除数据,忽略其他逻辑
getList-获取当前已经缓存的数据
clear-清空缓存
js
// 获取应用实例
const app = ibiz.hub.getApp(this.context.srfappid);
// 获取指定实体服务
const deService = await app.deService.getService(
    this.context,
    appDataEntityId, // 实体标识
);
// 查找实体缓存数据
const data = deService.local.get(this.context, id);
// 获取实体所有缓存数据
const list = deService.local.getList();

工作流服务

实体数据服务中内置当前实体工作流相关能力,为业务系统提供了完整的工作流服务。

工作流服务主要包含以下预置方法:

方法名称参数说明
getWFStep(context: IContext)根据当前步骤和任务获取工作流步骤数据
getWFLink(context: IContext,data: IData)根据业务主键和当前步骤获取操作路径
getWFHistory(context: IContext)根据业务主键获取工作流程进度
getWFProcessDiagram(context: IContext)根据业务主键获取工作流流程图片
getWFVersion(srfWFTag?: string)获取标准工作流版本信息
wfStart(context: IContext,params: IParams,data: IData)启动工作流
wfSubmit(context: IContext,params: IParams,data: IData)提交工作流
wfWithdraw(context: IContext,params: IParams,data: IData)工作流撤销
wfReassign(context: IContext,params: IParams,data: IData)转办
wfAddStepBefore(context: IContext,params: IParams,data: IData)前加签
wfAddStepAfter(context: IContext,params: IParams,data: IData)后加签
wfSendBack(context: IContext,params: IParams,data: IData)回退
wfSendCopy(context: IContext,params: IParams,data: IData)抄送
js
// 获取应用实例
const app = ibiz.hub.getApp(this.context.srfappid);
// 获取指定实体服务
const deService = await app.deService.getService(
    this.context,
    appDataEntityId, // 实体标识
);

// 开启工作流
const data = deService.wf.wfStart(this.context, this.params, data);

AI服务

实体服务中提供了AI相关的接口,在iBizHUB中,这些服务接口为@ibiz-template-plugin/ai-chat提供数据来源,完成AI相关功能。

方法名称参数说明
aiChatSse(onmessage: (data: IPortalAsyncAction) => void,controller: AbortController,context: IContext,params?: IData | IData[],data?: IData)实体级别 AI 聊天会话
aiChatRecommendPrompt(context: IContext,params?: IData | IData[],data?: IData)获取 AI 聊天会话推荐提示
aiChatHistory(context: IContext,params?: IData | IData[],data?: IData)获取 AI 聊天会话历史记录

aiChatSse为AI服务提供了AI提问的功能:

js
// 获取应用实例
const app = ibiz.hub.getApp(this.context.srfappid);
// 获取指定实体服务
const deService = await app.deService.getService(
    this.context,
    appDataEntityId, // 实体标识
);
const abortController = new AbortController();
await deService.aiChatSse(
    (msg: IPortalAsyncAction) => {
     
    },
    abortController,
    context, // 上下文
    params, // 视图参数
    {
      messages: [], // 聊天消息
    },
);

aiChatRecommendPrompt为AI服务提供推荐提示:

js
// 获取应用实例
const app = ibiz.hub.getApp(this.context.srfappid);
// 获取指定实体服务
const deService = await app.deService.getService(
    this.context,
    appDataEntityId, // 实体标识
);
const result = await deService.aiChatRecommendPrompt(
    context, // 上下文
    params, // 视图参数
    message,// 聊天消息
);

aiChatHistory为AI服务提供历史记录:

js
// 获取应用实例
const app = ibiz.hub.getApp(this.context.srfappid);
// 获取指定实体服务
const deService = await app.deService.getService(
    this.context,
    appDataEntityId, // 实体标识
);
await deService.aiChatHistory(
    context, // 上下文
    params, // 视图参数
    data,
)
未来已来,立即拥抱应用融合的力量
Released under the MIT License.