全部文档
文档中心工作流进阶与配置参考UX 进阶与控件参考统计、列表与任务交互示例

统计、列表与任务交互示例

下列使用 DeepModel 对象或查询的数据方案,需要先由管理员核对环境是否满足以下条件:

  • 注册DeepModel组件

  • 工作流组件部署的环境变量 EXPORT_DATASOURCE_MODE=MODEL

    • 该环境变量决定工作流的相关后台表所在的数据库

    • 修改该值可能改变工作流业务数据的存储来源,使原有记录无法按原入口展示。不要为了运行案例直接切换;应由管理员评估已有数据、迁移方案和验证方式。仅等待流程全部完成,并不能保证历史数据自动迁移。

在以下具体案例中,但凡出现【对象】、【对象组】、【DeepQL】、【DeepModel】、【对象分析查询】等字样,即说明该案例中必须满足以上两个条件,否则无法实现。

指标卡控件可展示数据源中的数字类型字段的值。

需求:

  • UX中的【指标卡】控件可以展示【我的任务】和【待认领的任务】的数量

  • 无需区分工作流元素,统计所有工作流的数量

    1715239493124-4c50b07a-5fa9-4007-8391-facad9c14a05

此方式需要注册DeepModel组件,且工作流组件部署的环境变量 EXPORT_DATASOURCE_MODE=MODEL 。

1715240860713-7bd6c38a-56c9-4479-b852-f461351a5f83

Step1:进入deep_model_console,添加工作流对象组

1715240717116-43fa9642-93e8-4491-9580-c5448b3c69fc

Step2:添加分析查询-我的任务

  • 若没有此功能,请将组件部署的版本升级到最新版,或采用【查询器】功能替代(那么后续UX中的数据源类型需要选择【自定义查询-DeepQL】,查询器如何使用请参考DeepModel组件文档)

  • 查询对象:DFTask

  • 分析维度:.task_status

  • 度量:DFTask对象,计数

  • 过滤条件:任务状态在进行中,且,执行人等于当前用户 或 执行人的用户组中的用户等于当前用户

    • 当前用户的JS表达式需要替换为【space+您的空间编码+::current_user_id】

    • 获取空间编码的方式之一:F12进入开发者工具,刷新平台中任一标签页,切至【网络】标签,选择任一行数据,查看【标头-请求标头】中的Space值

Copy
.task_status 等于 InProgress
且	(
.assignee.system_user.user_id 等于 global spacenbjoip::current_user_id
或
.assignee.system_group.user.user_id 等于 global spacenbjoip::current_user_id
)

参考配置截图:

1715245064202-5dcfa348-5cb3-42fd-8c6b-b7e92792f943

Step3:添加分析查询-待认领的任务

  • 同Step2,仅改变了过滤条件:任务状态在进行中,且,执行人为空,且,候选人等于当前用户 或 候选人的用户组中的用户等于当前用户

Copy
.task_status 等于 InProgress
且	
.assignee 为空
(
.candidate.system_user.user_id 等于 global spacenbjoip::current_user_id
或
.candidate.system_group.user.user_id 等于 global spacenbjoip::current_user_id
)

Step4:在UX中添加数据源

  • 数据源类型为【对象分析查询】

  • 分别将前两步添加的分析查询都添加为数据源

    1715246062452-cb40cf02-d3ef-4569-adfb-d2406ce51455

Step5:在UX中添加指标卡控件

  • 分别关联对应的数据源,添加的指标数字关联的属性为count_of_DFTask

    1715246268296-49ee7b04-28c8-4bc3-8635-c0805c1031e6

适用于没有注册DeepModel组件,且工作流组件没有部署在 MODEL 上的情况。

Step1:新建python元素,用作UX中的数据源

1715239876518-c9f14f3c-8725-42c4-9b1d-5a23569fdc87

用于参考的示例代码如下:

Copy
from deepfos.lib.deepux import Struct, Integer, as_datasource
from deepfos.element.workflow import WorkFlow
import pandas as pd

class Data(Struct):
    my_task_num: Integer
    claim_task_num: Integer

@as_datasource(struct=Data)

def main(p1, p2):
    # 指定任意一个存在的工作流元素编码
    flow = WorkFlow('budget_Status_MultiSubprocess')

    # 我的任务(不分工作流元素,返回所有我的任务)
    my_task = flow.list_my_task(status=None, as_dataframe=False)
    my_task_num = len(my_task)

    # 待认领的任务(不分工作流元素,返回所有待认领的任务)
    claim_task = flow.list_claim_task(as_dataframe=False)
    claim_task_num = len(claim_task)

    df = pd.DataFrame({
        'my_task_num': [my_task_num],
        'claim_task_num': [claim_task_num],
    })
    return df

