工作流动态表单使用说明

需求背景

为了提高操作效率并简化流程设计过程,应对伙伴们反映的在流程设计器中,即使填写/审批流程相同,不同模型也需重新配置的问题,我们引入了“动态表单”功能。此功能旨在减少重复配置的需求,通过设置节点名称和绑定视图,便可实现审批流程相同而视图不同,从而使得相同的审批流程可以被高效重复利用。

为确保伙伴们能够更加方便的使用动态表单,我们将典型示例整合至“工作流”中。本节将结合这些示例详细阐述“动态表单”功能的应用方法。

使用主要分为两个步骤:流程设计和动态表单配置。

流程设计

触发节点配置

  • 应用:工作流
  • 选择模型:动态表单任务
  • 触发场景:更新数据时
  • 选择更新字段:触发次数

触发节点配置

填写/审批节点配置

  1. 动态表单按钮设置为启用状态。
  2. 数据来源设置为触发节点。
  3. 动态表单函数默认有一条内置函数,选中即可。
  4. 数据保存方式、填写人等信息,同从前使用方式。
  5. 在动态表单模式下,数据权限的管理将不再由流程设计器控制,而是由用户所填写的视图进行控制。
    • 例如,若希望用户在“一审”阶段不能修改某字段,则应在设计视图时将相关字段设为只读模式。同样,若某些信息不宜在“一审”阶段展示给客户,相应字段应在设计过程中被设置为隐藏状态。

填写节点配置

若需在“一审”节点接收“一填”阶段的结果,数据来源设置为“一填[动态表单]”。其他配置项保持不变,按照上述说明进行设置。

审批节点配置

若希望“二填”节点的数据由用户填写,并希望内容处于空白状态,可将数据来源设置为“触发”节点。

通过这种配置,“二填”节点的数据将不会受到“一填”和“一审”节点数据的影响。

二填节点配置

二审节点的配置同一审,此处省略。

“终审”节点希望接收到“一审”节点的数据,可以将数据来源设置为一审。

终审节点配置

动态表单配置

首先创建动态表单任务:工作流->动态表单任务->创建,给流程起个名字。

创建动态表单任务

节点任务配置

  1. 流程名:通过下拉菜单选择,数据为动态表单任务中,创建的流程信息。
  2. 节点名称:【强制】确保与流程设计中的节点名称完全一致,否则将无法正确匹配到对应节点的视图。
  3. 模型:选定用于绑定节点视图的模型。
  4. 视图:选择视图前须先确定模型,系统将自动列出所选模型下的通过UI创建的视图供选择。

创建任务节点配置

查看配置效果

在工作流模块->动态表单->动态表单任务,点击“详情”,可以看到该流程所配置的节点信息。

任务列表

动态表单任务详情页

动态表单任务详情

流程触发

点击“触发”按钮将使触发次数自动递增。在流程设计器中配置触发节点时,我们已设定“触发次数”字段的变化作为流程启动的条件。

点击触发按钮

触发节点配置筛选条件

通过完成上述操作,我们已成功配置动态表单。现在可以利用触发节点的筛选条件,来确定触发按钮被点击后,所启动的流程。

触发节点配置筛选条件

自定义动态表单函数

如果所提供的示例未能满足您的需求,您可以根据自身的需求,对触发条件和动态表单函数进行相应的定制与调整。

  • 动态表单函数定义规则如下:
    • namespace:强制为 WorkflowFunctionConstant.FUNCTION_NAMESPACE。
    • fun:强制以 WorkflowFunctionConstant.WORKFLOW_CUSTOM_VIEW_FUNCTION_PREFIX 为前缀。
  • 入参说明:
    • 参数1:节点数据,例如,配合instanceof可以判断当前是填写节点(WriteNode)还是审批节点(ApprovalNode)。
    • 参数2:触发节点的模型数据,如果您的触发节点不确定,可以通过Map接收参数。
    • 参数3:该节点所配置数据来源的数据。
  • 出参说明:视图,如果出参为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);
    }
}

Oinone社区 作者:夜神月原创文章,如若转载,请注明出处:https://doc.oinone.top/designer/workflowdesigner/16336.html

访问Oinone官网:https://www.oinone.top获取数式Oinone低代码应用平台体验

(0)
夜神月的头像夜神月数式员工
上一篇 2024年8月22日 下午6:53
下一篇 2024年8月23日 上午11:40

相关推荐

  • 【工作流】如何添加工作流运行时依赖

    前端 package.json中新增依赖 @kunlun/workflow,版本跟@kunlun/dependencies的填一样 src/main.ts内导入依赖 import 'reflect-metadata'; import { VueOioProvider } from '@kunlun/dependencies&#0…

    2024年5月30日
    24800
  • 【工作流】如何自定义支持在加签的同时审批同意

    1.添加工作流相关依赖 业务的api工程添加工作流相关依赖 package pro.shushi.pamirs.demo.api; import org.springframework.stereotype.Component; import pro.shushi.pamirs.core.common.CommonModule; import pro.shu…

    2024年6月6日
    34500
  • 流程设计器的导入导出

    目录 依赖包安装GraphQL的工具登录gql导出生成json文件业务工程中导入示例代码生产环境使用流程设计器 简介 通过调用导出接口,将设计器的设计数据与元数据打包导出到文件中。提供了download/export两类接口。 依赖包 <dependency> <groupId>pro.shushi.pamirs.metadata.m…

    2024年5月16日
    41400
  • 【工作流】如何在业务模型的列表中展示工作流的审批按钮

    介绍 当我们需要在业务模型的列表中展示审批的按钮时,我们可以通过自定义的方式完成扩展,这样就可以在业务数据中直接点击该动作按钮跳转到工作流待办详情页处理审批或填写任务 1.先在业务数据模型中新增userTaskList字段存放该条数据的工作流待办数据 @Model.model(DemoItem.MODEL_MODEL) @Model(displayName …

    2024年5月8日
    21700
  • 【工作流】如何自定义工作流的待办任务列表

    介绍 有些时候我们需要把一些业务数据同时展示在工作流的待办列表中,这时候我们可以通过覆写oinone的待办列表展示组件 1.添加工作流相关依赖 业务的api工程添加工作流相关依赖 package pro.shushi.pamirs.demo.api; import org.springframework.stereotype.Component; impor…

    2024年5月8日
    21100

发表回复

登录后才能评论