# 节点属性

在元素属性窗口可以编辑节点的各种属性配置,在介绍节点各属性前先概述一下节点类型

# 节点类型

# 人工节点

人工节点是一种需要人为操作的步骤,流程运行到人工节点时,对该节点有执行权限的用户将产生一个待办任务,用户通过选择后续动作来使流程继续运转。

# 自动节点

自动节点是一种不需要人为操作、多进单出的步骤,流程运行到自动节点时,将执行定义在节点上的自动脚本(如有),并沿着唯一的离开动作继续执行。自动节点还可以用于流程的结束节点,这种情况下,自动节点没有离开的动作。

# 子流程节点

流程进入子流程节点时会发起另一个流程,这个流程实例和当前流程实例存在父子关系。子流程发起时会根据配置将父流程的数据带到子流程中,当子流程结束时也可以根据配置将子流程数据返回主流程。

# 判断节点

判断节点是一种不需要人为操作、多进多出的步骤,流程运行到判断节点时,将执行定义在节点上的判断脚本,并根据判断脚本的返回值确定选择哪个离开动作继续执行。

# 并行节点

并行节点是一种不需要人为操作、多进多出的步骤,流程运行到并行节点后,将同时运行所有离开动作。并行节点必须和合并节点对应使用。

# 合并节点

合并节点是一种不需要人为操作、多进单出的步骤。合并节点必须和并行节点对应使用,由一个并行节点开始的所有动作,必须最终汇总到一个合并节点上。流程运行到合并节点时,将执行定义在节点上的提前合并脚本,除非脚本的返回值为true,否则仅当源自并行节点的所有动作都已运行到合并节点时,流程才会沿着唯一的离开动作继续执行。

# 节点公共属性

尽管不同节点有着不同的属性,但所有节点也有着一些相同的属性,这包括节点的名称、显示名称、是否是默认启动节点以及节点的里程碑设置。上述内容组成了除了人工节点以外的其他各类节点的基本信息设置页,而人工节点则包含其他更多的设置。下图以自动节点的基本信息为例:

# 名称

节点的代码。节点代码是开发人员设置的节点唯一标识,需要在工作流范围内唯一,由于可能需要在Messenger代码中通过此名称引用该节点,应以英文字符命名。

# 显示名称

节点的在流程图中的显示名称。特别的,对于人工节点,该名称将是流程办理过程中待办任务和办理历史中显示的步骤名称,宜采用动宾结构或主谓结构,表示一个动作。如填写申请表、项目负责人审批。
当对步骤节点的显示名称有定制化需求时,可以用表单字段里的值来组装显示名称,注意组装显示名称中用到表单变量要采用${fieldName}的形式。

# 默认启动节点

表示流程可以以该节点作为启动节点。流程有且仅有一个默认启动节点。如果所有节点均未设置为默认启动节点,则没有进入动作的唯一节点自动成为默认启动节点。如果存在多个没有进入动作的节点,或者不存在没有进入动作的节点,则开发者必须明确勾选默认启动节点,否则流程无法保存。特别的,当流程的默认启动节点为非人工节点时,该流程将不在服务大厅显示,因为无法确定发起该需要流程的权限。

# 设置里程碑

表示是否在该节点上设置里程碑进度。里程碑帮助流程的使用用户了解流程的总体环节。区别于复杂的网状流程图,里程碑使用线性的进度来表达流程的环节,开发者通过在合适的节点上勾选设置里程碑并定义进度和标题,系统即可向用户展示如下的里程碑和当前位置:

其中绿色表示已完成的环节,蓝色表示当前正在处理的环节,灰色表示后续可能要经历的环节。

# 到达时设置

进度的设置是在达到节点时设置还是离开节点时设置。该设置仅对人工节点有效。

# 进度

进度的设置值。取值应该在1到10之间的整数。进度越大表示在里程碑中显示在越后面。在同一个组别组中(见组别的说明),相同的进度值在流程中仅允许出现一次。

# 组别

定义里程碑所属的组。组的父子关系通过组别的前缀关系定义,如组别A为组别AB的父级,因此空白组别称为全局组,它是任意组别的祖先。具有直系关系的组别构成组别组。里程碑的显示内容将仅包括当前运行到的组别及其所有祖先级别,因此组别的定义使得里程碑的内容可能随着流程运行而改变。

