15.Java- BeX5框架

一、开发环境部署

本章要点:
 获取 BeX5 开发版
 准备数据库
 运行 BeX5 开发工具
 登录系统

1.1 获取 BeX5 开发版

  1. 从起步科技公司官网(https://www.justep.com/)下载 BeX5 企业快速开发平台,放到计算机
    的一个目录下(不要放到中文目录下)
  2. 从百度云下载链接: BeX5 开发版百度云下载链接,点击下载 提取码:0702

1.2 准备数据库

1.2.1 使用 BeX5 自带 MySQL 数据库

为了方便用户体验 BeX5 平台,BeX5 平台自带 MySQL 数据库。执行“启动 MySQL 数据
库.bat”即可启动 MySQL 数据库,使用数据库期间,不要关闭 MySQL 服务窗口。。
15.Java- BeX5框架_第1张图片

1.2.1 使用现有数据库

用户也可以使用自己现有的数据库。BeX5 平台支持 Oracle、SQL Server、Sybase、
DB2、MySQL 等五种数据库。通过执行“配置初始化其它数据库.bat”完成建表、初始化
数据及 Studio 中数据源配置等工作。

初始化过程如下:

  • 首先执行“配置初始化其它数据库.bat”。打开如下图的窗口,输入 a,按回车。
    15.Java- BeX5框架_第2张图片
  • 然后弹出数据源配置窗口,如下图所示。
    15.Java- BeX5框架_第3张图片
  • 首先配置系统(system)数据源,根据现有数据库类型进行相应的选择。当前选择mysql

BeX5 系统中默认使用系统(system)、演示(demo)、文档服务(doc)等三个数据源。
它们既可以连接不同的数据库,也可以连接相同的数据库。
如果使用同一个数据库,请选中下图中的复选框;
如果使用不同的数据库,请取消选中,点下一步继续配置其它两个数据源的详细信息

15.Java- BeX5框架_第4张图片

注:仅当本机已安装 Oracle 客户端时,才能选择 jdbc.oracle.oci。
BeX5 平台默认提供了 Oracle 10g 的 jdbc 驱动包 ojdbc14.jar,
如果安装了其它版本的 Oracle 客户端,请将 Oracle 提供的 jdbc驱动包复制到 BeX5\apache-tomcat\lib 目录下。

  • 选中初始化数据库,并在输入框中输入OK,则会执行新建表,插入数据等操作。
  • 无论是否初始化数据库,点完成时都会使用刚才的配置更新 Studio 中数据源的配置信息
    15.Java- BeX5框架_第5张图片
  • 点击完成,自动配置
    15.Java- BeX5框架_第6张图片

1.3 运行 BeX5 开发工具

1、 启动 studio

执行开发版中的“启动 BeX5 开发工具.bat”,即可打开 BeX5 Studio。
15.Java- BeX5框架_第7张图片

2、 启动 Tomcat

在 Studio 的工具条中,点击第一个猫形图标,启动 Tomcat,
当控制台最下面出现如“信息: Server startup in 3208 ms”这样的信息时,表示 Tomcat 启动成功。
15.Java- BeX5框架_第8张图片

1.4 登录系统

在浏览器地址栏中输入http://127.0.0.1:8080 进入登录界面,输入默认的用户名
system,密码 123456,登录后首页界面如下
15.Java- BeX5框架_第9张图片

注意: BeX5 平台支持的浏览器有 IE、edge、Chrome、Safari 和 FireFox。
其中 IE6、IE7、IE8、IE9 需要安装 Chrome Frame 插件。
BeX5 平台推荐使用的浏览器是 Chrome。
在浏览器地址栏中输入
http://127.0.0.1:8080/x5/UI2/portal/pc2/index.w 即可进入PC2 门户,体验另一种门户风格;
在浏览器地址栏中输入
http://127.0.0.1:8080/x5/UI2/portal/pc3/index.w 即可进入 PC3 门户,体验全新的门户风格

1.5 其它

1.5.1 在 Studio 中配置数据源

在 Studio 中,打开菜单“窗口”->“首选项”,在弹出的对话框中,打开“Studio
配置”->“数据源”,修改现有的业务服务数据源的配置信息,如下图所示:
15.Java- BeX5框架_第10张图片
数据源名称保持不变,可以选择另一种数据库类型。
输入数据库所在计算机的 IP,数据库实例名称、数据库名称、用户名、密码。
点击下面的“测试连接”按钮,对数据源进行测试,当弹出“数据源配置正确,连接测试成功!”的提示信息时,说明数据源配置正确,点击“提示”小窗口的“确定”按钮,再点击“数据源设置”的“确定”按
钮,再在“首选项”窗口中点击“应用”按钮。
15.Java- BeX5框架_第11张图片

1.5.2 在 Studio 中使用 SVN

SVN 是目前使用最广泛的版本管理软件,安装配置好 SVN 服务端后,在 SVN 中创建仓
库,名称可以取项目名称,在仓库下建三个文件夹,分别是 BIZ、UI2 和 Native,
如下图所示
在这里插入图片描述
在 Studio 中增加“SVN 资源库研究”视图。单击 Studio 右上角的“打开透视图”按钮,
弹出打开透视图对话框,选择“SVN 资源库研究”,如下图所示,单击“确定”按钮。
15.Java- BeX5框架_第12张图片
添加资源库位置。单击右上角的“SVN 资源库研究”按钮,进入 SVN 视图。在左侧的
“SVN 资源库”中单击鼠标右键弹出菜单,点击新建->资源库位置,如下图所示。
15.Java- BeX5框架_第13张图片
在弹出的“添加 SVN 资源库”的窗口中,输入已经建立好的 SVN 服务端路径,如下
图所示。
15.Java- BeX5框架_第14张图片
点完成按钮,可以看到 SVN 资源库中已经添加了一个资源库,这个资源库下面有三
个文件夹,将这三个文件夹分别检出。检出方法是:在资源库下面的文件夹 BIZ 上单击
鼠标右键弹出菜单,单击“检出为”,如下图所示15.Java- BeX5框架_第15张图片
在弹出的“从 SVN 检出”的窗口中,选择“做为工作空间中的项目检出”,如下图
所示
15.Java- BeX5框架_第16张图片
单击“下一步”按钮,取消“使用缺省工作空间”的勾选,点浏览按钮,选择 BeX5
中的 model 目录,如下图所示。
15.Java- BeX5框架_第17张图片
单击“完成”按钮,出现“确认覆盖”询问框。如下图所示。单击“确定”按钮
15.Java- BeX5框架_第18张图片
切换到 Studio 透视图,稍等一会儿,BIZ 文件夹右边出现[BIZ],如下图所示。说明
BIZ 文件夹检出成功,可以使用 SVN 进行版本管理了。
15.Java- BeX5框架_第19张图片
参照检出 BIZ 文件夹的方法,继续检出 UI2 和 Native 文件夹。都检出后,如下图所

15.Java- BeX5框架_第20张图片
在左侧的模型资源中用鼠标右键点任意文件夹或文件弹出菜单,在“小组”菜单中
就会出现 SVN 选项菜单,说明已连接 SVN 资源库,可以进行更新和提交了。

  • 提交
    15.Java- BeX5框架_第21张图片
  • 更新
    15.Java- BeX5框架_第22张图片

说明:在 Studio 中提交和更新不需要安装 SVN 客户端。

1.5.3 SVN 使用注意事项

1. Checkout(检出)

使用 Checkout 提取文件后,文件处于 SVN 版本控制中,之后才能更新和提交。
不要将处于 SVN 控制中的目录复制到另一 SVN 控制目录中,这样将会发生冲突,导致不能提
交。

2. Commit(提交)

把握 Commit 的频率,不能太频繁,每修改一个小小的地方就提交,则会产生很多版
本,而隔时间太久再提交,则其他相关人员不能及时获取你的改动,在提交时就容易造
成冲突,当然,要视团队的具体情况而定了。在多人协作时,尽量修改自己撰写的部分,
不要修改其他部分,这就要看团队协作的能力了。

3.Update(更新)

Update 对不同的人所做的修改会自动合并,如果无法自动合并则会发生冲突,需要
手工用文件比较工具进行合并,因此要注意经常更新自己的工作副本,以保证自己能够
获得最新的修改内容,降低发生冲突的可能性。

4. 模型资源中的 SVN 突然不能使用了

之前正常使用的 SVN,突然不能使用了,采用下面的步骤可以解决。首先添加 java
视图。做法是单击 Studio 右上角的“打开透视图”按钮,选择 java,单击“确定”按
钮。添加 java 视图。在包资源管理器中,在 BIZ、UI2 和 Native 目录上,单击鼠标右键,
在弹出的菜单中,单击关闭项目,再在 BIZ、UI2 和 Native 目录上,单击鼠标右键,在
弹出的菜单中,单击打开项目。切换回 Studio 视图,SVN 可以使用了。

二、建模过程介绍

本章要点:
 新建应用
 新建业务模块
 数据建模
 流程建模
 界面建模
 功能树配置
 分配权限
 运行系统
BeX5 通过数据建模、流程建模和界面建模来构建企业信息化。
本章以“客户信息维护”为例,来介绍 BeX5 的建模过程。
BeX5 的模型关系如下图所示:
15.Java- BeX5框架_第23张图片

2.1 新建应用

一个项目的开发,是从新建应用开始的。BeX5 平台中,“应用”相当于“项目”。

  1. 打开 Studio,在 Studio 的“模型资源视图”中,右键单击 BIZ 目录,选择“新 建”->“应用”,如下图所示
    15.Java- BeX5框架_第24张图片

  2. 在弹出的“新建应用”对话框中,写入应用名称,选择在数据源配置中配好的数
    据源。如下图所示:
    15.Java- BeX5框架_第25张图片

提示:在 Studio 中除了指明可以输入中文,一律要求输入英文。

  1. 应用名称和数据源配完后,点击上图中“完成”按钮,在 Studio 的模型资源视图中生成新应用的相关目录,BIZ 和 UI2 目录中,都生成了对应的应用目录。如
    下图所示:
    在这里插入图片描述

上图中,BIZ 目录下生成了数据库连接配置文件(db.config.m);
UI2 目录下生成了
配置目录(config)和应用配置文件(application.xml)、功能树配置文件(***.function.xml)和 widget 配置文件(***.widget.xml)。
提示:在BIZ中生成目录后,会相应的在UI2中生成同名目录。
保持BIZ和UI2目录相同是UIServer访问 BizServer 的转调依据

2.2 新建业务模块

一个项目通常会划分为多个子项目(或者说子系统),BeX5 平台中一个“业务模块”相当于项目中的一个“子项目”。如上图,“x5demo”就是一个应用。
在一个“应用”中,可以继续创建新的“业务模块”,按照以下步骤创建新“业务模块”:

  1. 在 BIZ 中新建的应用上单击鼠标右键,在弹出的快捷菜单中,选择“新 建”->“新建业务模块”,如下图所示:
    15.Java- BeX5框架_第26张图片
  2. 在弹出的对话框中,输入业务模块名称。如果业务模块的数据源和应用的相同,
    可以不选择数据源名称,如下图所示;否则选择数据源配置中已经配好的数据源。
    15.Java- BeX5框架_第27张图片
  3. 配置完新业务模块的名称和数据源后,点击上图中的“完成”按钮,生成新的业
    务模块,目录结构如下图所示:
    15.Java- BeX5框架_第28张图片

上图中,BIZ 目录下的x5Demo目录下的baseDemo目录下的
ontology 目录中存放的是概念数据模型文件;
data 目录中存放的是物理数据模型文件;
logic 目录存放的是业务逻辑文件,包括 Action 和 Fn 定义文件、Java 源码文件;
process 目录存放的是流程模型文件。

2.3 数据建模

创建完新应用和业务模块后,就可以在应用中进行建模了。
整个建模过程分为三个步骤,
分别是:数据建模、流程建模和界面建模。
其中,数据建模实现概念与数据库交互,完成数据存取。
数据建模包括概念数据建模和物理数据建模两部分。

2.3.1 概念数据建模

概念数据建模起到了屏蔽物理数据库之间差异的作用。

概念数据建模,包括创建本体、创建概念、创建关系。
所谓“本体”(ontology)可以理解成是对对象的抽象的集合。
“本体”中又包含“概念”和“关系”。其中,
“概念”可以理解成是对单个或者一类对象的抽象;
“关系”可以理解成是对对象属性的抽象。
在代码级别,“本体”可以看成是对数据库表的集合的抽象,“概念”可以看成是对数据库表的抽象,“关系”可以看成是对表字段的抽象。

2.3.1.1 新建本体

  1. 本体创建在“模型资源视图”的 BIZ 中的某个应用的下的业务模块下的 ontology目录下。 本例中,
    “x5demo/baseDemo/ontology”目录上,右键单击,选择“新 建”->“Ontology 文件”,如下图所示:
    15.Java- BeX5框架_第29张图片
  2. 在弹出的对话框中输入本体文件名称,单击“完成”钮。如下图所示:
    15.Java- BeX5框架_第30张图片
  3. 生成的本体文件默认通过本体设计器进行维护,界面如下:
    15.Java- BeX5框架_第31张图片

2.3.1.2 新建概念

在本体base.ontology.m设计器中,单击左上角的“添加概念”按钮,在概念主信息中编辑概念信息,然后保存。如下图所示:
15.Java- BeX5框架_第32张图片
注意 新建概念时,需注意以下几点:

  1. 修改概念标识时,须先在左侧“概念”目录下,选中该概念;修改后,点击其它输入框,左侧概念标识就变成修改后的标识。
  2. 概念标识不能用中文及其它特殊字符,建议使用前缀加驼峰式写法,长度不要超过 23 个字符。
  3. 生成主键默认值的表达式是 guid(),该表达式在其它地方也可以用。
  4. 概念名称可以输入中文

2.3.1.3 新建关系

概念创建完成后,为概念创建关系。为概念创建关系有两种方式:添加新关系和从已定义关系中选择

1. 新增关系

在本体设计器中,选中一个概念,在“概念关系设置”中,单击“添加新关系”按钮,新增关系。如下图所示
15.Java- BeX5框架_第33张图片

在弹出的“新建关系”对话框中,输入关系名称、关系标识、选择关系类型,最后单击“确定”按钮,就创建了一个新关系。如下图所示:可以为概念创建若干个关系。
15.Java- BeX5框架_第34张图片
注意 新建关系时,需注意以下几点:

  1. 关系标识不能用中文及其它特殊字符,建议使用 f 加驼峰式写法,长度不要超过 30 个字符。
  2. 在同一应用中,关系标识不能重复。
  3. 关系名称可以输入中文
2. 从已定义关系中选择

如果要新建的关系标识和已有的关系标识相同,则可以从已定义的关系中选择该关系。如下图所示
15.Java- BeX5框架_第35张图片
单击“概念关系设置”中的“从已定义关系中选择”按钮,弹出“选择关系”对话
框,选择需要的关系。如下图所示:
在这里插入图片描述
按照以上步骤,创建应用中需要的本体、概念和关系,单击保存按钮,就完成了概念数据建模。

2.3.2 物理数据建模

概念数据建模完成后,接下来要进行的是物理数据建模。
物理数据建模包括映射设置、生成物理表和标准动作设置三部分。
物理数据建模就是在概念和物理数据库之间建立映射关系。

2.3.2.1 映射设置

映射设置就是要把概念数据建模中创建的概念和关系跟物理表建立起联系。
如果概念标识和表名相同,关系标识和字段名相同,可以省略这一步,直接生成数据库表。
在本体设计器中,切换到“映射设置”页。如果概念标识与表名不同,则修改表映射中的表名;
如果关系标识和字段名不同,则在字段映射中,单击“添加字段映射”按 钮,弹出“选择关系”窗口。如下所示:
15.Java- BeX5框架_第36张图片
在弹出的“选择关系”对话框中,选择要进行映射的关系。当关系标识与生成的字段名称不一致时,需要进行映射。如果不选,默认关系标识与生成的物理表字段名称一致。如下图所示:
15.Java- BeX5框架_第37张图片
单击“保存”按钮,返回映射设置,在字段映射中修改字段名,映射设置完成。
15.Java- BeX5框架_第38张图片

2.3.2.2 生成物理表

  1. 在本体设计器中,单击“生成数据库表”按钮,如下图所示:
    15.Java- BeX5框架_第39张图片
  2. 弹出“创建物理表向导”窗口,在左侧选中要创建的表,移到右侧。如下图所示:
    15.Java- BeX5框架_第40张图片
  3. 单击“下一步”按钮,进入“表详细信息”界面,如下图所示:
    15.Java- BeX5框架_第41张图片

提示:如果这里显示的字段不全,是因为概念主信息没有保存

  1. 单击“下一步”按钮,进入“建表方式和选项”界面,如下图所示:
    15.Java- BeX5框架_第42张图片
  2. 单击“下一步”按钮,进入“更新数据库”界面,如下图所示:
    15.Java- BeX5框架_第43张图片
    单击“完成”按钮,就完成了物理表的生成。可以到数据库中,查看生成的物理表。

2.3.3 标准动作设置

BeX5 平台中的 Action 描述了一个动作或者一个业务逻辑。
通常每个概念都拥有创建数据、保存数据、查询数据这三个动作,这些动作就称为标准动作。
其中,保存、查询这两个动作实现了概念跟数据库之间的数据交互。
生成物理表后,进行“标准动作设置”。

在本体设计器的“标准动作设置”界面中,单击“添加”按钮,如下图所示
15.Java- BeX5框架_第44张图片

弹出“创建标准动作”对话框,单击“确定”按钮,就完成了“标准动作设置”,如下图所示
15.Java- BeX5框架_第45张图片
至此,完成物理数据建模。

2.4 流程建模

整个建模过程分为三个步骤,分别是:数据建模、流程建模和界面建模。
其中,流程建模实现了业务流程和业务逻辑

数据建模完成后,进行流程建模。
流程建模需要创建 Process 文件,并设置相关属性。
流程建模根据具体的功能又可分为有流程的流程建模(工作流业务)和非流程的流程建模(普通的数据增删改查的功能)。
本章只介绍非流程的流程建模,有流程的流程建模在“4.1 简单流程”一节中再做详细说明。
非流程的流程建模,包括创建 Process 文件和动作设置两部分。

2.4.1 创建 Process 文件

流程文件创建在 BIZ 中的 process 目录下。本例中,在“模型资源视图”的 BIZ 目录中,
右键单击“x5demo/baseDemo/process”目录,选择“新建”->“Process 文件”,
如下图所示:
15.Java- BeX5框架_第46张图片

在弹出的“新建 process 文件”对话框中,输入功能目录和 process 名称,功能目录不能输入中文,如下图所示
15.Java- BeX5框架_第47张图片

提示:显示名称可以输入中文

单击“完成”按钮,就生成了 Process 文件。新建的 Process 文件在应用中的目录
结构如下图所示
15.Java- BeX5框架_第48张图片
Process 文件生成后,在 UI2 模型目录中,也生成了相应的 process 功能目录。

2.4.2 动作设置

流程文件创建完成后,需要为其进行动作设置。
动作设置就是添加标准动作和其它运行时需要用到的 Action。
在流程设计器左侧,单击“动作设置”后面的小按钮,如下图所示:
15.Java- BeX5框架_第49张图片
在弹出的“动作设置”窗口中,单击左上角的“增加”按钮,弹出“请选择动作”窗口,选择需要的动作。如下图所示:
15.Java- BeX5框架_第50张图片
选完动作后,依次单击“确定”按钮,就完成了动作设置。同时,也意味着流程建模完成了。流程建模完成后,应用 BIZ 层的开发也就完成了。

2.5 界面建模

整个建模过程分为三个步骤,分别是:数据建模、流程建模和界面建模。
其中,界面建模实现了人机交互、数据展现、界面逻辑等功能。
流程建模结束后,也就完成了后端服务的开发,接下来进入前端页面的开发,即界面建模。
界面建模可以使用平台提供的界面建模向导生成界面文件,也可以新建一个空白界面文件,使用平台提供的 UI 设计器手动开发界面文件。
界面展现文件的后缀是.w,界面文件创建在“模型资源视图”的 UI2 目录中的 process目录下。本节中使用平台提供的界面建模向导生成界面文件。按照以下步骤进行界面建模:

1. 新建.w 文件

本例中,在“模型资源视图”的 UI2 模型目录中,右键单击“x5demo/baseDemo/process/customInfo”目录,选择“新建”->“W 文件”,如下图所示:
15.Java- BeX5框架_第51张图片

2. 选择模板

在弹出的“新建 W 向导”对话框中,“移动”下面的模板是适合手机的模板,“桌 面”下面的模板是适合 PC 的模板。
现在要开发 PC 界面,因此选择“桌面-列表/详细-单表-列表+详细(标签页)”,单击“下一步”按钮。如下图所示:
15.Java- BeX5框架_第52张图片

3. 配置主数据

在“模板配置”界面中,选择主数据,单击“概念(concept)”后面的”选择”按钮,在弹出的对话框中选择界面上要访问的概念,
15.Java- BeX5框架_第53张图片
如果将概念中的关系全取到界面上,则不需要设置“关系(columns)”;
如果只取概念中的某些关系,则需要单击“关系(columns)”后面的”选择”按钮,在弹出的对话框中选择需要的关系,version 关系一定要选上,单击“确定”按钮。如下图所示:
15.Java- BeX5框架_第54张图片

4. 配置列表视图

在“列表视图”中,添加列表中显示的列。
单击“新增”按钮,在弹出的对话框中,选择要显示的列,version 关系不必选,单击“确定”按钮,如下图所示:
15.Java- BeX5框架_第55张图片

5. 配置详细视图

在 “详细视图”中,添加详细页中显示的数据项。
单击“添加关系”按钮,在弹出的对话框中,选择要显示的数据项,version 不必选,单击“确定”按钮,关闭对话框。
最后,单击“完成”按钮,完成界面建模。如下图所示:
15.Java- BeX5框架_第56张图片
生成的界面文件如下图所示
15.Java- BeX5框架_第57张图片
至此,界面建模完成。同时,整个开发的建模过程也就完成了

2.6 功能树配置

开发完成后,接下来,进行功能树配置,就是把刚刚完成的功能添加到功能树中。功能树用来进行权限分配和生成功能菜单。按照以下步骤进行功能树配置:

1. 打开功能树配置文件

. 在新建应用的时候,功能树配置文件***.function.xml 就已经生成,如下图所示,双击打开文件。
15.Java- BeX5框架_第58张图片

2. 配置顶层菜单目录

单击“添加顶层菜单目录”按钮,系统在菜单项名称中生成一行顶级菜单目录,点 击可修改菜单项名称,如下图所示:
15.Java- BeX5框架_第59张图片

3. 配置菜单目录或菜单

选中一个菜单目录,可以添加子菜单目录或者修改目录名称,也可以添加功能菜单项或者修改功能菜单项名称。
本例添加功能菜单项,选择“X5 培训演示”目录,单击“添加功能菜单项”按钮,弹出“选择目录”对话框,选择一个功能目录,如下图所示。
15.Java- BeX5框架_第60张图片
选择功能目录后单击“确定”按钮,系统将 process 中定义的 activity 都加到功能树中,如下图所示
15.Java- BeX5框架_第61张图片

注意:在此处也可以直接添加子菜单目录,输入新建的子菜单目录文件名。

最后,单击“保存”按钮,就完成了功能树

2.7 分配权限

完成功能树配置后,接下来进行权限分配。启动 Tomcat,登录系统后,按照以下步骤分配权限:

1. 进入角色管理功能

点击功能树中,“组织权限”->“角色管理”,进入角色管理功能,如下图所示:
15.Java- BeX5框架_第62张图片

2. 给角色分配功能

打开“角色管理”界面,选中一个角色,也可以新建一个角色,点右侧的“分配功 能权限”菜单。如下图所示:
15.Java- BeX5框架_第63张图片
在弹出的“选择功能”对话框中,选择新建的功能,单击“确定”按钮。如下图所示
15.Java- BeX5框架_第64张图片

3. 给组织单元分配角色

点击功能树中,“组织权限”->“按组织授权”,进入授权管理功能,在左侧的组织树上,选中所要授权的组织单元(可以是机构、部门、岗位、人员),单击右侧的“分 配角色”按钮,如下图所示:
15.Java- BeX5框架_第65张图片
在弹出的选择角色的对话框中,勾选相应的角色,单击“确定”按钮。如下图所示。角色就分配给选择的组织单元了,即组织单元拥有角色里面的功能权限了。
15.Java- BeX5框架_第66张图片
至此,完成权限分配。重新登录,就可以在功能树中看到新分配的功能菜单

2.8 运行系统

分配权限后,重新登录就可以运行系统,查看功能了。运行系统请参见“1.4 登录系统”一节。运行效果如下图所示
15.Java- BeX5框架_第67张图片

三、数据建模

本章要点:
 概念数据建模
 物理数据建模
 反向生成本体
 标准动作设置
整个建模过程分为三个步骤,分别是:数据建模、流程建模和界面建模。
其中,数据建模实现概念与数据库交互,完成数据存取。
建模包括概念数据建模和物理数据建模两部分。
概念数据建模起到了屏蔽物理数据库之间的差异的作用,概念数据建模,包括创建概念、创建关系;
物理数据建模就是在概念和物理数据库之间建立映射关系,物理数据建模包括映射设置、生成物理表和标准动作设置三部分。
数据模型示意图如下:
15.Java- BeX5框架_第68张图片

3.1 概念数据建模

概念数据建模起到了屏蔽物理数据库之间的差异的作用,概念数据建模,包括创建概念、创建关系

3.1.1 概念

“概念”可以理解成是对单个或者一类对象的抽象,也可以简单看成是对数据库表的抽象。第二章“2.3.1.2 新建概念”一节 ,讲解了如何创建概念;本节中,补充讲解“2.3.1.2 新建概念”一节中没有讲到的“概念”相关的知识点,包括主键默认值、包含引用。

1. 主键默认值

BeX5 平台中,每个概念都有主键默认值,并且主键默认值必须唯一,不能为空。
新建一个概念时,会默认添加“guid()”表达式函数作为概念的主键默认值,但并不只有“guid()”这一个表达式函数可以作为主键默认值,其它的表达式函数或者编写一个表达式,都可以作为主键的默认值。
比如以当前日期时间作为主键默认值:toString(currentDateTime())。

2. 包含引用

BeX5 中“包含引用”就是在当前的业务模块中,引用其它业务模块中的资源,包括:概念、关系、函数(Fn)、动作(Action)等。
包含指的就是 INCLUDE;引用指的就是USE。常用的是“引用(USE)”。
在本体设计器中,单击下方的“包含/引用”页签,在该页签中,在“引用”编辑框中,单击“添加”按钮,在弹出的“选择模型”窗口中,选择一个模型资源目录。
如下图所示,单击“确定”按钮,该模型资源目录就被引入到了当前的文件所在的模型中。
例如:
 引用系统的概念,需要选择“/system/ontology”;
 引用系统的 Action,需要选择“/system/logic/action”;
 引用系统的 Fn,需要选择“/system/logic/fn”。
15.Java- BeX5框架_第69张图片
最常用的两种模块引用
 ksql 里面需要 join 其它模块下的概念——打开本模块 data 目录中的model.config.xml 文件,include 其它模块的 data 目录
 引用其它模块下的 action——打开本模块 process 目录中的 model.config.xml 文
件,use 其它模块的 logic/action 目录

3.1.2 关系

BeX5 中“关系”可以是对对象属性的抽象,“关系”可以简单看成是对表字段的抽象。
第二章“2.3.1.3 新建关系”一节,讲解了如何创建关系;
本节中,讲解关系相关知识点,包括:version 关系、关系默认值。

1、 version 关系

  • BeX5 中,新建一个概念时,都会默认创建一个 “version”关系。
  • version 关系的作用是防止在并发时,多个人对同一条数据记录进行修改操作,也就是所谓的“乐观锁”。
  • BeX5 平台自动对 version 关系进行了维护,开发者不必维护该关系,在界面模型中的bizData 组件的 updateModel 属性,应该选择 whereVersion,表示使用 version 字段进行更新验证;
  • version 关系也可以不要,如果没有 version 关系,在界面模型中的 bizData组件的 updateModel 属性,要选择 whereAll,表示使用全部字段进行更新验证。
  • bizData组件可参见“5.1.1.2 业务数据组件”一节。

2、 关系默认值

  • 有些功能需要新增记录时关系就有默认值,这就需要在数据建模过程中创建关系的时候,为关系设置默认值,也相当于给数据库表中某个字段设置默认值,如 version 的默认值为 0。
  • 关系默认值设置方式有两种:设置常量和设置表达式
     使用常量作为关系默认值
    在关系的“默认值”处,直接输入常量默认值。如下图所示:
    15.Java- BeX5框架_第70张图片

注意:默认值中,字符串常量用单引号引起来。

 使用表达式作为关系默认值
在关系的“默认值”处,点击一下,出现一个小按钮,单击该按钮,弹出“表达式
编辑器”对话框。如下图所示:
15.Java- BeX5框架_第71张图片
在“表达式编辑器”对话框中,选择适当的表达式,如下图所示;也可以进行表达式嵌套
15.Java- BeX5框架_第72张图片

关系默认值的数据类型要和关系的类型保持一致。这里介绍一些用作关系默认值的
常用表达式:
1) 获取流水号作为关系默认值,可以使用表达式编辑器中“数据函数”目录下的几个表达式:
	 流水号---案例: nextSeq('20101010'),返回 1 
	 流水号字符串---案例: nextSeqString('ORDER', '000'),返回 ORDER001
	 不占位流水号字符串---案例:tempNextSeqString('ORDER','000')