PS: 关于UX组件中的python数据源详细介绍,请查看UX相关文档:https://docs.deepfos.com/component/deepux/function/datasource#python-dataframe

Step2:在UX中添加数据源

数据源类型为【自定义查询-python】

1715240032135-aa40248d-ae9c-4714-8894-c513479156ae

Step3:在UX中添加指标卡控件

  • 关联python数据源,添加的指标数字关联的属性分别为my_task_numclaim_task_num

    1715246513720-f15f853f-d9d1-4046-8484-38cf19846ba9


需求:

指标卡提示已超时的任务,点击可查看所有超时的任务列表,可对单条任务的负责人发送催办提醒。

前提:

  1. 注册DeepModel组件

  2. 工作流组件部署的环境变量 EXPORT_DATASOURCE_MODE=MODEL

  3. 工作流的任务节点,配置了【到期策略】,需要用这里的【到期时间】判断任务是否超时,详见工作流对应节点的使用手册

历史 Demo 地址(位于独立测试应用,需相应权限):

配置步骤:

  1. 配置工作流,用于发送通知,举例:

    1726195671325-daec0cc9-a18e-4600-8805-193742b56576

  2. 配置指标卡,用于统计超时任务数量,关联的数据源可用【对象分析查询】,详见本文中【指标卡】章节,配置参考:

    1726196538995-c77b2b24-f3e6-46f9-a695-a220e8f553cd

  3. 配置清单表,用于展示超时任务的列表

    1. 清单表可以配置在弹窗中

    2. 关联的数据源可直接用【对象-DFTask】,过滤条件(过滤出超时的):

      1726196851274-96690cc8-160f-4eb9-a1c7-1937cac0cfff

    3. 操作列添加行按钮【催办】,配置事件:【点击】时【发起流程】,用于发送通知

      1726197493885-711096e6-7c4c-4786-ac77-3e52aace7049

  4. 指标卡配置事件:【点击】时【打开弹窗】

效果展示:

1726198892527-0bd069fe-c152-4e99-9035-e5f610ecb8ff

思路拓展

其他类似的指标卡结合清单表的场景,都同理,只是数据源需要重新配置。


需求:

自定义流程实例列表,可点击行以查看流程详情,详情包含流程记录流程图

前提:

  1. 注册DeepModel组件

  2. 工作流组件部署的环境变量 EXPORT_DATASOURCE_MODE=MODEL

配置步骤:

  1. 进入deep_model_console,添加工作流对象组

    1715240717116-43fa9642-93e8-4491-9580-c5448b3c69fc

  2. 新建UX页面,用来展示【流程实例详情】:

    1. 选择空白模板

    2. 在【页面变量】中添加外部变量 proc_id,来源选择【外部】,数据类型为 string,保存 UX。

    3. 添加【流程记录】、【流程图】控件,控件中的【流程实例 ID】选择【UX变量 → proc_id】。

      1717728946390-5bf2a38d-e420-4e74-ba3d-11bc86e8d797

  3. 新建UX页面,用来展示【流程实例列表】:

    1. 可选择模板【基于业务模型/对象】-【清单表(上下)】

    2. 数据源选择对象DFProcess

      1717727592702-4e9aec12-e59f-44db-a5a9-5ef32c139987

    3. 按需配置查询区域

      1717727737843-774e5553-873a-40ba-87e2-454cc71b1a92

    4. 按需优化过滤条件

      1717727952747-1e17d021-03bd-4384-8a52-6a804787f8d6

    5. 添加操作列按钮,用来跳转【流程实例详情】页面

      1717728512218-dd2a34aa-5174-482b-a382-164667f509c5

    6. 按钮事件配置【跳转内部页面】,选择已保存的【流程实例详情】页面,为外部变量 proc_id 对应的跳转参数赋当前行的 proc_inst_id。变量编码须与详情页一致,不能把任务 ID 传给流程实例 ID。

      1717729152050-c462fb3a-78d6-49aa-a9ad-1eb83f04c3c0

效果展示:

1717729934907-22d56935-491a-471e-9192-da72dd320464

思路拓展

结合清单表控件其他功能、UX中其他控件(例如边栏布局对象数据选择器等),丰富并优化流程实例列表。


业务场景:

填报表单后,提交,在提交前二次确认,防止用户未保存/计算表单。

核心配置:

任务处理控件的完成任务前节点添加动作【二次确认弹窗】

1716962899893-331035d8-9199-4964-bad8-ad93466b69a1

效果:

此处为语雀卡片,点击链接查看

拓展场景1:多个任务节点都使用这同一个待办界面,但只有某些节点需要弹出此二次弹窗(例如只有第一个填报节点需要)。

核心配置:

  1. UX 添加外部变量 pop,来源选择【外部】,数据类型为 boolean,保存页面。

  2. 需要二次弹窗的节点,为待办跳转参数 pop 赋布尔值 true;其他节点可传 false

  3. 【二次确认弹窗】的运行条件配置 $var.pop === true。两端统一使用布尔值,不与字符串比较混用。

效果:

此处为语雀卡片,点击链接查看

思路拓展:

灵活运用二次确认弹窗的运行条件,还可以运用此UX控件中其他数据进行条件编写,例如当前处理节点=预算员提交当前部门=财务部······

业务场景:

流程中的前后两个节点都是同一个用户进行处理,需要在处理完上一个任务后,刷新到下一个任务的处理页面。

核心配置:

  1. UX 的【任务处理】控件中,启用任务实例为空时的后备查询,按场景选择【基于流程实例查询】或【基于业务键查询】。详见 办理任务与回传

  2. 如果【基于流程实例查询】,先声明字符串类型的外部变量 proc_id,工作流任务节点的待办跳转参数配置 proc_id = wfp$proc_id,UX 中选择该变量($var.proc_id)。

  3. 如果【基于业务键查询】,先声明外部变量 businessKey 并传入实际业务键,UX 的业务键配置项选择 $var.businessKey,同时选择对应工作流。

  4. 基于这两种方式查询,可能查出多个任务实例(例如同一个流程,此用户处理了多次),会优先展示时间最近、且进行中的任务,并支持切换任务实例

Demo 配置入口:

效果:

1747211305476-45c8d001-08bb-43cc-92ee-d440ff056d56

DEMO中,两种查询方式的主要配置截图见下文。

举例:UX 先声明外部变量 proc_id;工作流通过 proc_id = wfp$proc_id 传入流程实例 ID。UX 的后备查询选择【基于流程实例查询】,流程实例 ID 引用 $var.proc_id

当然,只要能在UX中赋值对应的流程实例ID,就能查询到对应的任务,展示对应的任务处理控件。例如系统中可能在每次发起流程后,都回写流程实例ID到业务表中,那么可能在UX中可以直接通过清单表等组件取到对应的流程实例ID值。总之,根据自身情况灵活配置。

1747208598495-0c4d0d3f-ea70-4e95-95b7-ce69b98a3fbf

1747208675527-535ad601-4348-487a-9edf-78219ec5d674

举例:UX 先声明外部变量 businessKey;工作流通过同名跳转参数传入实际业务键。UX 的后备查询选择【基于业务键查询】,在业务键配置项中引用 $var.businessKey,不能填到流程实例 ID 中。

同理,只要能在UX中取到对应的业务键的值,就能展示对应的任务实例页面,例如UX中可能直接存在维度选择器,能直接组成业务键,就不需要从工作流传参了。

1747209341459-1cc29b48-9bbc-4c0f-8b6c-099c89ccc80e

1747209387605-cb1a5c4c-44f0-4784-8964-2d444b43d517

业务场景:

例如审批流程为A->B->C->D,D驳回至A时,可以指定A重新提交后是否直接到D,无需B、C再重新审批。

核心配置:

  1. D处理时,对应UX的任务处理控件中,使用完成任务所需参数传参至工作流,告知A提交后的审批路线,这个参数存在节点D的acr$extra_res变量中

  2. A提交后需用排他网关判断后续是到B还是直接到D,判断条件需要用到节点D的acr$extra_res变量,因此节点D完成时,需要把acr$extra_res变量映射到全局变量中,以供排他网关使用

    1747728763504-a3f3ed49-0c40-44bf-ab15-0d74ff980493

    1747729093392-64a76a80-a039-49dd-86ff-41d6ee783184

效果:

1747730515732-237f2ce7-3aff-45c0-b65d-582ccd1a1ccd

回到顶部

咨询热线

400-821-9199