# 标题

进度值显示的名称。

# 节点图片

节点图片也是所有节点都有的设置页,以人工节点为例,见下图:

不同类型的节点可以选择的图片不同,起到的作用是类似的。图片的选择影响节点在流程图上的显示,但对流程运行不会产生任何影响。

# 人工节点属性

人工节点包含基本信息、步骤权限、模板&权限、接收物品、抄送、通知、时限、办理历史、会签和节点图片10项设置页,其中基本信息的部分设置和节点图片请参考节点公共属性

# 基本信息

人工节点的基本信息设置页包含一些节点公共属性以外的设置项。

扩展显示名
扩展显示名是对显示名称的补充。人工节点的显示名称除了在流程图中显示以外,也是待办任务的名称,当仅有显示名称时,流程运行到动态分支时,其中的人工节点会产生多个名称相同的待办任务,不利于在办理历史中清晰表达当时的任务。扩展显示名允许在名称中包含${fieldName},来引用表单数据计算最终的显示名称,这样就可以避免类似情况。

允许终止
该步骤的执行人是否可以终止流程。如果允许,该步骤的执行人在所有操作动作后会增加一个终止按钮。

自动归档
该步骤执行后,是否在办理历史中显示。如果勾选,则办理后不出现在办理历史中。如果一个实例的所有步骤都是自动归档的,则这个实例也不会出现在服务大厅该用户的已办任务中。

允许调整实例优先级
允许该步骤执行时调整流程实例的优先级。该功能暂时没有实现。

允许连续办理
如果允许连续办理,则当用户存在多个实例都位于该步骤时,在办理完一个之后,系统会提示是否连续办理下一个。

数据绑定
该步骤执行后,表单数据是否同步到绑定数据库。

使用历史数据回顾
该步骤执行后,用户重新打开该步骤的办理表单时,使用最新数据还是当时的快照数据进行显示。一般情况下,系统总是使用最新数据来显示已办理的表单,这意味着用户可以从办理后的表单上看到数据的变化,如审核意见。如果不希望看到更新,请勾选此项。

# 步骤权限

人工节点的步骤权限页设置该人工节点的执行人。

执行权限由岗位设置和限定设置组成,岗位和限定的具体设置将在岗位和限定说明。当流程流转到该节点时,通过此处设置获得执行权限的用户将在服务大厅的待办任务栏看到待办任务,并可以打开办理。

允许系统用户执行此步骤
一般人工节点由用户在服务大厅打开待办任务、选择执行动作后执行,特殊需求下也可以由业务系统通过API接口来执行。由于API接口使用系统用户来执行,所以必须勾选此选项。

用户指定执行人
此设置指上一人工节点办理后流程流转到当前人工节点时,办理上一人工节点的用户是否允许为当前人工节点指定执行人。需要说明的是,即便允许指定,被指定的执行人也只能是岗位和限定中设置为有权限执行当前节点的用户。

可选
允许指定,也可以不指定。

必选
必须指定。如果根据岗位和限定设置,当前没有用户可执行,则上一人工节点无法办理。

不可选
不能指定。

随机
用户不能指定,由系统随机指定。

不提示
不能指定,并且系统也不给出关于下一步的提示。

无论上述何种情况,如果最终指定了用户,则仅被指定的用户可以看到并办理此步骤,否则所有有权限的用户均可以看到并办理此步骤,第一个用户办理后,其他未办理的用户将不能再查看和办理该步骤。

# 模板&权限

人工节点的模板&权限页设置办理该人工节点时,对用户展示数据使用的表单以及对表单数据的读写权限。

# 显示模板

用户办理该步骤时使用的表单模板,可以在主表单和所有视图中选择。

# 回顾模板

用户办理完该步骤后重新打开使用的表单,默认选在不支持,则使用显示模板,也可以在所有视图中选择,但不可以选择主表单。

# 打印模板

用户办理该步骤时或者办理后是否可以打印。打印模板可以在所有视图中选择,如果配置了,则该步骤支持打印,否则不支持。

# 办理后打印

配合打印模板使用。勾选此项时,用户仅在办理该步骤后才可以打印,否则在办理前就可以打印。

# Word模板

用户办理该步骤时是否可以导出表单。可以在所有上传的Word模板中选择,如果配置了,则该步骤支持导出,否则不支持。