2) 获取日期或时间作为关系默认值,可以使用表达式编辑器中“通用函数”目录下的几个表达式:
	 当前日期时间---currentDateTime()
	 当前日期---currentDate()
	 当前时间---currentTime()
3) 获取组织机构相关信息作为关系默认值,可以使用表达式编辑器中“组织函数”目录下的几个表达式:
	 当前人的 ID---currentPersonID()
	 当前人员成员的 ID---currentPersonMemberID()
	 当前人的 Name---currentPersonName()
	 当前组织 ID---currentOrgID()
	 当前部门 ID---currentDeptID()
	 当前岗位 ID---currentPosID()
以上只是介绍了几个常用的表达式函数,更多的表达式函数请参考 API 文档。
表达式具体用法请参见请参见“4.4 函数 Fn”一节。
如果平台提供的表达式函数不能满足需求,还可以自定义表达式函数,如何自定义表达式函数请参见“4.4.3 自定义函数”一节

3.2 物理数据建模

物理数据建模就是在概念和物理数据库之间建立映射关系

3.2.1 映射设置

为什么要进行映射设置?

	1. 在通常的开发中,后台程序往往都是直接访问数据库且直接操作数据库,这种方式虽然在开发的过程中,比较直接、简洁,
但是这种方式的弊端对整个项目带来的危害也是很大的,具体体现在当数据库中的表或者字段变更了以后,
开发的程序中所有与之相关的地方都要进行修改,这就增大了开发的复杂度,降低了开发出来的系统的稳定性。
	2. BeX5 中数据建模这一部分,完成了一件很重要的事情,就是在模型中的概念和物理数据库之间建立起了映射,
