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