# 页面Wiki使用规范 Thu, Mar 10, 2022 10:21 AM wiki是为平台用户的使用提供良好提醒功能。wiki由3部分构成,wiki内容检索应用,wiki静态文本应用, wiki动态文本应用。其中wiki内容检索应用基于平台nats总线,向平台问答前端请求的资源。本身wiki内容检索应用不存在检索的答案,只提供检索服务,但是目前因为没有wiki静态文本应用,所以目前所有的静态应答资源在wiki内容检索应用上存储。wiki静态文件应用对应的是未来开发的平台帮助中心(暂未开发)。wiki动态文件应用,提供基于当前登录者的敏感信息检索服务,比如个人名片,所在租户信息等包含业务本身的服务信息。其wiki动态文本应用并非单独应用,而是业务应用在总线中绑定查询结果,接受wiki内容检索应用的总线问答。 由于静态帮助信息检索信息是由wiki服务自身提供应答内容,因此不在这里过多详述。接下来描述wiki动态信息绑定关系 ## WIKI动态文本开发 首先定义可查询的内容 ```java dto.setUserWiki("tusr-" + user.getCode()); ``` 定义用户查询的所以关键字,这里采用“tusr-[user code]”作为wiki的索引关键字, 需要注意,我们约定第一个“-”作为分隔符,其前面的内容作为总线主题查询,其后面的内容,作为查询的特征条件,交由应用本身进行处理。比如当前订阅的主题为:“com.myfmes.wiki.search.tusr”。其中“com.myfmes.wiki.search.”作为默认前置。 然后再前端定义用户操作的悬停组件 ```ts {{ item.userName }} ``` 通过“a-popover-wiki”标签标记需要接受帮助提醒的内容,当用户再用户名字上悬停3s后,触发wiki查询 之后再后端,定义总线的查询订阅 ```java @Log @Component public class WikiSubscriber implements ExternalSubscriber { @Autowired EventBus eventBus; @Autowired WikiSearchCmdExe wikiSearchCmdExe; public void clear() { KratosC.clear(); } public Object wiki(WikiSearchSO wks, String msg) { Object res = null; try { res = KratosF.withUserCtxInThread(wks.getSid(), user -> { return wikiSearchCmdExe.execute(user, wks); // 向应用内部总线请求问答 }); return res; } finally { String fmt = msg + ":%s -> %s"; log.info(String.format(fmt, JSON.toJSONString(wks), res == null ? "none" : JSON.toJSONString(res))); } } @ExternalSubscribe(type = SubscribeType.SYNC) public Object wikiTenant(WikiSearchSO wks) { return wiki(wks, "收到租户信息查询"); } @ExternalSubscribe(type = SubscribeType.SYNC) public Object wikiTenantUser(WikiSearchSO wks) { return wiki(wks, "收到租户用户名片查询"); } @ExternalSubscribe(type = SubscribeType.SYNC) public Object wikiTenantApp(WikiSearchSO wks) { return wiki(wks, "收到租户应用信息查询:"); } } ``` 这里,我们订阅了租户,租户用户,租户应用3种类型的查询,进行主题配置。 ```yaml jabus.spring.topics: wikiTenant-in-0: destination: com.myfmes.wiki.search.tenx # 获取租户信息 group: j2tas-wk01 wikiTenantUser-in-0: destination: com.myfmes.wiki.search.tusr # 获取租户用户信息 group: j2tas-wk02 wikiTenantApp-in-0: destination: com.myfmes.wiki.search.tapp # 获取租户应用信息 group: j2tas-wk03 ``` 流程: 后端返回前端查询关键字“tusr-xxxx”,前端用户在wiki组件种悬停3s后,向wiki内容检索应用查询相应的内容。内容检索应用将内容向平台总线中查询(com.myfmes.wiki.search.tusr)。租户应用订阅该主题,完成应答后将结果返回。 该方案是将帮助和引导用户使用平台的需求统一转移到wiki或者帮助中心。业务应用更加专注业务本身的开发工作。