并且这种映射是可配置的。使用 BeX5 进行项目开发,后台程序在进行数据处理时,操作的主要是概念,而不是物理数据库,
这就避免了上面提到的通常开发遇到的数据库变更引发的问题。也就是说,如果数据库中的表或者字段发生了变化,
在 BeX5 中只需要对映射文件进行配置就可以了,不必深入到程序中去修改。
这种做法,也使 BeX5 具有了跨越不同数据库的能力。
	3. 映射设置就是要把数据建模中创建的概念和关系跟物理表建立起映射联系。在概念
标识和表名不同,关系标识与字段名不同,主键不叫 fID 等情况下,都需要进行映射设置。
	4. 在映射设置中,还有一个比较有用的设置,就是鉴别器设置。鉴别器的作用就是在概念级别起到过滤的作用。
 鉴别器设置也很简单,在映射设置界面的表映射中,有“鉴别列”和“鉴别值”两个输入框,
分别输入要进行过滤的字段名和过滤条件值就可以了。

如下图所示:
15.Java- BeX5框架_第73张图片

注意:如果在鉴别器设置中,设置了某个关系作为鉴别器列的情况下,作为鉴别器列的这个关系不能再次出现在概念的关系定义中。

3.2.2 生成物理表

生成物理表就是把概念数据建模中创建的概念和关系,在数据库中生成具体的物理表。具体操作参见“2.3.2.2 生成物理表”一节 。

