🔥🔥🔥Oinone 工作流动态表单最佳实践
需求背景
为了提高操作效率并简化流程设计过程,应对伙伴们反映的在流程设计器中,即使填写/审批流程相同,不同模型也需重新配置的问题,我们引入了"动态表单"功能。此功能旨在减少重复配置的需求,通过设置节点名称和绑定视图,便可实现审批流程相同而视图不同,从而使得相同的审批流程可以被高效重复利用。
为确保伙伴们能够更加方便的使用动态表单,我们将典型示例整合至"工作流"中。本节将结合这些示例详细阐述"动态表单"功能的应用方法。
使用主要分为两个步骤:流程设计和动态表单配置。
流程设计
触发节点配置
- 应用:工作流
- 选择模型:动态表单任务
- 触发场景:更新数据时
- 选择更新字段:触发次数
填写/审批节点配置
- 动态表单按钮设置为启用状态。
- 数据来源设置为触发节点。
- 动态表单函数默认有一条内置函数,选中即可。
- 数据保存方式、填写人等信息,同从前使用方式。
- 在动态表单模式下,数据权限的管理将不再由流程设计器控制,而是由用户所填写的视图进行控制。
- 例如,若希望用户在"一审"阶段不能修改某字段,则应在设计视图时将相关字段设为只读模式。同样,若某些信息不宜在"一审"阶段展示给客户,相应字段应在设计过程中被设置为隐藏状态。
若需在"一审"节点接收"一填"阶段的结果,数据来源设置为"一填[动态表单]"。其他配置项保持不变,按照上述说明进行设置。
若希望"二填"节点的数据由用户填写,并希望内容处于空白状态,可将数据来源设置为"触发"节点。
通过这种配置,"二填"节点的数据将不会受到"一填"和"一审"节点数据的影响。
二审节点的配置同一审,此处省略。
"终审"节点希望接收到"一审"节点的数据,可以将数据来源设置为一审。
动态表单配置
首先创建动态表单任务:工作流->动态表单任务->创建,给流程起个名字。
节点任务配置
- 流程名:通过下拉菜单选择,数据为动态表单任务中,创建的流程信息。
- 节点名称:【强制】确保与流程设计中的节点名称完全一致,否则将无法正确匹配到对应节点的视图。
- 模型:选定用于绑定节点视图的模型。
- 视图:选择视图前须先确定模型,系统将自动列出所选模型下的通过UI创建的视图供选择。
查看配置效果
在工作流模块->动态表单->动态表单任务,点击"详情",可以看到该流程所配置的节点信息。
动态表单任务详情页
流程触发
点击"触发"按钮将使触发次数自动递增。在流程设计器中配置触发节点时,我们已设定"触发次数"字段的变化作为流程启动的条件。
触发节点配置筛选条件
通过完成上述操作,我们已成功配置动态表单。现在可以利用触发节点的筛选条件,来确定触发按钮被点击后,所启动的流程。
自定义动态表单函数
如果所提供的示例未能满足您的需求,您可以根据自身的需求,对触发条件和动态表单函数进行相应的定制与调整。
- 动态表单函数定义规则如下:
- namespace:强制为 WorkflowFunctionConstant.FUNCTION_NAMESPACE。
- fun:强制以 WorkflowFunctionConstant.WORKFLOW_CUSTOM_VIEW_FUNCTION_PREFIX 为前缀。
- 入参说明:
- 参数1:节点数据,例如,配合
instanceof
可以判断当前是填写节点(WriteNode)还是审批节点(ApprovalNode)。 - 参数2:触发节点的模型数据,如果您的触发节点不确定,可以通过Map接收参数。
- 参数3:该节点所配置数据来源的数据。
- 参数1:节点数据,例如,配合
- 出参说明:视图,如果出参为null,流程终止运行,错误信息提示为"流程节点执行失败,动态表单函数获取视图为空"。
@Slf4j
@Component
@Fun(WorkflowFunctionConstant.FUNCTION_NAMESPACE)
public class DynamicFormCustom {
/**
* 根据动态表单任务获取视图
*
* @param node 节点数据
* @param dynamicFormTask 触发节点数据
* @param dataObj 源数据
*/
@Function.fun(WorkflowFunctionConstant.WORKFLOW_CUSTOM_VIEW_FUNCTION_PREFIX + "fetchDynamicFormFunction")
@Function.Advanced(displayName = "[内置]获取动态表单函数")
@Function(name = "fetchDynamicFormFunction")
public View fetchDynamicFormFunction(Node node, DynamicFormTask dynamicFormTask, Map<String, Object> dataObj) {
DynamicFormTaskNode dynamicFormTaskNode = fetchDynamicFormTaskNode(node, dynamicFormTask);
if (dynamicFormTaskNode == null) {
return null;
}
dynamicFormTaskNode.fieldQuery(DynamicFormTaskNode::getView);
return dynamicFormTaskNode.getView();
}
private DynamicFormTaskNode fetchDynamicFormTaskNode(Node node, DynamicFormTask dynamicFormTask) {
List<DynamicFormTaskNode> dynamicFormTaskNodeList = Models.origin().queryListByWrapper(Pops.<DynamicFormTaskNode>lambdaQuery()
.from(DynamicFormTaskNode.MODEL_MODEL)
.eq(DynamicFormTaskNode::getNodeName, node.getNodeName())
.eq(DynamicFormTaskNode::getTaskCode, dynamicFormTask.getCode())
);
if (CollectionUtils.isEmpty(dynamicFormTaskNodeList)) {
return null;
}
if (dynamicFormTaskNodeList.size() > 1) {
log.error("工作流动态获取表单函数视图匹配多个,{}", JsonUtils.toJSONString(dynamicFormTaskNodeList));
}
return dynamicFormTaskNodeList.get(0);
}
}

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
-
上一篇
微信小程序端智能项目工程化实践
作者: vivo 互联网大前端团队- You Chen 本文介绍可以在微信小程序上应用的端智能技术方案,聚焦TensorFlow.js推理和微信原生推理,详细讲解这两种方案在项目中的应用过程,为小程序开发者提供可复用的端智能技术选型策略与工程化解决方案。 1分钟看图掌握核心观点👇 本文提供配套演示代码,可下载体验: Github |weixin-mini-ai 一、背景 随着AI浪潮的到来,各行各业都在利用AI赋能自身的业务,我们在vivo+云店项目上也进行了端智能探索,并成功应用到个性化商品推荐业务上,小程序端直接本地调用AI模型进行商品推荐,上线后商品点击率提升了30%,取得了不错的业务效果,接下来介绍如何让微信小程序具备端智能能力。 二、技术选型 在项目启动之前我们进行了相关技术调研,发现完备的微信小程序端智能方案并不是很多,最终锁定了TensorFlow.js推理和微信原生推理这两种方案,它们有着相对完善的说明介绍,整体对比如下表所示。 2.1 TensorFlow.js推理 TensorFlow.js 是谷歌开发的机器学习开源项目,致力于为Javascript提供具有硬件加...
-
下一篇
得物灵犀搜索推荐词分发平台演进3.0
一、 背景 导购是指在购物过程中为消费者提供指引和帮助的人或系统,旨在协助用户做出更优的购买决策。在电商平台中,导购通过推荐热卖商品、促销活动或个性化内容,显著提升用户的购物体验,同时推动销售额的增长。其核心目标是通过精准的引导,满足用户需求并促进商业价值最大化。 词分发:导购的重要组成部分 在电商导购体系中,词分发作为关键环节,主要聚焦于与关键词推荐相关的功能。这些功能包括但不限于下拉词、底纹词、热搜榜单、锦囊词以及风向标等。这些推荐词能够帮助用户快速定位感兴趣的商品或服务,降低搜索门槛,提高购物效率。例如,下拉词可以在用户输入搜索内容时提供智能提示,而热搜榜单则能引导用户关注平台上的热门趋势。 词分发平台的价值与功能 为了进一步优化词推荐的效率与一致性,词分发平台应运而生。该平台致力于打造一个通用、高效的词推荐生态系统,通过集成多种算法、工具和通用服务接口,为公司内不同业务域提供灵活的词推荐支持。其主要优势包括以下几点: 统一开发,降低成本:词分发平台通过提供标准化的服务和接口,避免了各业务域重复开发和维护词推荐功能的成本。不同团队无需从零开始构建推荐系统,只需调用平台提供的...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Windows10,CentOS7,CentOS8安装Nodejs环境
- CentOS7,CentOS8安装Elasticsearch6.8.6
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- MySQL8.0.19开启GTID主从同步CentOS8
- Dcoker安装(在线仓库),最新的服务器搭配容器使用
- SpringBoot2全家桶,快速入门学习开发网站教程
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- Hadoop3单机部署,实现最简伪集群