快程业务构建平台开发教程>基础篇>第五章 表单配置

1.1     表单的定义

表单是实体的界面表现形式,每个实体的属性都对应一个与其类型相匹配的输入控件。同一个实体可以向不同的应用环境展示不同的表单界面,例如对同一工作流中不同角色的人其表单的表现形式是不同的,因此一个实体下面可以定义多个表单。

1.2     表单界面配置

表单的定义在实体定义下面,在实体节点下“实体表单”节点的右键菜单点击“新建实体表单”打开表单设计界面,如下图:

       实体表单的界面设计只需要将实体结构中相应的属性拖放到界面设计区,系统将自动根据属性的名称和类型创建标签控件和相应的输入控件,然后就可以在界面设计区中调整各控件的位置和大小。实体的名称和结构是根据表单所属的实体来确定的。在界面设计区中选中一个控件可以编辑该控件的属性,如果是实体属性的输入控件,则可以在控件属性的“控件”选项中选择输入控件的类型。

       可以将表单的“控件”节点下的各类控件也拖放到界面设计区,这里的控件包括输入控件和非输入控件,与实体属性对应的输入控件不同,这里的输入控件的行为需要通过脚本进行控制,关于脚本的使用将在“进阶篇”中进行说明。

       一个表单可以包含多个Tab页,默认只有一个,可以在“Tab页”节点中增加。

表单中各类控件的说明见下表:

控件类型

说明

Label

标签显示控件

TextInput

文本输入框

TextArea

多行文本输入框

Text

文本显示框

ComboBox

下拉列表,用于用户选择数据,只有当实体的属性设置了相应的字典表时有效。

Numeric

数字输入框

NumericStepper

数字输入框,带有上下调整按钮。

CheckBox

选择框

DateField

日期选择框

DateTimeEntry

日期和时间输入框

TimeEntry

时间输入框

RichTextEditor

富文本输入框

ImageField

图片选择框(对应类型为图片的实体属性)

MultiSelectBox

多项选择控件,只有当实体的属性设置了相应的字典表时有效。

AttachmentList

附件选择框(对应类型为附件的实体属性)

EntityField

实体选择框(对应类型为关联实体的实体属性)

PrincipalSelectField

注册用户选择框(对应类型为注册用户的实体属性)

HRule

水平分隔线

VRule

垂直分隔线

FieldSet

分组控件

 

1.3     表单状态配置

表单提供一种简单的方式实现对表单中各控件和数据的状态控制。控制的内容包括控件值(value)、是否可用(enabled)、是否必填(required)和当值发生变化时触发的自定义事件(updateEvent)等。表单状态可分为两级,下一级状态能够继承上一级状态的设置。

 

在每一级状态中,我们可以对实体属性进行多方面的状态控制,控制的内容除了updateEvent之外都可以是一个表达式,在表达式中有固定的值,如“true”,“false”等,也可以引用实体中的属性值,如“$this.name”表未的是实体中name属性的值。



表达式

    在表达式中可以包含 (+)、减()、乘(*)、除(/) 等算术运算符,也可以包含 (&&)、或(||)、非(!) 等逻辑运算符,表达式中的操作数可以是字面值,如123"name"等,也可以是一些引用,如$this等(表达式中的可用引用根据表达式所在运行环境确定),如果引用的结果是一个对象类型,则可以进一步引用该对象的属性,如$this.name表示引用的是$this中的name属性。在表达式中也可以使用函数,函数的参数可以是另一个表达式或字面值,函数分为全局函数和引用函数,在引用函数之前必须指定引用对象,如$this.test()

全局函数的定义如下:

函数定义

说明

now()

获取当前系统时间即服务器时间。

max(arg1, arg2, ...)

获取输入参数中的最大值,输入参数数量可以是多个。

min(arg1, arg2, ...)

获取输入参数中的最小值,输入参数数量可以是多个。

toFixed(num, precision = 2)

设置num数字的精度并获取其值,precision表示精度,默认为2。如toFixed(1.234, 2)的运算结果为1.23
注:toFixed函数默认按四舍五入法执行。

case( value, //检测值
check_1, //
比较值1
result_1, //
结果1
check_2, //
比较值2
result_2, //
结果2
...
check_n, //
比较值n
result_n, //
结果n
default //
默认值
)

按条件获取相应的值,value为用于比较的值,如果value==check_1则返回result_1,其他类推,如果所有条件都不满足,则返回默认值。

upcase(string)

string的大写形式,如upcase("test")的运算结果为"TEST"

upcaseRMB(money)

将金额数字转换成人民币大写形式,如upcaseRMB(102)的运算结果为"壹佰零贰圆整"

toEnglish(num)

将数字转换成英语形式,如toEnglish(102)的运算结果为"one hundred and two"

dateFormat(date, format)

格式化日期类型,如dateFormat(now(), "YYYY-MM-DD HH:MI:SS")的运算结果为"2008-05-04 17:22:34"
日期格式的定义为:
YYYY :
完整的4位年数,如2008
YY : 2
位年数,如08
MM
2位月份,如05
M
1位月份,如5
DD : 2
位日数,如04
D
1位日数,如4
HH
:小时数
MI
:分钟
SS
:秒数

eval(string)

string作为javascript脚本解释运行并获取运行结果的值。如eval("{id:1, name:'hello'}"),的结果是一个拥有idname属性的对象。在string中可以包含文本替换表达式,格式为${表达式}

 

配置“客户资料”表单

我们在客户实体下创建客户表单,将需要的实体属性拖放到表单中,设置备注控件的类型改为“RichTextEditor”,并作如下的排版:

在“客户”表单中,设置表单状态。点击界面“表单状态”选项,在状态结构中右击选择“添加”选项。

 

选中“状态”修改名称为“基础”,然后再“基础”状态下再新建两个状态分别为:“新建”和“编辑”。

 

       然后在根据“客户”表单设置名称、地址、联系电话和客户类型必填,并且设置工作流实例名称为不可编辑及自动获取“名称”字段属性值内容: