基础¶
基础概念¶
构建一个应用,通常会涉及到:表单、视图、流程、报表等核心构件。这些概念符合人们的**直觉思维**,所以很容易理解。我们花很短的时间就可以学习掌握。

表单¶
表单的作用¶
**表单**的作用是采集输入的数据并进行基本的校验、运算(通常叫表间计算)等。
表单的构成¶
表单**由**字段(单行文本、多行文本、下拉选择、日期等)、操作(也叫按钮,包括:保存、返回、打印等)两种元素构成。
字段¶
表单输入组件,目前**MyApps**支持30+种不同的组件,主要有三大类:
- 文本类:单行文本框、多行文本框等
- 选项类:下拉选择框、单选框、复选框、左右选择框等
- 弹窗类:部门选择框、视图选择框等
- 复杂类:地图组件、文件上传、拍照、二维码、录音等
操作¶
**操作**通常用来在表单输入或编辑完成后,需要通过**操作**触发动作进行下一步处理(如:录入数据后大触发保存动作)。
**操作**按触发行为的类型,包括:(保存、打印、返回、流程等)
操作**可以在**动作执行前、**动作执行后**时机,通过iScript(MyApps内置的宏语言,如不熟系可以先跳过,后面会讲到)进行额外的逻辑控制。从而实现基本操作类型的扩展,以满足复杂的业务要求。
包含类组件¶
**表单**中可以通过**包含组件**引入其它的平台元素(视图、表单等),如:选项卡、包含组件等。
注:**视图**的概念后面会介绍,如不清晰可以先跳过。
刷新&重计算¶
**刷新&重计算是**MyApps平台的一个重要概念。
- 刷新:当需要重新运算表单中组成元素的值(如:单价字段修改后总价自动计算)或显示效果(当没有填写手机号码时发送短信按钮置灰)时,可以通过触发刷新动作实现。
- 重计算:在接收到刷新事件后,对组件自身的值或显示效果进行重新运算并显示在表单上。
文档¶
表单是数据的模板,而由表单创建的数据本身(数据实例)我们称之为**文档**(Document)。所有针对数据的操作其实都是针对**文档**(Document)的操作。

视图¶
视图的作用¶
**视图**的作用是根据条件(输入或业务规则)查询数据,并展示出来。

视图的类型¶
**视图**根据展现的形式不同可以分为:
- 列表视图:查询结果以列表形式展示
- 树形视图:查询结果以树形式展示
- 甘特视图:查询结果以甘特图形式展示
- 地图视图:查询结果展示在地图上(需要提供地址或坐标列)
- 折叠视图:和列表视图类似,扩展了按字段分类折叠功能
- 日历视图:查询结构展示在日历上(需要提供日期列)
视图的构成¶
定义一个**视图**需要包括:查询表单(可选)、数据、列、**操作**几个部分。
查询表单¶
**查询表单**用来输入查询条件,是表单的一种,所有表单中的字段均可在查询表单中使用。定义视图时,可以启用查询表单或不启用。
数据¶
**数据**的功能是定义视图的数据来源。支持条件配置方式、SQL方式、DQL方式(Document Query Language,MyApps定义的领域查询语言),存储过程方式。和查询表单一起可以实现按条件查询。
列¶
视图**查询出来的结果数据通常按列表(或其它形式)展示,具体展示那些字段就需要定义**列。列**可以直接显示表单字段数据,也可以是一个**计算表达式,甚至可以是查询数据库表或其他系统接口获取的值。
操作¶
**视图**除了查询并展示数据以外,通常还需要对查询出来的数据进行操作,所以我们定义了**操作**功能。
**视图**中操作中包含了操作按钮和操作右键菜单两种形式。定义一个操作可以同时显示成操作按钮和操作菜单。
视图中的**操作**和表单中的**操作**一样,有基础操作类型的概念(新建、删除、导出等)。也可以通过**动作执行前**事件、**动作执行后**事件对基础类型进行扩展。
流程¶
流程的作用¶
在掌握了**表单**和**视图**后,已经可以构建出一些简单的管理类应用(进销存、设备管理等)。当用户是一个较大组织时,往往完成一个工作需要由几个岗位协作完成,并有审核逻辑,这时就需要用到**流程**。
流程的构成¶
**流程**通常由**节点**和**关系(线)**组成。一个完整的流程通常表现为:由关系串联起来的多个节点的集合。
节点¶
**节点**的存在是为了描述流程中的处理步骤。包含:
- 开始节点:流程启动的入口,表示流程从此开始。一个流程可以有多个开始节点。
- 结束节点:流程结束的出口,表示流程到此结束。一个流程可以有多个结束节点。
- 人工处理节点:表示该步骤中有人工进行处理。通常体现为需要到表单进行录入操作后手工触发提交动作到下一步节点。
- 网关节点:通常为一进多出,由网关进行判断具体的流程走向。
- 自动任务节点:表示该步骤由系统自动处理,完成任务后自动提交下一步节点。
- 子流程节点:表示引入一个子流程进行业务处理。
关系(线)¶
关系(线)**用来连接节点。可以通过**进入条件、**通过后执行**两个时机对功能进行拓展:
- 进入条件:决定是否可以通过本关系(线)进入到下一节点,在每次需要判断是否允许通过时都会执行(也就是说会多次执行)。通常返回布尔true或字符串空""为允许通过,返回布尔false或非空字符串为不允许通过。
- 通过后执行:当该关系(线)通过后触发。通常用来执行具体的业务处理,如:更新数据,发送体现邮件等。
子流程¶
**子流程**可以理解为流程的函数调用方式,一个子流程可以被多个主流程所调用。子流程可以分为:
- 单实例子流程:启动子流程后,只有一个实例,通常作用只是主流程的简单延续。
- 多实例子流程:启动子流程后,有多个实例,对应的业务场景类似于:毕业生统一申请毕业证书,但每个学生的毕业证书制作是单独处理(多实例)。
- 回调子流程:子流程在结束后,主流程才继续处理,在子流程处理过程中,主流程一直处于等待状态。
- 非回调子流程:主流程在触发子流程后,不再等待,直接进行下一个步骤。