Skip to main content
通过“工作流”和“表单网格”组装学院夏令营开设申请模块

摘要: 学院通过系统提交夏令营的活动安排、活动必要性及经费支持等信息,研究生院审核通过后,学生其可报名申请。夏令营信息管理由“表单网络”工具配置完成,审核流程由“工作流”工作配置完成。通过云开发工具把这两者集成起来即实现了业务需求。


创建夏令营数据表

除了夏令营申请开设的基本信息和记录的创建时间和修改时间外,新增三个字段,用于存储审核状态。

  • ddztm:用于存储当前记录的状态(填写信息、研究生院审核、已通过、不通过)
  • ddztsj:上次审核的时间
  • ddztbz:审核的历史记录
创建夏令营数据表
创建夏令营数据表

通过有限状态机定义工作流

ID设置为“yxxx”,表示这是一个由院系提交、学校审核的工作流。通过定义有限状态机的状态、操作和状态迁移表实现一个轻量级的工作流。

第一步,定义状态。其格式为长度为四锯齿数组:[状态ID数组,状态名称数组,可查看角色数组,可操作角色数组]。锯齿数组内的所有数据的长度要完全相同。保留状态ID为0、1、2分别表示填写信息、已通过、不通过。用户在某一个状态下的对网格的权限,不仅受网格的基本权限设置的影响,同时也受状态机权限的影响。以下代码定义了填写信息、已通过、不通过、学校审核四种状态的代码、名称、可查看角色、可操作角色。

[
    [0,1,2,5],
    ['填写信息','已通过','不通过','学校审核'],
    ['600,700','600,700','600,700','600,700'],
    ['600,700','700','700','700']
]

第二步,定义各状态操作。其格式为长度为N锯齿数组:[定义1, 定义2,…, 定义n]。定义i的格式为:[操作ID数组, 操作名称数组, 操作所属状态数组, 可操作角色数组],其中ID数组和名称数组的长度应相同,状态数组和角色数组均可省略。如果定义i的长度为2,则定义所有状态均有此操作;如果定义的长度为3,则只有定义状态有才有此操作;如果定义的长度为4,则只有在定义状态下且有定义角色的任何一个的用户才有此操作。1同意,2不同意,3退回为保留操作ID和名称。以下代码定义了在学校审核状态下定义同意、不同意、退回三种操作,在填写信息状态下定义了提交操作。

[
    [[1,2,3],['同意','不同意','退回'],[5]],
    [[4],['提交'],[0]]
]

第三步,定义状态迁移表。其格式为长度为N的锯齿数组:[定义1, 定义2,…, 定义n]。定义i为的格式为[当前状态ID,操作ID,新状态ID],表示在当前状态下,进行操作,转移到的新状态。[0,4,5]表示在填写信息状态下的提交操作将转移到学校审核状态,[5,1,1]表示在学校审核状态的同意操作将转移到同意状态。

[
    [0,4,5],
    [5,1,1],[5,2,2],[5,3,0]
]
通过有限状态机定义工作流
通过有限状态机定义工作流

引用工作流

通过“数据库”工具从关系创建表单,然后修改表单的“网格”定义属性,引用工作流。

点击运行按钮,地址“/core/uform/fsmgrid/xly_xly”中将显示状态网格。

引用工作流
引用工作流

状态网格

每一个选项卡表示一种状态,选项卡中只显示该状态的数据。通过点击状态按钮可以实现状态的转移。

将“/core/uform/fsmgrid/xly_xly”添加到导航中即实现了夏令营开设申请审核模块。

状态网格
状态网格