# 只读导出

配合Word模板使用。勾选此项时,用户仅可以导出PDF格式文件,否则可以导出DOC格式文件。

# 字段级权限

此处设置表单数据中字段级别的访问权限,列出的字段根据显示模板中包含的字段而定,对不在显示模板的中的字段,无访问权限。访问权限见下表:

字段类型 权限 说明
字段 R 可以读取字段内容
字段 W 可以修改字段内容。写权限独立于读权限,即可以盲写。
重复结构 R 可以读取重复结构,如果重复结构不可读,则属于该重复结构的所有字段均不可读,字段上的权限设置被忽略。
重复结构 W 可以对重复结构中的数据行进行次序调整。
重复结构 I 可以向重复结构添加新的数据行。
重复结构 D 可以删除重复结构中已有的数据行。
重复结构 G 如果当前节点位于动态并行分支中,则对动态并行所绑定的重复结构的其他数据行是否可读(可见)。
不勾选表示不可读。无论是否勾选此项,对其他数据行总是不可写的。
  • 此权限设置仅仅影响用户通过界面办理时跨越信任边界时(如浏览器到系统后端是跨越了信任边界)对数据的权限处理,Messenger对表单数据的处理不受此限制,但是需特别注意,Messenger中的一些特殊事件是为前端浏览器界面提供数据,当办理提交时,这些数据跨越了信任边界。
  • 打开已办理的步骤,无论是否使用回顾模板,也受到此处的读权限控制,写权限对已办理步骤没有意义。
  • 打印模板、Word模板不受此处的读权限控制,任何出现在模板上的字段均可以读,写权限对打印模板、Word模板没有意义。

# 接收物品

人工节点的接收物品页设置该人工节点的办理是否代表对某个物品的接收。

如果是,选在一个物品类型的表单字段即可。物品接收是线上流程对线下场景的支持,对于接收物品的步骤,服务大厅提供了基于收件码的快捷办理通道。通过扫描收件码,可以快速定位待办任务并办理。接收物品的具体应用不在本说明书范围内。

# 抄送

人工节点的抄送页设置流程流转到该人工节点时抄送给哪些用户。

和执行权限一样,抄送人通过配置岗位和限定来实现,岗位和限定的具体设置将在岗位和限定中说明。
当流程流转到该节点时,通过执行权限设置获得执行权限的用户将在服务大厅的待办任务栏看到待办任务,被抄送的用户则可以在抄送任务栏看到抄送任务,打开抄送任务时,将以只读的模式通过显示模板打开流程,同时用户看到的表单数据也受到该节点数据权限的限制。抄送任务不可办理,仅区分未读和已读。打开抄送任务即表示已阅读。

# 通知

人工节点的通知页设置流程流转时发送的各类通知。

通知分为待办通知和办理通知。待办通知是指流程流转到人工节点后,给有权限办理的用户发送的通知,通知用户可以进入系统办理。办理通知则是指该人工节点办理后,给其他相关用户发出的内容自定义的通知。一个人工节点可以设置多个通知。
通知设置对话框如下图:

通知类型
选择待办通知/办理通知。

备注说明
对该通知的备注说明。

发送时间
通知的发送时间。仅待办通知可以设置,办理通知的发送时间固定为办理后即时发送。发送时间的本质是通过脚本计算出一个数值,代表从待办任务形成后到通知发送所间隔的最大分钟数。因此发送时间的其他3种选项实际上是辅助脚本的产生。

  • 即时 表示立即发送,即脚本返回0。
  • 延后 可通过设置一个数值和单位来设置通知发送应该在待办任务形成后的多少时间内。
  • 指定时间 可通过设置一个固定时间来指定通知发送的最晚时间。需要注意的是,工作日设置依赖校历,校历数据来自本系统以外。
  • 脚本 如果以上3种不能满足需求,可以通过直接编辑脚本来实现需要指定的最晚发送时间。

需要注意的是,此处指定的发送时间是待办通知的最晚发送时间,为了减少待办通知对用户的干扰,系统会对发往同一用户的待办通知进行合并。如果某一时刻同一用户有多个待办通知待发送,所有的待办任务将合并到首先到达的那个时限发送。而办理通知不存在合并。

发送渠道
选择通知发送的渠道。可用的渠道来源于系统的总体配置,可能有邮件、短信等。如果需要在多个渠道上发送通知,需要建立多个通知配置。