3.3 反向生成本体

第二章“2.3.2.2 生成物理表”一节,讲解了如何把一个概念生成一个对应物理表,可以看成是一种正向的操作;反向生成本体,指的就是由物理表生成一个对应的概念和关系。具体操作如下

  1. 先在数据库中创建一个物理表。本例中使用的已有物理表:DEMO_PRODUCT
  2. 打开要进行反向生成本体的 ontology 文件。本例中,使用第二章中创建的本体文件“x5demo/baseDemo/ontology/base.ontology.m”。:
  3. 单击本体设计器右上角的“反向生成本体”按钮,弹出“反向生成本体”窗口,
    如下图所示:选择名称为 system 的数据源,system 数据源包含要用来反向生成
    本体的数据表;
    15.Java- BeX5框架_第74张图片
  4. 在上图中,单击“选择表”按钮,弹出“选择表”窗口,选择要反向生成本体的表,可以选择多个表,单击“确定”按钮。如下图所示:
    15.Java- BeX5框架_第75张图片
  5. 选完表后,在“映射配置”界面中,先单击“添加概念”按钮,生成一个概念标识,再单击“添加关系”按钮,弹出“选择映射字段”窗口,选中需要添加为关系的字段,本例中全选。如下图所示:
    15.Java- BeX5框架_第76张图片
  6. 单击“确定”按钮将字段添加为关系,如下图所示:
    15.Java- BeX5框架_第77张图片
    最后,单击“完成”按钮。本体文件中生成新的概念和关系。如下图所示:
    15.Java- BeX5框架_第78张图片

提示:目前支持 Oracle 和 MySQL 数据库表和字段的注释信息导入为概念名称和关系名称。
如果没有在 Oracle 中添加注释或者使用的是 SQL Server 数据库,在反向生成本体后,需要手工编辑
概念中文名称和关系中文名称

3.4 标准动作设置

BeX5 平台中的 Action 描述了一个动作或者一个业务逻辑。
每个概念都拥有创建数据、保存数据、查询数据这三个动作,这些动作就称为标准动作。
其中,保存、查询这两个动作实现了概念跟数据库之间的数据交互。

3.4.1 标准动作介绍

  • 每个概念都可以有三个对应的标准动作,分别是:queryXxxxAction、saveXxxxAction、createXxxxAction。
  • 其中,queryXxxxAction 封装了读取数据的业务逻辑,实现了从数据表中读取数据并封装成 table 对象的功能,使用 KSQL 实现跨数据库能力;
  • saveXxxxAction 封装了修改数据的业务逻辑,实现了将 table 对象中的内容通过增删改的方式更新数据库的功能
  • createXxxxAction 封装了新建概念数据的业务逻辑,实现了产生一条或多条空数据并封装成 table 对象的功能。标准动作设置如下图所示:

15.Java- BeX5框架_第79张图片

说明      标准 Action 参数的属性说明
范围——public 公共参数,可以接受前台传入的值
protected 保护参数,表示可以在 process 中 has-action 时赋值
private 私有参数,表示只能在 action 声明时赋值
permission 权限参数,表示只能在角色管理中设置参数值
必须——该参数必须赋值

下表列出了查询动作的参数说明。
查询动作中使用的是 KSQL,不是 SQL,KSQL 和 SQL语法基本相同,区别是 KSQL 访问概念和关系,SQL 访问数据库表和字段。
KSQL 和 SQL 对于主键列的写法,有着很大的区别,在 KSQL 中使用概念标识作为主键列名,SQL 中直接使用主键列名
15.Java- BeX5框架_第80张图片
下表列出了保存动作的参数说明。
15.Java- BeX5框架_第81张图片
下表列出了新增动作的参数说明。
15.Java- BeX5框架_第82张图片

3.4.2 KSQL 介绍

KSQL 是 Knowlog Structured Query Language 的简称。
KSQL 是一个语法上靠近 SQL-92的概念数据操作语言。
BeX5 中的 KSQL 是专门用来在 BeX5 中操作概念(Concept)和关系(Relation)的查询语言。
更多的介绍请参见 BeX5 提供的 API 文档中 KSQL 部分。

3.4.3 KSQL 查询编辑器

