Mendix介绍

一、Entity实体与Object实例

Entities实体 抽象的容器

Object实例 具体的一个真的物体

一个entity包含很多的Object

Entity: 课程 Name 价格 课时

Object: 语文 语文 100 20

数学 数学 110 30

英语 英语 70 10

Entity: 人 性别 身高 体重

Object: 张三 男 175 160

李四 男 180 150

二、MicroFlow 微流实现业务逻辑

--添加业务逻辑到App中,实现app对数据的自动处理

###1.Microflow 微流

实现app自动化

类似:if for case 子函数 function

Mendix: 建模、拖拽、图形化编程:实现自动化逻辑

2.何时使用微流

1.Change default behavior 扩展、修改默认操作

create button 按钮+输入判定 (新建course且课程收费必须在100-200块)

2.Business specific process 业务定制话流程/特别的计算公式:剩余预算=合同额-(实际费用+售前费用)

3.System integration 系统集成:数据库,Tc,web-service,人工智能算法

1)Mendix官方开发的一些Widget其实也是微流:

比如create button 其实也是个微流

Create button = 创建Object实例+展示一个界面show a age

用来解决标准的业务逻辑

2)Microflow微流解决客户定制化的业务逻辑action

Create button = 创建object实例+展示一个界面show a page +价格的判定

三、实践-微流使用

需求1:在课程列表添加一个按钮,点击这个按钮就可以选中这门课,为这门课安排培训事件

低代码开发平台应用架构图 低代码开发平台 mendix_低代码开发平台应用架构图


低代码开发平台应用架构图 低代码开发平台 mendix_低代码开发平台应用架构图_02


低代码开发平台应用架构图 低代码开发平台 mendix_低代码开发平台应用架构图_03


低代码开发平台应用架构图 低代码开发平台 mendix_javascript_04

需求2:通过培训的开始时间,以及这门课持续的时间,自动计算

思路:结束时间=课程开始时间+课程持续时间

低代码开发平台应用架构图 低代码开发平台 mendix_前端_05


低代码开发平台应用架构图 低代码开发平台 mendix_java_06


低代码开发平台应用架构图 低代码开发平台 mendix_javascript_07

低代码开发平台应用架构图 低代码开发平台 mendix_前端_08


低代码开发平台应用架构图 低代码开发平台 mendix_经验分享_09


低代码开发平台应用架构图 低代码开发平台 mendix_javascript_10


低代码开发平台应用架构图 低代码开发平台 mendix_前端_11

需求3.某次培训参加人数的总和

思路:当学员注册的时候,获取学员注册的课程,然后查找这个课程下所有注册学员的总数。

低代码开发平台应用架构图 低代码开发平台 mendix_低代码开发平台应用架构图_12


低代码开发平台应用架构图 低代码开发平台 mendix_经验分享_13

低代码开发平台应用架构图 低代码开发平台 mendix_经验分享_14


低代码开发平台应用架构图 低代码开发平台 mendix_前端_15


低代码开发平台应用架构图 低代码开发平台 mendix_前端_16

低代码开发平台应用架构图 低代码开发平台 mendix_经验分享_17

四、数据的有效性与一致性检验

数据校验

根据真实的业务逻辑,用户在输入数据的时候,在Mendix中去验证一个数据是否符合业务要求。

Mendix数据的信息、值保存在哪?

  • Attribute特征中,属性值
  • Association中:关联关系的值,也就是箭头的指向

在Domain Model中验证Attribute特征数据的有效性

###1.利用Validation Rules(这个名词,只能针对Domain Model中的Attribute数据校验)

六种验证规则

Required 必填,Unique 唯一,Equals =某个值,Range 范围,Regular express 正则表达式,

邮箱:^[A-Za-z0-9\u4e00-\u9fa5]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$

Maximum length 最大长度

2.在Microflow中验证Associations关联关系数据的有效性

例如:周四的数学课这个TrainingEvent,必须把它和课程、老师、上课地点关联在一起。

但这个关联关系的指向不能再Domain model中用Validation Rule做判断

这个时候我们就要利用微流中的Decision来做数据有效性 的判断

如何写Decision表达式:

也就是微流表达式

  • 调用一个Attribute值:$EntityName/AttributeName
    $TrainingEvent/StartDate != empty AND
  • 调用一个Association的指向(值):$EntityName/ModuleName.Association
    $TrainingEvent/MyFirstModule.TrainingEvent_Course != empty

低代码开发平台应用架构图 低代码开发平台 mendix_经验分享_18


低代码开发平台应用架构图 低代码开发平台 mendix_java_19


低代码开发平台应用架构图 低代码开发平台 mendix_java_20

3.数据的删除

在新建一个Association时,它就会要求我们设定删除方式

一共有三种删除方式:

举例:Registration和TrainingEvent

A. 当删除TrainingEvent时:

  1. 保留所有与它相关的注册信息
  1. 同时也删除所有与它相关的注册信息(Cascading Delete)
  2. 只有当TrainingEvent有关联任何注册信息,它才能被删除

选第三种方式!!!

B. 当删除Registration时:选第一种方式

Registration注册信息-----Trainee学习

1.删Registration时,Trainee不受影响,所以选第一种

2.删Trainee时,所有与他相关的注册都删了,选第二种方式

五、权限管理

一、Mendix权限管理概要

Mendix的权限管理在个地方实现

  • Project Security:设置app总体安全级别和配置总体权限
  • Module Security:设置具体的每个页面page,微流microflow,实体entity甚至特征attribute的读写权限

只需要通过点击配置实现!

三种安全级别

二、两种角色:User Roles与Module Roles

低代码开发平台应用架构图 低代码开发平台 mendix_javascript_21

我们要将Module Roles和User Roles链接在一起!

1)是将Module Roles赋值给User Roles

2)然后再将User Roles和我们终端用户的账号绑定

三、权限配置的基本步骤

低代码开发平台应用架构图 低代码开发平台 mendix_java_22


低代码开发平台应用架构图 低代码开发平台 mendix_javascript_23


低代码开发平台应用架构图 低代码开发平台 mendix_低代码开发平台应用架构图_24


低代码开发平台应用架构图 低代码开发平台 mendix_经验分享_25

低代码开发平台应用架构图 低代码开发平台 mendix_java_26


低代码开发平台应用架构图 低代码开发平台 mendix_经验分享_27

四、其他配置

低代码开发平台应用架构图 低代码开发平台 mendix_前端_28


低代码开发平台应用架构图 低代码开发平台 mendix_经验分享_29