通知内容

待办通知和办理通知都可以指定通知内容,其中办理通知必须提供内容,而待办通知在不提供内容时将使用系统配置在发送渠道上的统一模板。

  • 格式
    指通知内容中的标题和内容采用何种方式进行表单数据替换。变量替换指采用${fieldName}方式对标题和内容进行替换,形成最终的文字。Freemarker指采用Freemarker模板语法进行替换,此时不但可以进行内容替换,也可以进行逻辑控制。
  • 标题
    通知为邮件时,邮件的标题。
  • 内容
    通知为邮件时,邮件的正文。通知为短信时,短信的正文。

注意,尽管通知为短信时不需要标题,但是标题仍不可为空。标题和内容任意一项计算结果为空,表示未指定通知内容。对于待办通知,将采用通知渠道指定的通知模板;对于办理通知,将不发送。基于对用户干扰最小化的原因,不建议对待办通知进行内容定制,内容定制的待办通知无法合并。

通知对象

设置通知发送给谁。仅办理通知可以设置通知对象,待办通知的通知对象由系统自动计算。可以通过步骤办理的经手人、表单内的变量或者直接指定常量的方式来添加多个通知对象。需要注意,通过变量或者常量指定时,需要明确变量或常量的内容是账号、邮箱还是手机,并且应该和通知的发送渠道匹配。如果是账号,可以发送邮件和短信通知;如果是邮箱则只能发送邮件;如果是手机则只能发送短信。

通知限制

通知限制仅对办理通知有效。通过通知限制,可以将一些人工节点的动作排除在通知以外。如,仅在审批通过时发送通知。注意界面中勾选的是不需要发送办理通知的动作。

重复发送

重复发送仅对待办通知有效。当待办通知初次发送后,如果对应待办任务在一定时间内未必办理,可以再次进行通知。这里设置通知发送的时机以及是否排除非工作日。
以上为通知设置的各项可配置内容,对通知设置的修改仅影响还未产生的待办任务。

# 时限

人工节点的时限设置流程流转至改节点后的办理超时时限和办理承诺时限。

时限设置的本质都是通过脚本计算返回一个数值,分别代表该流程流转到该节点后,到达办理超时时限和办理承诺时限的分钟数。通过设置按钮可以打开辅助设置界面来辅助脚本的产生:

设置的方法和通知发送时间类似,不再重复说明。重复频率和超过结果仅对办理超时时限有效,执行超时发生时,系统根据超过结果的设置进行处理:

忽略超时
系统触发步骤级的超时事件,通知Messenger,而不做其他干预操作。

终止流程
系统自动终止该流程实例

执行动作
选择该项后,可以继续选择该步骤的一个后续离开动作,超时发生时,系统将自动选择该动作继续流转。

# 办理历史

人工节点的办理历史设置该节点的办理历史的可见性。

流程办理流转过程中,所有人工节点的办理过程都会在表单数据展示时有所显示,下图显示了一个常规的办理历史。

以上办理历史显示了一共经过4个人工节点,每条办理历史都记录了以下要素:

要素 说明
办理用户 该步骤的实际办理人,如章思宇。
办理的任务 该步骤的名称,如归档用户报修申请。
办理的时间 该步骤办理的时间,如2020/04/03 21:40
备注 办理人留下的备注,如上图模糊处理的部分,可选
抄送用户 该步骤的抄送用户,如上图预处理报修申请有抄送。

通过办理历史的设置,可以对该步骤形成的办理历史以及其中的办理用户、备注、抄送用户这些要素的默认可见性进行控制,每项元素的可见性设置分为默认、公开和隐藏三项。公开表示总是可见,隐藏表示总是不可见,而默认对于抄送用户为管理员可见,对于其他要素则为登录用户可见。

默认可见性设置控制了该步骤形成的办理历史一般情况下的可见性,通过增加例外设置,还可以针对其他步骤的办理人设置本步骤办理历史的定制化可见性,如下图设置的在办理步骤3时,对办理的用户隐藏院系复核(step2)的办理历史,这样步骤3的办理人将无法知道曾经流转过院系复核(step2)。

# 会签

人工节点的会签设置该节点是否为会签节点以及会签结束的条件。