标准动作的参数值是可以编辑的。
单击参数中的“值”处的输入框,会出现一个小按钮,单击参数 select、from、condition、orderBy 后面的按钮,会弹出“KSQL 查询编辑器”窗口。如下图所示
15.Java- BeX5框架_第83张图片
15.Java- BeX5框架_第84张图片
“KSQL 查询编辑器”是通过选择概念、关系、函数的方式生成 KSQL 语句的工具,
里面包含中有四个页签,分别是“Select”、“Where”、“Order”、“Group”页签。
这四个页签的作用就是分别完成一个 KSQL 查询语句的 Select、Where、Order、Group 的部分

1、 Select 页签

单击“添加关系”按钮,弹出“请选择需要查询的关系”窗口,在该窗口中,可以从现有的概念中选择添加要查询的关系,如果要添加某个概念下的所有关系,就选择该概念下的“*”号。如下图所示
15.Java- BeX5框架_第85张图片
如果要从两个概念中取数据,除了选择两个概念中的关系外,还需要设置两个概念之间的关联条件。如下图所示
15.Java- BeX5框架_第86张图片
单击 on 列中的小按钮,弹出“请配置关联条件(on)”对话框,如下图所示。
15.Java- BeX5框架_第87张图片

在可选关系中列出了,已经选择的概念和它们拥有的关系。
在此设置两个概念之间的关联条件,
例如:用品表的用品类型 ID 等于用品类型表的主键(主键用概念名表示)。

2、 Where 页签

可以编辑查询条件,可以使用常量、变量、内存函数、KSQL 函数。如下图所示:
15.Java- BeX5框架_第88张图片
使用常量——方法同在 SQL 中使用常量。
使用变量——变量名前加冒号,在 bizData 组件的查询前准备参数事件onRefreshCreateParam 中通过 variables 参数给变量赋值。
使用内存函数——内存函数名前加冒号,后加一对小括号,表达式编辑器中的函数都是内存函数。
如果使用的不是系统函数,需要给 fnModal 参数赋值函数的路径。
内存函数不能作用于列,因为 KSQL 是先计算内存函数,将函数结果拼入 KSQL,再根据数据库类型翻译成相应的 SQL 发送给数据库去执行。
使用 KSQL 函数——KSQL 函数可以作用于列。
在将 KSQL 转换成 SQL 的过程中,将 KSQL函数根据不同的数据库类型,转换成不同的数据库函数。

3、 Order 页签

可以编辑排序条件,如下图所示:
15.Java- BeX5框架_第89张图片

4、 Group 页签

可以编辑分组条件,可以设置 having 子句,如下图所示:
15.Java- BeX5框架_第90张图片

注意 标准动作queryAction不允许使用Group,因此即使设置了Group,也不会存入queryAction。
报表使用的 kSQLQueryAction 允许使用 Group,如果设置了 group by,要给 select 语句中的非 group by 关系加聚合函数,例如 sum(),否则执行动作出错。

四、流程建模

本章要点:
 简单流程
 流程规则
 流程事件
 函数 Fn
 动作 Action
 Java 开发

  1. 整个建模过程分为三个步骤,分别是:数据建模、流程建模和界面建模。
    其中,流程建模实现了业务流程和业务逻辑。
    流程建模是整个建模过程中非常关键的一个步骤,在这里可以通过流程图实现业务流程,通过 Action 实现前后台交互,通过 Java 扩展来实现特殊的业务逻辑。
  2. BeX5 中的流程建模从具体功能上可以分为带有流程功能的流程建模和非流程功能的流程建模。
    这两种流程建模实际上是统一的,区别在于带有流程功能的流程建模需要画流程图,而非流程功能的流程建模不需要画流程图。
    在实际的开发中,非流程的流程模型,只要追加上流程图,就可以变为流程的流程模型,这也正是 BeX5 的强大之处一个体现
  3. 在流程建模中,首先需要创建 process 文件,在 process 文件中,可以设置 Action,添加 process 的事件,画流程图、设置流程环节的属性、规则、事件等。
    添加 porcess的事件或者环节的事件时,会生成相应的 procedure 文件和 Java 文件。流程模型示意图如下

15.Java- BeX5框架_第91张图片
主要从以下几个方面讲解带有流程的流程建模:简单流程、流程规则、流程事件、函数 Fn、动作 Action、Java 开发。

4.1 简单流程

本节将通过开发一个简单的流程实例来详细讲解如何进行带有流程功能的流程建模,重点突出流程图的画法。
流程实例的开发过程与普通功能的开发过程类似,必要的步骤也包括:数据建模、流程建模和界面建模。
按照以下具体步骤进行开发:

1. 数据建模

本例中,在“模型资源视图”的 BIZ 目录中的“x5demo/bizDemo/ontology/”目录中,新建一个本体文件,在该本体文件中,新建一个名为“费用申请”的概念及其关系,新建的概念和关系如下图所示:然后生成数据库,添加标准动作
15.Java- BeX5框架_第92张图片

2. 流程建模—创建 Process 文件及动作设置

流程建模的非流程图部分,同“2.4 流程建模”一节。
本例中在“模型资源视图”的 BIZ 目录中的“x5demo/bizDemo/process/”目录中新建一个 Process 文件,功能目录名称为“costRequest”,显示名称为“费用申请”,如下图所示。
然后在动作设置中添加 X5_CostRequest 概念的 3 个标准动作。
15.Java- BeX5框架_第93张图片

3. 流程建模—画流程图

在 Process 文件中画流程图,先添加一个开始环节,单击流程设计器上方的第一个圆形图标,再在小方格界面上点一下,开始环节就添加到流程图中了,或者在小方格界面上单击鼠标右键,在“新建”菜单中选择“开始”。如下图所示:
15.Java- BeX5框架_第94张图片
流程设计器中,流程的各个功能按钮说明如上图中“新建”菜单所示。其余的流程图按钮说明如下
15.Java- BeX5框架_第95张图片

在流程图中,选中开始环节,右键单击,从“新建”菜单中选择“活动环节”,来为流程图添加其它环节,如下图所示:
15.Java- BeX5框架_第96张图片
按照上面的方法来画流程图,然后选中一个环节,在左侧的“属性”页签中,修改环节的显示名称。添加动作设置,最终的流程图如下图所示:
15.Java- BeX5框架_第97张图片

4. 界面建模

流程的界面建模与普通功能的界面建模大同小异,可参见“2.5 界面建模”一节。
本例中使用了流程模板,在此重点讲解流程模板的不同之处。
在“模型资源视图”的 UI2 目录中的“x5demo/bizDemo/process/costRequest”目录下新建一个 w 文件,使用“单表流程”模板,如下图所示
15.Java- BeX5框架_第98张图片
在上图中,单击“下一步”按钮,进入“模板配置”界面,其中“主数据”、“详细视图”的配置与前面讲的界面建模中操作类似;“流程环节”中的配置自动生成。如下图所示
15.Java- BeX5框架_第99张图片
最后,单击“完成”按钮,生成界面文件,完成界面建模。界面文件目录及效果如下图所示:

15.Java- BeX5框架_第100张图片

5. 授权、运行

接下来进行功能树配置(参见“2.6 功能树配置”一节)、分配权限(参见“2.7 分配权限”一节)的操作,就可以运行系统了,运行效果如下图所示
15.Java- BeX5框架_第101张图片

4.2 流程规则

BeX5 流程的规则有多种,有设置在流程上的规则,也有设置在环节上的规则。
本节中重点介绍流程上的规则之启动规则、环节上的规则之执行规则、转发规则、流转规则和回退规则

4.2.1 启动规则

启动规则主要用于设置流程的任务标题和设置使用的流程模板。
本例中在“模型资源视图”的 BIZ 目录中的“x5demo/bizDemo/process/costRequest/costRequestProcess.process.m”流程文件中,不选环节,点击流程图空白处,左侧列出流程的属性和事件。为流程添加一个启动规则,如下图所示:
15.Java- BeX5框架_第102张图片

1. 设置流程的任务标题

任务标题的表达式设置为 concat(currentPersonName(),currentProcessLabel()),流程启动后及流转后的任务标题如下图所示。
15.Java- BeX5框架_第103张图片

2. 设置使用的流程模板

设置流程模板能实现什么?
BeX5 的流程中一直没有提供流程版本,现在可以使用流程模板实现比流程版本更强的能力。
当没有设置流程模板的时候,系统使用 process 文件中定义的流程图运行流程;
设置了流程模板之后,系统将使用设置的流程模板来运行流程,这样就实现了流程版本的能力。
如果设置不同部门或者不同的人,拥有不同的流程模板,就可以实现每个人启动不同的流程版本了。
如何设置流程模板?
1) 打开后台项目的协同平台——任务管理——流程模板管理功能,配置流程模板,并将流程模板分配给相应的组织。
15.Java- BeX5框架_第104张图片

2) 点流程模板右边的选择按钮,弹出表达式编辑器,在流程模板函数中选择一个合适的函数
15.Java- BeX5框架_第105张图片

4.2.2 执行规则

执行规则主要用于限定本环节的执行者和设置任务协作方式。本节介绍执行规则各个参数及其意义。
本例中在“模型资源视图”的 BIZ 目录中的“x5demo/bizDemo/process/costRequest/ costRequestProcess.process.m”流程文中,选中一个环节,左侧列出该环节的属性和事件。
为其添加一个执行规则,如下图示:
15.Java- BeX5框架_第106张图片
一个环节可以设置多个执行规则,在若干个执行规则中,至少有一个执行规则的“生效条件”为“true”。执行规则基本信息中的参数介绍如下

 生效条件
	可以直接设置为 boolean 值 true 或者 false,也可以单击后面的“选择”按钮,在弹出的“表达式编辑器”中,编辑一个表达式作为生效条件。
	如何编辑表达式,请参见“4.4 函数 Fn”一节。首环节的执行规则,平台默认生成了表达式 isStartingProcess()作为生效条件,如果不是首环节执行规则,默认生成的生效条件是 boolean 值 true 。
 任务标题
	平台默认生成的任务标题是“环节名称+流程名称”,如“职员申请:费用申请”。任务标题可以自定义,单击后面的“选择”按钮,在弹出的“表达式编辑器”中,编辑一个表达式作为任务标题,在 BeX5 的表达式中,常量也被认为是常量表达式。如何编辑表达式,请参见“4.4 函数 Fn”一节。
 打开后自动流转
	选中该项,则该环节不需要手动流转,打开后,就自动流转
 执行者
	执行者属性是为流程环节设置执行者,执行者的类型可以是人员、岗位和部门。
	执行者表达式,用来生成流程环节的执行者,执行者表达式可以组合选用平台提供的组织函数,也可以自定义函数,来取得执行者。
	如何编辑表达式,请参见“4.4 函数 Fn”一节。如何自定义函数,请参见“4.4.2 自定义函数”一节。执行者范围表达式,用来生成可供用户选择的执行者的范围。
	执行者范围表达式可以组合选用平台提供的组织函数,也可以自定义函数,来取得执行者范围。
 任务协作
	任务协作设置的是当流程的某个环节流转给多个执行者的时候,多个执行者如何协作对流程进行处理。
	任务协作的子属性包括任务分配模式、执行模式、抢占模式,

15.Java- BeX5框架_第107张图片
15.Java- BeX5框架_第108张图片
15.Java- BeX5框架_第109张图片
15.Java- BeX5框架_第110张图片

4.2.3 转发规则

转发规则就是为流程如何转发设置的规则。转发规则与执行规则大同小异,区别在于生效的时机不同和环节的转换不同,少数属性不同。
执行规则是当流程流转时生效,且流转后当前环节发生变化;
转发规则是当流程转发时生效,且当前环节不变。
在“模型资源视图”的 BIZ 目录中的“x5demo/bizDemo/process/costRequest/costRequestProcess.process.m”流程文件中,选中一个环节,为其添加一个转发规则,如下图所示:
15.Java- BeX5框架_第111张图片
15.Java- BeX5框架_第112张图片

4.2.4 流转规则

流转规则就是设置流程如何流转的规则。在“模型资源视图”的 BIZ 目录中的“x5demo/bizDemo/process/costRequest/ costRequestProcess.process.m”流程文件中,选中一个环节,为其添加一个流转规则,如下图所示
15.Java- BeX5框架_第113张图片
15.Java- BeX5框架_第114张图片
15.Java- BeX5框架_第115张图片

4.2.5 回退规则

回退规则就是为流程回退时设置的规则。回退规则类似于流转规则。在“模型资源视图”的 BIZ 目录中的“x5demo/bizDemo/process/costRequest/costRequestProcess.process.m”流程文件中,选中一个环节,为其添加一个回退规则,如下图所示:

15.Java- BeX5框架_第116张图片
15.Java- BeX5框架_第117张图片

4.3 流程事件

流程事件,指的是在流程的执行过程中有若干个时机点,如流程流转前、流转后,在这些时机点上可以执行的操作。常用的流程事件,按照作用范围可以分为 Process 中的事件、Activity 中的事件和 Action 中的事件,也可以把它们看做流程的全局事件和局部事件

4.3.1 Process 事件

Process 中的事件也可以看做是流程的全局事件。在“模型资源视图”的 BIZ 目录中,打开“x5demo/bizDemo/process/costRequest/ costRequestProcess.process.m”流程文件,不选环节,点击流程图空白处,左侧列出流程的属性和事件。选中“事件”选项卡,如下图所示:
15.Java- BeX5框架_第118张图片

Process 中的事件,按照流程的动作类型划分可以分为十类:
开始、流转、回收、定制流程、转发、回退、中止、暂停、唤醒、结束;
按照事件执行时机类型划分可以分为两大类:执行前和执行后。
在事件后面的“事件值”处双击,就会在 Process 文件所在目录下生成一个 Java 文件,Java 文件中生成该事件对应Java 方法。
本例中以onAfterFinish 事件为例说明,如下图所示:
15.Java- BeX5框架_第119张图片
15.Java- BeX5框架_第120张图片

15.Java- BeX5框架_第121张图片

import com.justep.system.util.*;
import com.justep.system.process.*;
import com.justep.system.context.*;
import com.justep.system.opm.*;
import com.justep.system.data.*;
import com.justep.system.action.*;
import com.justep.model.*;

public class CostRequestProcess {

	public static void costRequestProcessAfterFinish() {
		String key = ProcessUtils.getProcessData1();
		String kSql = "update X5_CostRequest a set a.fStatus='已审批' where a = '"+key+"'";
		KSQL.executeUpdate(kSql, null, "/x5demo/buy/data", null);
		
	}
}

15.Java- BeX5框架_第122张图片
15.Java- BeX5框架_第123张图片
15.Java- BeX5框架_第124张图片

4.3.2 Activity 事件

  1. Activity 中的事件可以看做是流程的局部事件。在“模型资源视图”的 BIZ 目录中,打开“x5demo/bizDemo/process/costRequest/ costRequestProcess.process.m”流程文件,选中其中的一个环节,在 Process 文件的左侧选中“事件”页签,显示的是 Activity上的事件。
    Activity 的事件比 Process 的事件数量少,但事件名称与 Process 对应的事件名称相同
  2. Activity 的事件中也有 xxxxQuery 这样的事件,同一类事件中执行的先后顺序也跟
    Process 事件中的顺序一样。在 Activity 事件后面的“事件值”处双击,也会生成对应
    的 Java 方法。如下图所示

15.Java- BeX5框架_第125张图片
Activity 事件的 Java 方法代码跟 Process 事件的 Java 方法代码在同一个文件中。
Activity 事件的 Java 代码,如下图所示
15.Java- BeX5框架_第126张图片
在流转时获取下一个环节的执行者,是在流程中较为常用的功能,Java 代码如下。
其它方法参见 API 文档

public static void bizActivity1AfterAdvance() {
ProcessControl flowControl = (ProcessControl)ContextHelper.getActionContext().
getParameter("control");
for (ProcessControlItem to : flowControl.getFlowTos()) {
for (OrgUnit ect : to.getExecutors()) {
System.out.println("=====fid=====>"+ect.getFID());
System.out.println("=====fname=====>"+ect.getFName());
} 
} }

Activity 中的事件分类及说明如下所示

 分类                    事件                         说明

15.Java- BeX5框架_第127张图片

4.3.3 Action 中的事件

15.Java- BeX5框架_第128张图片
15.Java- BeX5框架_第129张图片
Action 中的事件的 Java 方法代码跟 Process 事件的 Java 方法代码在同一个文件中。Action 中的事件的 Java 代码,如下图所示:
15.Java- BeX5框架_第130张图片

4.4 函数 Fn

4.4.1 常用函数

在 BeX5 中,常用的函数按照作用可分为:默认值表达式函数、KSQL 内存函数、条件表达式函数、执行者表达式函数四种;
按照类型又可分为:通用函数、数据函数、模型函数、组织函数和流程函数五类。
在实际使用中,这两种分法会出现交叉,但并不影响对表达式的理解和使用。
 默认值表达式函数用于设置关系的默认值,例如生成订单编号;
 KSQL 内存函数用于 KSQL 查询编辑器中和 bizData 的 Filter 属性中;
 条件表达式主要用于条件的比较判断,比如流程中条件分支环节就需要条件表达式来判断;
 执行者表达式主要用于流程中获取执行者和执行者范围,主要使用组织函数
BeX5 中提供的函数,既可以单独使用,又可以组合使用;有的函数是无参数的,有的函数是有参数的。根据具体的需求,选择或者组合使用适当的表达式。

4.4.2 表达式编辑器

使用表达式编辑器完成选择函数,输入参数的工作。表达式编辑器功能十分强大,既可以直接选择函数使用,也可以进行表达式的编辑。表达式编辑器如下图所示:
15.Java- BeX5框架_第131张图片
 表达式编辑器的使用

  • 表达式编辑器的使用也很简单,如果不需要选择函数,可以直接在下方的编辑区域写入常量,如果是数字常量,则直接写入,如:3、5.8 等;如果是字符串常量,则需要使用英文输入状态下的单引号引起来,如:‘起步科技’。
  • 如果需要使用函数,则先在左侧的“函数列表”中选择一个需要的函数,在右侧的参数界面中填入相应的参数。函数的参数填写完毕后,单击下方的“添加”按钮,编辑后的函数,就添加到了下方的编辑区域;如果同一个表达式中还需要其它的函数,则继续选择函数,填写参数,最后,在下方编辑区域单击新函数添加的位置,再单击“添加”按钮,新函数就添加到编辑区域中光标所在的位置;也可以在编辑区域中,完全手动输入代码,编写表达式,但需要严格区分大小写。如上图所示。

 功能按钮

  • 在编辑区域上面有一排功能按钮,功能按钮的意义也一目了然。当编辑表达式时,点击其中的任何一个按钮,就在编辑区域中添加一个相应的操作符:

 值比较

  • 表达式中字符串值、数字值的比较都可以使用>、=、<操作符及它们的组合操作符,如 3>2、‘aaa’=‘aaa’。不等于使用 NOT 或者<> 表示,如 NOT(‘aaa’=‘bbb’)、‘aaa’<>‘bbb’
    15.Java- BeX5框架_第132张图片