会签是一种特殊的人工节点,当有权限的执行用户有多个时,一般人工节点虽然可以多个用户看到,但是只有一个用户可以完成办理,并且办理后待办任务就会消失,其他用户无法再看到。而会签节点不同,它同样能被所有有权限的用户看到,任意用户办理后会触发会签结束脚本执行。当会签脚本返回false时,待办任务不会消失,其他用户可以继续办理;当会签脚本返回true时,待办任务在办理后消失,其他用户不在可以办理。
会签可用于将待办任务发送给大量用户办理,比如请所有学生投票,并采纳前1000位。当会签结束脚本执行时,系统将已完成的人数存放在预置变量finishedCount里供脚本使用。

# 自动节点属性

自动节点包含基本信息、运行脚本和节点图片3项设置页,其中基本信息和节点图片请参考节点公共属性

# 运行脚本

运行脚本是专属于自动节点的设置页:

该页用于配置流程运行到该节点时执行的脚本。关于脚本的说明,请参考脚本。一般来说自动节点在流程实现中使用较少,仅有两种场景下必须使用,并且用到的场景中通常不配置任何脚本。一种是流程的结束节点,另一种是当合并节点后需要连接并行节点时,流程执行的实现不允许它们直接相连,因此中间需要添加自动节点作为过渡。

# 子流程节点属性

子流程节点包含基本信息、字段权限、时限、办理历史和节点图片5项设置页,其中时限、办理历史和节点图片请参考节点公共属性

# 基本信息

和人工节点基本信息比较,子流程节点基本信息页去除了一些不必要的属性,但多出一个子流程代码的属性。

子流程代码的格式是entrance@workflowCode,其中entrance可指定子流程入口节点代码,workflowCode是子流程代码,入口节点代码是可选项,可以只填子流程代码。

子流程代码支持用变量填写。

# 字段权限

字段权限页和人工节点的模板&权限配置页类似,不过只保留了配置字段权限的部分。对于子流程节点,字段可读意味着数据可以从父流程带到子流程,字段可写意味着数据可以从子流程带回到父流程。正确配置字段权限后即可实现父子流程间同名字段的数据流转,如果字段不同名就需要在子流程上配置数据映射

# 判断节点属性

判断节点包含基本信息、判断脚本和节点图片3项设置页,其中基本信息和节点图片请参考节点公共属性

# 判断脚本

判断脚本是专属于判断节点的设置页:

不同于自动节点,判断脚本是判断节点必须配置的内容。关于脚本的说明,请参考脚本。判断脚本最终应返回一个字符串结果,内容必须是该判断节点所有离开动作的代码之一,否则当流程运行到该判断节点时会产生错误信息。

# 并行节点属性

并行节点包含基本信息、动态分支和节点图片3项设置页,其中基本信息和节点图片请参考节点公共属性

# 动态分支

动态分支是专属于并行节点的设置页

通常并行节点后有多个离开动作(以下称为并行分支),当流程运行到并行节点后,所有的并行分支都会继续同时执行,这种固化在流程图上的并行分支称为静态分支,即有多少并行分支是在流程设计时就确定的。和静态分支不同,通过将并行节点和表单中的重复数据结构绑定,并行节点将支持动态分支。流程运行到支持动态分支的并行节点后,继续同时运行的并行分支数量将为静态分支数量和当时表单数据中被绑定的重复数据结构中的数据条数的乘积。即系统将为重复数据结构中的每一条数据启动一组流程图上绘制的静态分支。

# 合并节点属性

合并节点包含基本信息、提前结束和节点图片3项设置页,其中基本信息和节点图片请参考节点公共属性

# 提前结束

提前结束是专属于结束节点的设置页

在提前结束页可以配置提前结束脚本,关于脚本的说明,请参考脚本。脚本最终应返回一个布尔结果,默认的脚本内容将返回false,表示不提前结束。由并行节点开始的任何一支并行分支运行到合并节点时,都会触发提前结束脚本运行,如果脚本返回为false,并且还存在其他并行分支未运行到合并节点,则流程不会通过合并节点继续运行。如果脚本返回true,则无论当前是否还存在其他并行分支未运行到合并节点,合并都会发生。合并发生时,还未运行到合并节点的分支将不再运行,如果存在等待执行的人工节点,对应的待办任务也将被删除。合并后,流程会沿合并节点后唯一的离开动作继续运行。