注意 使用表达式时,需注意以下几点:
1、 所有的字符常量都必须用英文的单引号引起来
2、 值比较直接使用比较操作符,>、=、<、>=、<=
3、 用 NOT 或者<> 表示不等于

4.4.3 自定义函数

BeX5 中的函数由 Java 文件、Fn 文件组成,Java 文件作为函数功能的底层实现,提供 Java 方法接口,Java 文件又分为动态和静态两种,分别存放在 logic/code 目录下的dsrc 和 src 目录下;
Fn 文件是 Xml 格式的文件,对 Java 方法进行了包装,提供非 Java的外部使用的接口。平台提供的函数就是通过这种方式实现的,如下图所示
15.Java- BeX5框架_第133张图片
BeX5 中函数的开发归纳起来,分为两个部分:Java 文件的开发、Fn 文件的开发。用户如果要自定义函数,也需要完成这两件事情。
自定义函数的具体步骤如下:

1. 创建 fn 目录

在 BIZ 层的业务模块目录下的 logic 目录下新建一个目录,本例中,在“模型资源视图”的 BIZ 目录中的“x5demo/baseDemo/logic/”目录上,单击鼠标右键,选择“新建”->“文件夹”,新建一个目录,命名为 fn,且只能命名为 fn。如下图所示:
15.Java- BeX5框架_第134张图片
在弹出的对话框中,命名 fn

2. 创建 Fn 文件

Fn 文件对 Java 代码进行了包装,使面向 Java 的开发接口,转变为面向函数的接口。
Fn 文件中定义函数调用的 Java 方法及参数。
Fn 文件创建在 BIZ 层业务模块目录下的logic/fn 目录下。
本例中,在“模型资源视图”的 BIZ 目录中的“x5demo/baseDemo/logic/fn”目录上,单击鼠标右键,选择“新建”->“Fn 文件”,在弹出的“新建 Fn 文件”窗口中,输入文件名,单击“完成”按钮即可。新建 Fn 文件如下图所示
15.Java- BeX5框架_第135张图片
在新创建的 Fn 文件中添加函数定义,如下图所示。
15.Java- BeX5框架_第136张图片
函数基本信息中各个属性的意义解释如下
15.Java- BeX5框架_第137张图片

3. 创建 dsrc 目录

在“模型资源视图”的 BIZ 目录中的“x5demo/baseDemo/logic/code”目录上,单击鼠标右键,选择“新建”->“文件夹”,创建 dsrc 目录:

4. 创建 Java 文件

在“模型资源视图”的 BIZ 目录中的“x5demo/baseDemo/logic/code/dsrc”目录上,单击鼠标右键,选择“新建”->“Java 文件”,如下图所示:
15.Java- BeX5框架_第138张图片
在弹出的“新建 Java 文件”窗口中,输入 Java 类名,在 dsrc 下建的是动态 Java文件,不需要包名,单击“完成”按钮,如下图所示,创建了一个动态 Java 文件。

15.Java- BeX5框架_第139张图片
接下来,在新建的 Java 文件中编辑 Java 代码,这与通常的 Java 开发一样,但是,开发中使用的工具类是 BeX5 平台提供的,在 BeX5 中如何进行 Java 开发,请参见“4.6 Java开发”一节。
本例中,在新建的 Java 文件中,添加代码,如下图所示
15.Java- BeX5框架_第140张图片
至此,完成了自定义函数的开发
 使用静态 Java(或者 jar)
上面介绍了函数中调用动态 Java 的方法,下面介绍调用静态 Java(适用于 jar)的方法。

1、使用静态 Java 文件 在 logic/code 上新建 src 目录,在 src 目录上新建 Java 文件
2、使用 jar 将 jar 放到 logic/code/lib 目录下
3、Fn 文件中函数的定义
代码模块选择/x5demo/baseDemo/logic/code代码填入包名.类名.方法名,例如:com.justep.utils.StaticFun.getData
此类 Java 文件,需要包名,称之为静态的 Java 文件,静态的 Java 文件在程序运行时进行修改后,需要重新编译才能生效

 如何使用自定义函数?
用户自定义函数的使用方法跟 BeX5 提供的函数的使用方法一样,通过以下配置,自定义函数会按照其定义的分类出现在表达式编辑器的函数列表中

  1. 引用自定义函数模块
    自定义函数作为默认值表达式函数或者 KSQL 内存函数使用,需要在 Ontology 文件中引用 logic/code/fn 目录。
    自定义函数作为条件表达式函数或者执行者表达式函数使用,需要在 Process 文件中引用 logic/code/fn 目录。
    下面以默认值为例介绍。在“模型资源视图”的 BIZ 目录中,打开“x5demo/baseDemo/ontology/base.ontology.m”本体文件,进入“包含/引用”界面在“引用(USE)”编辑框中,单击“添加”按钮,在弹出的“选择模型”对话框中,选中自定义的 fn 目录“/x5demo/baseDemo/logic/fn”,单击“确定”按钮。如下图所示:

15.Java- BeX5框架_第141张图片
2. 使用自定义函数
在本体文件中引入自定义函数模块之后,在表达式编辑器的函数列表中,就可以看到自定义的函数了。
本例中,把自定义函数作为关系默认值来使用。在“模型资源视图”的 BIZ 目录中,打开“x5demo/baseDemo/ontology/base.ontology.m”本体文件,进入“概念模型”界面,选中“客户编码”这个关系,选择自定义函数作为其默认值。如下图所示:
15.Java- BeX5框架_第142张图片
3. 查看效果
打开客户信息功能,单击“新增”按钮,在客户编码中填入了目前最大的客户编码,界面效果如下:
15.Java- BeX5框架_第143张图片

4.5 动作 Action

Action 是什么?

  1. Action 是用户请求和业务逻辑之间的桥梁,每个 Action 充当客户的一项业务代理。
    在传统的 MVC 项目中,在创建了 Action 的实例后,会调用 Action 的execute(),Action 的 excute()方法调用模型的业务方法,完成用户请求,然后根据执行结果把请求转发给其他合适的 WEB 组件。
  2. BeX5 中 Action 也具有同样的内涵。BeX5 中的 Action 描述了一个动作或者一个业务逻辑。
    BeX5 中的 Action 由 Java 代码、Procedure 定义文件、Action 定义文件组成。
    其中,Java 代码是 Action 的底层代码实现;
    Procedure 定义文件起到了对Java 接口方法的重载,并且与 BeX5 中的工作流引擎统一起来,
    也就是说工作流引擎通过 Procedure 可以调用自定义的 Action 的 Java 方法;
    Action 定义文件是对Java 代码的最外层封装,实现了 Action 的功能,使面向 Java 开发的接口转变为面向非 Java 开发的接口

BeX5 中 Action 作用是什么?
Action 是 BeX5 中 UI 层和 BIZ 层相互通信的唯一途径。Action 封装了一定的业务逻辑

BeX5 中 Action 运行原理是什么?

  1. BeX5 中 Action 运行原理也比较简单,有两个地方可以调用 Action,分别是 UI界面、流程,UI 界面也可以调用流程。UI 界面或者流程调用定义好的 Action,向Action 发出请求,Action 将请求转发给 Procedure,Procedure 根据描述文件,找到具体的 Java 方法,把请求转发给 Java 方法,Java 方法经过处理后,把处理结果返回给 Procedure,Procedure 再返回给 Action,Action 把处理结果返回给 UI 界面或者流程,最终由 UI 界面或者流程进行展示或者处理。
  2. BeX5 中 Action 的存放是有规范的,Action 的定义文件存放在 BIZ 模型目录下的业务模块中的 logic/action 目录下;Action 所引用的 Procedure 的定义文件跟Action 的定义文件存放在相同目录下;
    Action 所关联的 Java 文件存放在 BIZ 模型目录下的业务模块中的 logic/code 目录下。Action 目录结构如下所示:
    15.Java- BeX5框架_第144张图片
    流程中如何调用 Action,具体请参见“2.4.2 动作设置”一节。
    UI 层如何调用 Action,具体请参见“5.4 Action 调用”一节。

4.5.1 常用 Action

使用 BeX5 开发系统,Action 的使用是很频繁的。BeX5 平台中提供了许多有用的 Action,实际开发中,这些 Action 经常被用到。
本节中简要介绍几个常用的Action,更多的 Action 请参见 BeX5“模型资源视图”中 BIZ/system/logic/action、BIZ/SA/opm/logic/action 两个目录下的 Action。
15.Java- BeX5框架_第145张图片

开发者如果要引用平台提供的 Action 或者是其它应用中定义的 Action,需要在当前业务模块中的 ontology 文件中引入该 Action 所对应的概念模型文件所在的目录,在 process 文件中引入该 Action 的定义文件所在目录及 Java 代码所在目录,也就是 logic/action、logic/code 这两个目录需要被引入到当前业务模块中。如何进行资源的引用,请参见“3.1.1 概念”一节中“包含引用”这一部分。

4.5.2 自定义 Action

讲完了 Action 的运行原理,下面介绍如何自定义 Action。
由 BeX5 中 Action的定义可知,自定义 Action 需要涉及三个文件:Action 文件、Procedure 文件、Java 文件。
这 3 个文件都在 logic 目录下,其中 Action 文件、Procedure 文件在logic/action 目录下;Java 文件在 logic/code 目录下。

1、新建 action 文件

Action 文件创建在 BIZ 层的业务模块目录下的 logic/action 目录中。本例中,在“模型资源视图”的 BIZ 目录中的“x5demo/baseDemo/logic/action”目录上,单击鼠标右键,选择“新建”->“Action 文件”,如下图所示:
15.Java- BeX5框架_第146张图片
在弹出的“新建 Action 文件”窗口中,输入文件名称,本例中输入“test”,单击“完成”按钮,就创建了新的 Action 文件。

2、添加新 Action

在 Action 文件的“设计”界面中,单击左上角的“添加”按钮,添加一个新的 Action,在右侧的“基本信息”中,输入名称和标识,标识在调用 Action 时是必填的,不能使用中文,本例中输入的标识是“testParaAction”。
“是否是全局”选项表示该 Action 是否是全局的 Action,如果选中是全局,则表示,该 Action 不需要在 Process 文件中引入,就可以被使用,如果不是全局的,则必须先在 Process 文件的动作设置中引用该Action,才能被使用。此处不选中。如下图所示:
15.Java- BeX5框架_第147张图片

3、添加 Action 的参数

“基本信息”配置完成后,在下面的“参数列表”中,单击“添加”按钮,添加参数。本例中,添加的参数名称为 ksql,范围选择 public,类型选择 String。如下图所示

15.Java- BeX5框架_第148张图片

4、生成 Procedure Action

定义完成后,单击“生成”按钮,弹出生成 Procedure 窗口,如下图所示:单击“确定”按钮生成 Procedure。
15.Java- BeX5框架_第149张图片

5、写 Java 代码

生成 procedure 后,单击“代码”按钮,会自动跳转到代码页面,我们添加几行简单的代码,如下图所示
15.Java- BeX5框架_第150张图片
至此,自定义开发 Action 结束。
如何使用自定义的 Action?

自定义 Action 后,接下来可以在 UI 界面或者流程中使用自定义的 Action。自定义
的 Action 的使用方法跟 BeX5 提供的 Action 的使用方法一样。
UI 层如何调用自定义 Action,具体请参见“5.4 Action 调用”一节。
流程中如何引用自定义 Action,具体请参见“2.4.2 动作设置”一节。

4.5.3 Action 参数赋值

Action 的参数范围有 4 种类型,分别是 public、protected、private 和 permission。
其中 public 类型的参数可以在界面调用 Action 时赋值,具体请参见“5.4 Action 调用”一节;
private 类型的参数在 action 声明时赋值,不再在其它地方赋值;permission 类型的参数在角色管理功能中设置,具体请参见《BeX5 管理员使用手册.doc》。
下面介绍 protected 类型的参数的赋值方法。打开 process 文件,进入动作设置窗
口,如下图所示。
15.Java- BeX5框架_第151张图片
选中一个动作,单击参数设置中的“添加”按钮,出现如下图所示对话框。
15.Java- BeX5框架_第152张图片
选中要赋值的参数后,单击“确定”按钮返回。如下图所示,在“值”中输入相应的内容即可。
15.Java- BeX5框架_第153张图片
单击“确定”按钮完成参数的赋值。

4.6 Java 开发

在 BeX5 中 Java 开发是很常见、很重要的开发,首先就要求开发者有一定的 Java 开发基础,才能在 BeX5 中有效地进行 Java 开发
Java 在 BeX5 中起什么作用?
Java 在 BeX5 中起三个方面的作用:Java 代码是 BeX5 底层实现的主要代码载体;
Java在 BeX5 中可以实现业务逻辑的开发;Java 可以在 BeX5 平台上进行扩展开发。
在 BeX5 中如何进行 Java 开发?

  1. 在 BeX5 中进行 Java 开发,需要在 logic/code 目录下新建名为 dsrc 或者 src 目录,在这两个目录上都可以单击鼠标右键,选择“新建”->“Java 文件”,创建 Java 文件。
    需要注意的是,在 dsrc 目录中创建的 Java 文件不需要包名,称之为动态的 Java 文件,动态的 Java 文件在程序运行时可以修改,并且不需要重新编译就能生效;
    在 src 目录中创建的 Java 文件,需要包名,称之为静态的 Java 文件,静态的 Java 文件在程序运行时进行修改后,需要重新编译才能生效
  2. 在开发 Java 代码时,需要把 Java 文件所在目录设置为“源文件路径”。
    Java 文件所在目录设为“源文件路径”后,Java 的开发环境就与在 Eclipse 中开发 Java 一样了。
    在 BeX5 的“模型资源视图”中,右键单击 dsrc 目录或者 src 目录,选择“设置 src、drsc 为源码路径”,该目录就被设为源路径目录了。
    “源文件路径”设置如下图所示
    15.Java- BeX5框架_第154张图片
    15.Java- BeX5框架_第155张图片
    如果要从源码路径中取消,则在源码路径上单击鼠标右键,选择“移除源码路径”就可以了,如下图所示:
    15.Java- BeX5框架_第156张图片
    接下来在 Java 文件中进行开发,就与通常的 Java 开发一样了。
    本节将从 BeX5 提供的常用 Java 方法(类)介绍、Java 操作数据库、BeX5 中 Java
    调试等几个方面讲解 BeX5 中的 Java 开发。

提示:开发 Java 时,请先将系统目录/BIZ/system/logic/code/dsrc 设置为源码路径。

五、移动应用建模

15.Java- BeX5框架_第157张图片

3.1 界面建模

1. 新建.w 文件

本例中,在“模型资源视图”的 UI2 模型目录中,右键单击“x5demo/baseDemo/process/customInfo”目录,选择“新建”->“W 文件”,如下图所示:
15.Java- BeX5框架_第158张图片

2. 选择模板

在弹出的“新建 W 向导”对话框中,“移动”下面的模板是适合手机的模板,“桌 面”下面的模板是适合 PC 的模板。
现在要开发 PC 界面,因此选择“桌面-列表/详细-单表-列表+详细(标签页)”,单击“下一步”按钮。如下图所示:
15.Java- BeX5框架_第159张图片

3. 配置主数据

在“模板配置”界面中,选择主数据,单击“概念(concept)”后面的”选择”按钮,在弹出的对话框中选择界面上要访问的概念,
15.Java- BeX5框架_第160张图片
如果将概念中的关系全取到界面上,则不需要设置“关系(columns)”;
如果只取概念中的某些关系,则需要单击“关系(columns)”后面的”选择”按钮,在弹出的对话框中选择需要的关系,version 关系一定要选上,单击“确定”按钮。如下图所示:
15.Java- BeX5框架_第161张图片

4. 配置列表视图

在“列表视图”中,添加列表中显示的列。
单击“新增”按钮,在弹出的对话框中,选择要显示的列,version 关系不必选,单击“确定”按钮,如下图所示:
15.Java- BeX5框架_第162张图片

5. 配置详细视图

在 “详细视图”中,添加详细页中显示的数据项。
单击“添加关系”按钮,在弹出的对话框中,选择要显示的数据项,version 不必选,单击“确定”按钮,关闭对话框。
15.Java- BeX5框架_第163张图片

6. 修改文件名

把当前文件名后缀添加.m
15.Java- BeX5框架_第164张图片
如下图
15.Java- BeX5框架_第165张图片
最后,单击“完成”按钮,完成界面建模。如下图所示:15.Java- BeX5框架_第166张图片

7. 访问地址

访问:http://127.0.0.1:8080/x5/m跳转到http://127.0.0.1:8080/x5/UI2/v_/portal/mobile/index.w?device=m

用户名:system 密码:123456
用户名:demo 密码:123456(系统默认测试账号)
15.Java- BeX5框架_第167张图片

8. 进入页面

鼠标右滑,点开功能页,滑动到最下方,查看创建的页面。可以进行增删改查的操作
15.Java- BeX5框架_第168张图片

3.2 界面建模空模板

1. 新建.w 文件

本例中,在“模型资源视图”的 UI2 模型目录中,右键单击“x5demo/baseDemo/process/customInfo”目录,选择“新建”->“W 文件”,如下图所示:
15.Java- BeX5框架_第169张图片

2. 选择模板

选择空白模板,点击完成
15.Java- BeX5框架_第170张图片
生成页面如下,至此创建空模块完成
15.Java- BeX5框架_第171张图片

3. 添加布局

选中window,查看右方控件,我们要添加一个页面,所以双击布局下面的contents,至此左上方window下面就出现了一个contents1.
15.Java- BeX5框架_第172张图片

4.修改xid

选择要修改的页面数据,点击下方xid的值,进行修改
15.Java- BeX5框架_第173张图片

你可能感兴趣的:(java,java)