本章要点:
获取 BeX5 开发版
准备数据库
运行 BeX5 开发工具
登录系统
为了方便用户体验 BeX5 平台,BeX5 平台自带 MySQL 数据库。执行“启动 MySQL 数据
库.bat”即可启动 MySQL 数据库,使用数据库期间,不要关闭 MySQL 服务窗口。。
用户也可以使用自己现有的数据库。BeX5 平台支持 Oracle、SQL Server、Sybase、
DB2、MySQL 等五种数据库。通过执行“配置初始化其它数据库.bat”完成建表、初始化
数据及 Studio 中数据源配置等工作。
初始化过程如下:
BeX5 系统中默认使用系统(system)、演示(demo)、文档服务(doc)等三个数据源。
它们既可以连接不同的数据库,也可以连接相同的数据库。
如果使用同一个数据库,请选中下图中的复选框;
如果使用不同的数据库,请取消选中,点下一步继续配置其它两个数据源的详细信息
注:仅当本机已安装 Oracle 客户端时,才能选择 jdbc.oracle.oci。
BeX5 平台默认提供了 Oracle 10g 的 jdbc 驱动包 ojdbc14.jar,
如果安装了其它版本的 Oracle 客户端,请将 Oracle 提供的 jdbc驱动包复制到 BeX5\apache-tomcat\lib 目录下。
执行开发版中的“启动 BeX5 开发工具.bat”,即可打开 BeX5 Studio。
在 Studio 的工具条中,点击第一个猫形图标,启动 Tomcat,
当控制台最下面出现如“信息: Server startup in 3208 ms”这样的信息时,表示 Tomcat 启动成功。
在浏览器地址栏中输入http://127.0.0.1:8080
进入登录界面,输入默认的用户名
system
,密码 123456
,登录后首页界面如下
注意: 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 门户,体验全新的门户风格
在 Studio 中,打开菜单“窗口”->“首选项”,在弹出的对话框中,打开“Studio
配置”->“数据源”,修改现有的业务服务数据源的配置信息,如下图所示:
数据源名称保持不变,可以选择另一种数据库类型。
输入数据库所在计算机的 IP,数据库实例名称、数据库名称、用户名、密码。
点击下面的“测试连接”按钮,对数据源进行测试,当弹出“数据源配置正确,连接测试成功!”的提示信息时,说明数据源配置正确,点击“提示”小窗口的“确定”按钮,再点击“数据源设置”的“确定”按
钮,再在“首选项”窗口中点击“应用”按钮。
SVN 是目前使用最广泛的版本管理软件,安装配置好 SVN 服务端后,在 SVN 中创建仓
库,名称可以取项目名称,在仓库下建三个文件夹,分别是 BIZ、UI2 和 Native,
如下图所示
在 Studio 中增加“SVN 资源库研究”视图。单击 Studio 右上角的“打开透视图”按钮,
弹出打开透视图对话框,选择“SVN 资源库研究”,如下图所示,单击“确定”按钮。
添加资源库位置。单击右上角的“SVN 资源库研究”按钮,进入 SVN 视图。在左侧的
“SVN 资源库”中单击鼠标右键弹出菜单,点击新建->资源库位置,如下图所示。
在弹出的“添加 SVN 资源库”的窗口中,输入已经建立好的 SVN 服务端路径,如下
图所示。
点完成按钮,可以看到 SVN 资源库中已经添加了一个资源库,这个资源库下面有三
个文件夹,将这三个文件夹分别检出。检出方法是:在资源库下面的文件夹 BIZ 上单击
鼠标右键弹出菜单,单击“检出为”,如下图所示
在弹出的“从 SVN 检出”的窗口中,选择“做为工作空间中的项目检出”,如下图
所示
单击“下一步”按钮,取消“使用缺省工作空间”的勾选,点浏览按钮,选择 BeX5
中的 model 目录,如下图所示。
单击“完成”按钮,出现“确认覆盖”询问框。如下图所示。单击“确定”按钮
切换到 Studio 透视图,稍等一会儿,BIZ 文件夹右边出现[BIZ],如下图所示。说明
BIZ 文件夹检出成功,可以使用 SVN 进行版本管理了。
参照检出 BIZ 文件夹的方法,继续检出 UI2 和 Native 文件夹。都检出后,如下图所
示
在左侧的模型资源中用鼠标右键点任意文件夹或文件弹出菜单,在“小组”菜单中
就会出现 SVN 选项菜单,说明已连接 SVN 资源库,可以进行更新和提交了。
说明:在 Studio 中提交和更新不需要安装 SVN 客户端。
使用 Checkout 提取文件后,文件处于 SVN 版本控制中,之后才能更新和提交。
不要将处于 SVN 控制中的目录复制到另一 SVN 控制目录中,这样将会发生冲突,导致不能提
交。
把握 Commit 的频率,不能太频繁,每修改一个小小的地方就提交,则会产生很多版
本,而隔时间太久再提交,则其他相关人员不能及时获取你的改动,在提交时就容易造
成冲突,当然,要视团队的具体情况而定了。在多人协作时,尽量修改自己撰写的部分,
不要修改其他部分,这就要看团队协作的能力了。
Update 对不同的人所做的修改会自动合并,如果无法自动合并则会发生冲突,需要
手工用文件比较工具进行合并,因此要注意经常更新自己的工作副本,以保证自己能够
获得最新的修改内容,降低发生冲突的可能性。
之前正常使用的 SVN,突然不能使用了,采用下面的步骤可以解决。首先添加 java
视图。做法是单击 Studio 右上角的“打开透视图”按钮,选择 java,单击“确定”按
钮。添加 java 视图。在包资源管理器中,在 BIZ、UI2 和 Native 目录上,单击鼠标右键,
在弹出的菜单中,单击关闭项目,再在 BIZ、UI2 和 Native 目录上,单击鼠标右键,在
弹出的菜单中,单击打开项目。切换回 Studio 视图,SVN 可以使用了。
本章要点:
新建应用
新建业务模块
数据建模
流程建模
界面建模
功能树配置
分配权限
运行系统
BeX5 通过数据建模、流程建模和界面建模来构建企业信息化。
本章以“客户信息维护”为例,来介绍 BeX5 的建模过程。
BeX5 的模型关系如下图所示:
一个项目的开发,是从新建应用开始的。BeX5 平台中,“应用”相当于“项目”。
提示:在 Studio 中除了指明可以输入中文,一律要求输入英文。
上图中,BIZ 目录下生成了数据库连接配置文件(db.config.m);
UI2 目录下生成了
配置目录(config)和应用配置文件(application.xml)、功能树配置文件(***.function.xml)和 widget 配置文件(***.widget.xml)。
提示:在BIZ中生成目录后,会相应的在UI2中生成同名目录。
保持BIZ和UI2目录相同是UIServer访问 BizServer 的转调依据
一个项目通常会划分为多个子项目(或者说子系统),BeX5 平台中一个“业务模块”相当于项目中的一个“子项目”。如上图,“x5demo”就是一个应用。
在一个“应用”中,可以继续创建新的“业务模块”,按照以下步骤创建新“业务模块”:
上图中,BIZ 目录下的x5Demo目录下的baseDemo目录下的
ontology 目录中存放的是概念数据模型文件;
data 目录中存放的是物理数据模型文件;
logic 目录存放的是业务逻辑文件,包括 Action 和 Fn 定义文件、Java 源码文件;
process 目录存放的是流程模型文件。
创建完新应用和业务模块后,就可以在应用中进行建模了。
整个建模过程分为三个步骤,
分别是:数据建模、流程建模和界面建模。
其中,数据建模实现概念与数据库交互,完成数据存取。
数据建模包括概念数据建模和物理数据建模两部分。
概念数据建模起到了屏蔽物理数据库之间差异的作用。
概念数据建模,包括创建本体、创建概念、创建关系。
所谓“本体”(ontology)可以理解成是对对象的抽象的集合。
“本体”中又包含“概念”和“关系”。其中,
“概念”可以理解成是对单个或者一类对象的抽象;
“关系”可以理解成是对对象属性的抽象。
在代码级别,“本体”可以看成是对数据库表的集合的抽象,“概念”可以看成是对数据库表的抽象,“关系”可以看成是对表字段的抽象。
“x5demo/baseDemo/ontology”
目录上,右键单击,选择“新 建”->“Ontology 文件”,如下图所示:在本体base.ontology.m
设计器中,单击左上角的“添加概念”按钮,在概念主信息中编辑概念信息,然后保存。如下图所示:
注意 新建概念时,需注意以下几点:
概念创建完成后,为概念创建关系。为概念创建关系有两种方式:添加新关系和从已定义关系中选择
在本体设计器中,选中一个概念,在“概念关系设置”中,单击“添加新关系”按钮,新增关系。如下图所示
在弹出的“新建关系”对话框中,输入关系名称、关系标识、选择关系类型,最后单击“确定”按钮,就创建了一个新关系。如下图所示:可以为概念创建若干个关系。
注意 新建关系时,需注意以下几点:
如果要新建的关系标识和已有的关系标识相同,则可以从已定义的关系中选择该关系。如下图所示
单击“概念关系设置”中的“从已定义关系中选择”按钮,弹出“选择关系”对话
框,选择需要的关系。如下图所示:
按照以上步骤,创建应用中需要的本体、概念和关系,单击保存按钮,就完成了概念数据建模。
概念数据建模完成后,接下来要进行的是物理数据建模。
物理数据建模包括映射设置、生成物理表和标准动作设置三部分。
物理数据建模就是在概念和物理数据库之间建立映射关系。
映射设置就是要把概念数据建模中创建的概念和关系跟物理表建立起联系。
如果概念标识和表名相同,关系标识和字段名相同,可以省略这一步,直接生成数据库表。
在本体设计器中,切换到“映射设置”页。如果概念标识与表名不同,则修改表映射中的表名;
如果关系标识和字段名不同,则在字段映射中,单击“添加字段映射”按 钮,弹出“选择关系”窗口。如下所示:
在弹出的“选择关系”对话框中,选择要进行映射的关系。当关系标识与生成的字段名称不一致时,需要进行映射。如果不选,默认关系标识与生成的物理表字段名称一致。如下图所示:
单击“保存”按钮,返回映射设置,在字段映射中修改字段名,映射设置完成。
提示:如果这里显示的字段不全,是因为概念主信息没有保存
BeX5 平台中的 Action 描述了一个动作或者一个业务逻辑。
通常每个概念都拥有创建数据、保存数据、查询数据这三个动作,这些动作就称为标准动作。
其中,保存、查询这两个动作实现了概念跟数据库之间的数据交互。
生成物理表后,进行“标准动作设置”。
在本体设计器的“标准动作设置”界面中,单击“添加”按钮,如下图所示
弹出“创建标准动作”对话框,单击“确定”按钮,就完成了“标准动作设置”,如下图所示
至此,完成物理数据建模。
整个建模过程分为三个步骤,分别是:数据建模、流程建模和界面建模。
其中,流程建模实现了业务流程和业务逻辑
数据建模完成后,进行流程建模。
流程建模需要创建 Process 文件,并设置相关属性。
流程建模根据具体的功能又可分为有流程的流程建模(工作流业务)和非流程的流程建模(普通的数据增删改查的功能)。
本章只介绍非流程的流程建模,有流程的流程建模在“4.1 简单流程”一节中再做详细说明。
非流程的流程建模,包括创建 Process 文件和动作设置两部分。
流程文件创建在 BIZ 中的 process 目录下。本例中,在“模型资源视图”的 BIZ 目录中,
右键单击“x5demo/baseDemo/process
”目录,选择“新建”->“Process 文件”,
如下图所示:
在弹出的“新建 process 文件”对话框中,输入功能目录和 process 名称,功能目录不能输入中文,如下图所示
提示:显示名称可以输入中文
单击“完成”按钮,就生成了 Process 文件。新建的 Process 文件在应用中的目录
结构如下图所示
Process 文件生成后,在 UI2 模型目录中,也生成了相应的 process 功能目录。
流程文件创建完成后,需要为其进行动作设置。
动作设置就是添加标准动作和其它运行时需要用到的 Action。
在流程设计器左侧,单击“动作设置”后面的小按钮,如下图所示:
在弹出的“动作设置”窗口中,单击左上角的“增加”按钮,弹出“请选择动作”窗口,选择需要的动作。如下图所示:
选完动作后,依次单击“确定”按钮,就完成了动作设置。同时,也意味着流程建模完成了。流程建模完成后,应用 BIZ 层的开发也就完成了。
整个建模过程分为三个步骤,分别是:数据建模、流程建模和界面建模。
其中,界面建模实现了人机交互、数据展现、界面逻辑等功能。
流程建模结束后,也就完成了后端服务的开发,接下来进入前端页面的开发,即界面建模。
界面建模可以使用平台提供的界面建模向导生成界面文件,也可以新建一个空白界面文件,使用平台提供的 UI 设计器手动开发界面文件。
界面展现文件的后缀是.w,界面文件创建在“模型资源视图”的 UI2 目录中的 process目录下。本节中使用平台提供的界面建模向导生成界面文件。按照以下步骤进行界面建模:
本例中,在“模型资源视图”的 UI2 模型目录中,右键单击“x5demo/baseDemo/process/customInfo”
目录,选择“新建”->“W 文件”,如下图所示:
在弹出的“新建 W 向导”对话框中,“移动”下面的模板是适合手机的模板,“桌 面”下面的模板是适合 PC 的模板。
现在要开发 PC 界面,因此选择“桌面-列表/详细-单表-列表+详细(标签页)”,单击“下一步”按钮。如下图所示:
在“模板配置”界面中,选择主数据,单击“概念(concept)”后面的”选择”按钮,在弹出的对话框中选择界面上要访问的概念,
如果将概念中的关系全取到界面上,则不需要设置“关系(columns)”;
如果只取概念中的某些关系,则需要单击“关系(columns)”后面的”选择”按钮,在弹出的对话框中选择需要的关系,version 关系一定要选上,单击“确定”按钮。如下图所示:
在“列表视图”中,添加列表中显示的列。
单击“新增”按钮,在弹出的对话框中,选择要显示的列,version 关系不必选,单击“确定”按钮,如下图所示:
在 “详细视图”中,添加详细页中显示的数据项。
单击“添加关系”按钮,在弹出的对话框中,选择要显示的数据项,version 不必选,单击“确定”按钮,关闭对话框。
最后,单击“完成”按钮,完成界面建模。如下图所示:
生成的界面文件如下图所示
至此,界面建模完成。同时,整个开发的建模过程也就完成了
开发完成后,接下来,进行功能树配置,就是把刚刚完成的功能添加到功能树中。功能树用来进行权限分配和生成功能菜单。按照以下步骤进行功能树配置:
. 在新建应用的时候,功能树配置文件***.function.xml 就已经生成,如下图所示,双击打开文件。
单击“添加顶层菜单目录”按钮,系统在菜单项名称中生成一行顶级菜单目录,点 击可修改菜单项名称,如下图所示:
选中一个菜单目录,可以添加子菜单目录或者修改目录名称,也可以添加功能菜单项或者修改功能菜单项名称。
本例添加功能菜单项,选择“X5 培训演示”目录,单击“添加功能菜单项”按钮,弹出“选择目录”对话框,选择一个功能目录,如下图所示。
选择功能目录后单击“确定”按钮,系统将 process 中定义的 activity 都加到功能树中,如下图所示
注意:在此处也可以直接添加子菜单目录,输入新建的子菜单目录文件名。
最后,单击“保存”按钮,就完成了功能树
完成功能树配置后,接下来进行权限分配。启动 Tomcat,登录系统后,按照以下步骤分配权限:
点击功能树中,“组织权限”->“角色管理”,进入角色管理功能,如下图所示:
打开“角色管理”界面,选中一个角色,也可以新建一个角色,点右侧的“分配功 能权限”菜单。如下图所示:
在弹出的“选择功能”对话框中,选择新建的功能,单击“确定”按钮。如下图所示
点击功能树中,“组织权限”->“按组织授权”,进入授权管理功能,在左侧的组织树上,选中所要授权的组织单元(可以是机构、部门、岗位、人员),单击右侧的“分 配角色”按钮,如下图所示:
在弹出的选择角色的对话框中,勾选相应的角色,单击“确定”按钮。如下图所示。角色就分配给选择的组织单元了,即组织单元拥有角色里面的功能权限了。
至此,完成权限分配。重新登录,就可以在功能树中看到新分配的功能菜单
分配权限后,重新登录就可以运行系统,查看功能了。运行系统请参见“1.4 登录系统”一节。运行效果如下图所示
本章要点:
概念数据建模
物理数据建模
反向生成本体
标准动作设置
整个建模过程分为三个步骤,分别是:数据建模、流程建模和界面建模。
其中,数据建模实现概念与数据库交互,完成数据存取。
建模包括概念数据建模和物理数据建模两部分。
概念数据建模起到了屏蔽物理数据库之间的差异的作用,概念数据建模,包括创建概念、创建关系;
物理数据建模就是在概念和物理数据库之间建立映射关系,物理数据建模包括映射设置、生成物理表和标准动作设置三部分。
数据模型示意图如下:
概念数据建模起到了屏蔽物理数据库之间的差异的作用,概念数据建模,包括创建概念、创建关系
“概念”可以理解成是对单个或者一类对象的抽象,也可以简单看成是对数据库表的抽象。第二章“2.3.1.2 新建概念”一节 ,讲解了如何创建概念;本节中,补充讲解“2.3.1.2 新建概念”一节中没有讲到的“概念”相关的知识点,包括主键默认值、包含引用。
BeX5 平台中,每个概念都有主键默认值,并且主键默认值必须唯一,不能为空。
新建一个概念时,会默认添加“guid()”表达式函数作为概念的主键默认值,但并不只有“guid()”这一个表达式函数可以作为主键默认值,其它的表达式函数或者编写一个表达式,都可以作为主键的默认值。
比如以当前日期时间作为主键默认值:toString(currentDateTime())。
BeX5 中“包含引用”就是在当前的业务模块中,引用其它业务模块中的资源,包括:概念、关系、函数(Fn)、动作(Action)等。
包含指的就是 INCLUDE;引用指的就是USE。常用的是“引用(USE)”。
在本体设计器中,单击下方的“包含/引用”页签,在该页签中,在“引用”编辑框中,单击“添加”按钮,在弹出的“选择模型”窗口中,选择一个模型资源目录。
如下图所示,单击“确定”按钮,该模型资源目录就被引入到了当前的文件所在的模型中。
例如:
引用系统的概念,需要选择“/system/ontology”;
引用系统的 Action,需要选择“/system/logic/action”;
引用系统的 Fn,需要选择“/system/logic/fn”。
最常用的两种模块引用
ksql 里面需要 join 其它模块下的概念——打开本模块 data 目录中的model.config.xml 文件,include 其它模块的 data 目录
引用其它模块下的 action——打开本模块 process 目录中的 model.config.xml 文
件,use 其它模块的 logic/action 目录
BeX5 中“关系”可以是对对象属性的抽象,“关系”可以简单看成是对表字段的抽象。
第二章“2.3.1.3 新建关系”一节,讲解了如何创建关系;
本节中,讲解关系相关知识点,包括:version 关系、关系默认值。
注意:默认值中,字符串常量用单引号引起来。
使用表达式作为关系默认值
在关系的“默认值”处,点击一下,出现一个小按钮,单击该按钮,弹出“表达式
编辑器”对话框。如下图所示:
在“表达式编辑器”对话框中,选择适当的表达式,如下图所示;也可以进行表达式嵌套
关系默认值的数据类型要和关系的类型保持一致。这里介绍一些用作关系默认值的
常用表达式:
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 自定义函数”一节
物理数据建模就是在概念和物理数据库之间建立映射关系
为什么要进行映射设置?
1. 在通常的开发中,后台程序往往都是直接访问数据库且直接操作数据库,这种方式虽然在开发的过程中,比较直接、简洁,
但是这种方式的弊端对整个项目带来的危害也是很大的,具体体现在当数据库中的表或者字段变更了以后,
开发的程序中所有与之相关的地方都要进行修改,这就增大了开发的复杂度,降低了开发出来的系统的稳定性。
2. BeX5 中数据建模这一部分,完成了一件很重要的事情,就是在模型中的概念和物理数据库之间建立起了映射,
并且这种映射是可配置的。使用 BeX5 进行项目开发,后台程序在进行数据处理时,操作的主要是概念,而不是物理数据库,
这就避免了上面提到的通常开发遇到的数据库变更引发的问题。也就是说,如果数据库中的表或者字段发生了变化,
在 BeX5 中只需要对映射文件进行配置就可以了,不必深入到程序中去修改。
这种做法,也使 BeX5 具有了跨越不同数据库的能力。
3. 映射设置就是要把数据建模中创建的概念和关系跟物理表建立起映射联系。在概念
标识和表名不同,关系标识与字段名不同,主键不叫 fID 等情况下,都需要进行映射设置。
4. 在映射设置中,还有一个比较有用的设置,就是鉴别器设置。鉴别器的作用就是在概念级别起到过滤的作用。
鉴别器设置也很简单,在映射设置界面的表映射中,有“鉴别列”和“鉴别值”两个输入框,
分别输入要进行过滤的字段名和过滤条件值就可以了。
注意:如果在鉴别器设置中,设置了某个关系作为鉴别器列的情况下,作为鉴别器列的这个关系不能再次出现在概念的关系定义中。
生成物理表就是把概念数据建模中创建的概念和关系,在数据库中生成具体的物理表。具体操作参见“2.3.2.2 生成物理表”一节 。
第二章“2.3.2.2 生成物理表”一节,讲解了如何把一个概念生成一个对应物理表,可以看成是一种正向的操作;反向生成本体,指的就是由物理表生成一个对应的概念和关系。具体操作如下
提示:目前支持 Oracle 和 MySQL 数据库表和字段的注释信息导入为概念名称和关系名称。
如果没有在 Oracle 中添加注释或者使用的是 SQL Server 数据库,在反向生成本体后,需要手工编辑
概念中文名称和关系中文名称
BeX5 平台中的 Action 描述了一个动作或者一个业务逻辑。
每个概念都拥有创建数据、保存数据、查询数据这三个动作,这些动作就称为标准动作。
其中,保存、查询这两个动作实现了概念跟数据库之间的数据交互。
说明 标准 Action 参数的属性说明
范围——public 公共参数,可以接受前台传入的值
protected 保护参数,表示可以在 process 中 has-action 时赋值
private 私有参数,表示只能在 action 声明时赋值
permission 权限参数,表示只能在角色管理中设置参数值
必须——该参数必须赋值
下表列出了查询动作的参数说明。
查询动作中使用的是 KSQL,不是 SQL,KSQL 和 SQL语法基本相同,区别是 KSQL 访问概念和关系,SQL 访问数据库表和字段。
KSQL 和 SQL 对于主键列的写法,有着很大的区别,在 KSQL 中使用概念标识作为主键列名,SQL 中直接使用主键列名
下表列出了保存动作的参数说明。
下表列出了新增动作的参数说明。
KSQL 是 Knowlog Structured Query Language 的简称。
KSQL 是一个语法上靠近 SQL-92的概念数据操作语言。
BeX5 中的 KSQL 是专门用来在 BeX5 中操作概念(Concept)和关系(Relation)的查询语言。
更多的介绍请参见 BeX5 提供的 API 文档中 KSQL 部分。
标准动作的参数值是可以编辑的。
单击参数中的“值”处的输入框,会出现一个小按钮,单击参数 select、from、condition、orderBy 后面的按钮,会弹出“KSQL 查询编辑器”窗口。如下图所示
“KSQL 查询编辑器”是通过选择概念、关系、函数的方式生成 KSQL 语句的工具,
里面包含中有四个页签,分别是“Select”、“Where”、“Order”、“Group”页签。
这四个页签的作用就是分别完成一个 KSQL 查询语句的 Select、Where、Order、Group 的部分
单击“添加关系”按钮,弹出“请选择需要查询的关系”窗口,在该窗口中,可以从现有的概念中选择添加要查询的关系,如果要添加某个概念下的所有关系,就选择该概念下的“*”号。如下图所示
如果要从两个概念中取数据,除了选择两个概念中的关系外,还需要设置两个概念之间的关联条件。如下图所示
单击 on 列中的小按钮,弹出“请配置关联条件(on)”对话框,如下图所示。
在可选关系中列出了,已经选择的概念和它们拥有的关系。
在此设置两个概念之间的关联条件,
例如:用品表的用品类型 ID 等于用品类型表的主键(主键用概念名表示)。
可以编辑查询条件,可以使用常量、变量、内存函数、KSQL 函数。如下图所示:
使用常量——方法同在 SQL 中使用常量。
使用变量——变量名前加冒号,在 bizData 组件的查询前准备参数事件onRefreshCreateParam 中通过 variables 参数给变量赋值。
使用内存函数——内存函数名前加冒号,后加一对小括号,表达式编辑器中的函数都是内存函数。
如果使用的不是系统函数,需要给 fnModal 参数赋值函数的路径。
内存函数不能作用于列,因为 KSQL 是先计算内存函数,将函数结果拼入 KSQL,再根据数据库类型翻译成相应的 SQL 发送给数据库去执行。
使用 KSQL 函数——KSQL 函数可以作用于列。
在将 KSQL 转换成 SQL 的过程中,将 KSQL函数根据不同的数据库类型,转换成不同的数据库函数。
可以编辑分组条件,可以设置 having 子句,如下图所示:
注意 标准动作queryAction不允许使用Group,因此即使设置了Group,也不会存入queryAction。
报表使用的 kSQLQueryAction 允许使用 Group,如果设置了 group by,要给 select 语句中的非 group by 关系加聚合函数,例如 sum(),否则执行动作出错。
本章要点:
简单流程
流程规则
流程事件
函数 Fn
动作 Action
Java 开发
主要从以下几个方面讲解带有流程的流程建模:简单流程、流程规则、流程事件、函数 Fn、动作 Action、Java 开发。
本节将通过开发一个简单的流程实例来详细讲解如何进行带有流程功能的流程建模,重点突出流程图的画法。
流程实例的开发过程与普通功能的开发过程类似,必要的步骤也包括:数据建模、流程建模和界面建模。
按照以下具体步骤进行开发:
本例中,在“模型资源视图”的 BIZ 目录中的“x5demo/bizDemo/ontology/”目录中,新建一个本体文件,在该本体文件中,新建一个名为“费用申请”的概念及其关系,新建的概念和关系如下图所示:然后生成数据库,添加标准动作
流程建模的非流程图部分,同“2.4 流程建模”一节。
本例中在“模型资源视图”的 BIZ 目录中的“x5demo/bizDemo/process/”目录中新建一个 Process 文件,功能目录名称为“costRequest”,显示名称为“费用申请”,如下图所示。
然后在动作设置中添加 X5_CostRequest 概念的 3 个标准动作。
在 Process 文件中画流程图,先添加一个开始环节,单击流程设计器上方的第一个圆形图标,再在小方格界面上点一下,开始环节就添加到流程图中了,或者在小方格界面上单击鼠标右键,在“新建”菜单中选择“开始”。如下图所示:
流程设计器中,流程的各个功能按钮说明如上图中“新建”菜单所示。其余的流程图按钮说明如下
在流程图中,选中开始环节,右键单击,从“新建”菜单中选择“活动环节”,来为流程图添加其它环节,如下图所示:
按照上面的方法来画流程图,然后选中一个环节,在左侧的“属性”页签中,修改环节的显示名称。添加动作设置,最终的流程图如下图所示:
流程的界面建模与普通功能的界面建模大同小异,可参见“2.5 界面建模”一节。
本例中使用了流程模板,在此重点讲解流程模板的不同之处。
在“模型资源视图”的 UI2 目录中的“x5demo/bizDemo/process/costRequest”目录下新建一个 w 文件,使用“单表流程”模板,如下图所示
在上图中,单击“下一步”按钮,进入“模板配置”界面,其中“主数据”、“详细视图”的配置与前面讲的界面建模中操作类似;“流程环节”中的配置自动生成。如下图所示
最后,单击“完成”按钮,生成界面文件,完成界面建模。界面文件目录及效果如下图所示:
接下来进行功能树配置(参见“2.6 功能树配置”一节)、分配权限(参见“2.7 分配权限”一节)的操作,就可以运行系统了,运行效果如下图所示
BeX5 流程的规则有多种,有设置在流程上的规则,也有设置在环节上的规则。
本节中重点介绍流程上的规则之启动规则、环节上的规则之执行规则、转发规则、流转规则和回退规则
启动规则主要用于设置流程的任务标题和设置使用的流程模板。
本例中在“模型资源视图”的 BIZ 目录中的“x5demo/bizDemo/process/costRequest/costRequestProcess.process.m”流程文件中,不选环节,点击流程图空白处,左侧列出流程的属性和事件。为流程添加一个启动规则,如下图所示:
任务标题的表达式设置为 concat(currentPersonName(),currentProcessLabel()),流程启动后及流转后的任务标题如下图所示。
设置流程模板能实现什么?
BeX5 的流程中一直没有提供流程版本,现在可以使用流程模板实现比流程版本更强的能力。
当没有设置流程模板的时候,系统使用 process 文件中定义的流程图运行流程;
设置了流程模板之后,系统将使用设置的流程模板来运行流程,这样就实现了流程版本的能力。
如果设置不同部门或者不同的人,拥有不同的流程模板,就可以实现每个人启动不同的流程版本了。
如何设置流程模板?
1) 打开后台项目的协同平台——任务管理——流程模板管理功能,配置流程模板,并将流程模板分配给相应的组织。
2) 点流程模板右边的选择按钮,弹出表达式编辑器,在流程模板函数中选择一个合适的函数
执行规则主要用于限定本环节的执行者和设置任务协作方式。本节介绍执行规则各个参数及其意义。
本例中在“模型资源视图”的 BIZ 目录中的“x5demo/bizDemo/process/costRequest/ costRequestProcess.process.m”流程文中,选中一个环节,左侧列出该环节的属性和事件。
为其添加一个执行规则,如下图示:
一个环节可以设置多个执行规则,在若干个执行规则中,至少有一个执行规则的“生效条件”为“true”。执行规则基本信息中的参数介绍如下
生效条件
可以直接设置为 boolean 值 true 或者 false,也可以单击后面的“选择”按钮,在弹出的“表达式编辑器”中,编辑一个表达式作为生效条件。
如何编辑表达式,请参见“4.4 函数 Fn”一节。首环节的执行规则,平台默认生成了表达式 isStartingProcess()作为生效条件,如果不是首环节执行规则,默认生成的生效条件是 boolean 值 true 。
任务标题
平台默认生成的任务标题是“环节名称+流程名称”,如“职员申请:费用申请”。任务标题可以自定义,单击后面的“选择”按钮,在弹出的“表达式编辑器”中,编辑一个表达式作为任务标题,在 BeX5 的表达式中,常量也被认为是常量表达式。如何编辑表达式,请参见“4.4 函数 Fn”一节。
打开后自动流转
选中该项,则该环节不需要手动流转,打开后,就自动流转
执行者
执行者属性是为流程环节设置执行者,执行者的类型可以是人员、岗位和部门。
执行者表达式,用来生成流程环节的执行者,执行者表达式可以组合选用平台提供的组织函数,也可以自定义函数,来取得执行者。
如何编辑表达式,请参见“4.4 函数 Fn”一节。如何自定义函数,请参见“4.4.2 自定义函数”一节。执行者范围表达式,用来生成可供用户选择的执行者的范围。
执行者范围表达式可以组合选用平台提供的组织函数,也可以自定义函数,来取得执行者范围。
任务协作
任务协作设置的是当流程的某个环节流转给多个执行者的时候,多个执行者如何协作对流程进行处理。
任务协作的子属性包括任务分配模式、执行模式、抢占模式,
转发规则就是为流程如何转发设置的规则。转发规则与执行规则大同小异,区别在于生效的时机不同和环节的转换不同,少数属性不同。
执行规则是当流程流转时生效,且流转后当前环节发生变化;
转发规则是当流程转发时生效,且当前环节不变。
在“模型资源视图”的 BIZ 目录中的“x5demo/bizDemo/process/costRequest/costRequestProcess.process.m”流程文件中,选中一个环节,为其添加一个转发规则,如下图所示:
流转规则就是设置流程如何流转的规则。在“模型资源视图”的 BIZ 目录中的“x5demo/bizDemo/process/costRequest/ costRequestProcess.process.m”流程文件中,选中一个环节,为其添加一个流转规则,如下图所示
回退规则就是为流程回退时设置的规则。回退规则类似于流转规则。在“模型资源视图”的 BIZ 目录中的“x5demo/bizDemo/process/costRequest/costRequestProcess.process.m”流程文件中,选中一个环节,为其添加一个回退规则,如下图所示:
流程事件,指的是在流程的执行过程中有若干个时机点,如流程流转前、流转后,在这些时机点上可以执行的操作。常用的流程事件,按照作用范围可以分为 Process 中的事件、Activity 中的事件和 Action 中的事件,也可以把它们看做流程的全局事件和局部事件
Process 中的事件也可以看做是流程的全局事件。在“模型资源视图”的 BIZ 目录中,打开“x5demo/bizDemo/process/costRequest/ costRequestProcess.process.m”流程文件,不选环节,点击流程图空白处,左侧列出流程的属性和事件。选中“事件”选项卡,如下图所示:
Process 中的事件,按照流程的动作类型划分可以分为十类:
开始、流转、回收、定制流程、转发、回退、中止、暂停、唤醒、结束;
按照事件执行时机类型划分可以分为两大类:执行前和执行后。
在事件后面的“事件值”处双击,就会在 Process 文件所在目录下生成一个 Java 文件,Java 文件中生成该事件对应Java 方法。
本例中以onAfterFinish 事件为例说明,如下图所示:
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);
}
}
Activity 事件的 Java 方法代码跟 Process 事件的 Java 方法代码在同一个文件中。
Activity 事件的 Java 代码,如下图所示
在流转时获取下一个环节的执行者,是在流程中较为常用的功能,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 中的事件分类及说明如下所示
分类 事件 说明
Action 中的事件的 Java 方法代码跟 Process 事件的 Java 方法代码在同一个文件中。Action 中的事件的 Java 代码,如下图所示:
在 BeX5 中,常用的函数按照作用可分为:默认值表达式函数、KSQL 内存函数、条件表达式函数、执行者表达式函数四种;
按照类型又可分为:通用函数、数据函数、模型函数、组织函数和流程函数五类。
在实际使用中,这两种分法会出现交叉,但并不影响对表达式的理解和使用。
默认值表达式函数用于设置关系的默认值,例如生成订单编号;
KSQL 内存函数用于 KSQL 查询编辑器中和 bizData 的 Filter 属性中;
条件表达式主要用于条件的比较判断,比如流程中条件分支环节就需要条件表达式来判断;
执行者表达式主要用于流程中获取执行者和执行者范围,主要使用组织函数
BeX5 中提供的函数,既可以单独使用,又可以组合使用;有的函数是无参数的,有的函数是有参数的。根据具体的需求,选择或者组合使用适当的表达式。
使用表达式编辑器完成选择函数,输入参数的工作。表达式编辑器功能十分强大,既可以直接选择函数使用,也可以进行表达式的编辑。表达式编辑器如下图所示:
表达式编辑器的使用
功能按钮
值比较
注意 使用表达式时,需注意以下几点:
1、 所有的字符常量都必须用英文的单引号引起来
2、 值比较直接使用比较操作符,>、=、<、>=、<=
3、 用 NOT 或者<> 表示不等于
BeX5 中的函数由 Java 文件、Fn 文件组成,Java 文件作为函数功能的底层实现,提供 Java 方法接口,Java 文件又分为动态和静态两种,分别存放在 logic/code 目录下的dsrc 和 src 目录下;
Fn 文件是 Xml 格式的文件,对 Java 方法进行了包装,提供非 Java的外部使用的接口。平台提供的函数就是通过这种方式实现的,如下图所示
BeX5 中函数的开发归纳起来,分为两个部分:Java 文件的开发、Fn 文件的开发。用户如果要自定义函数,也需要完成这两件事情。
自定义函数的具体步骤如下:
在 BIZ 层的业务模块目录下的 logic 目录下新建一个目录,本例中,在“模型资源视图”的 BIZ 目录中的“x5demo/baseDemo/logic/”目录上,单击鼠标右键,选择“新建”->“文件夹”,新建一个目录,命名为 fn,且只能命名为 fn。如下图所示:
在弹出的对话框中,命名 fn
Fn 文件对 Java 代码进行了包装,使面向 Java 的开发接口,转变为面向函数的接口。
Fn 文件中定义函数调用的 Java 方法及参数。
Fn 文件创建在 BIZ 层业务模块目录下的logic/fn 目录下。
本例中,在“模型资源视图”的 BIZ 目录中的“x5demo/baseDemo/logic/fn”目录上,单击鼠标右键,选择“新建”->“Fn 文件”,在弹出的“新建 Fn 文件”窗口中,输入文件名,单击“完成”按钮即可。新建 Fn 文件如下图所示
在新创建的 Fn 文件中添加函数定义,如下图所示。
函数基本信息中各个属性的意义解释如下
在“模型资源视图”的 BIZ 目录中的“x5demo/baseDemo/logic/code”目录上,单击鼠标右键,选择“新建”->“文件夹”,创建 dsrc 目录:
在“模型资源视图”的 BIZ 目录中的“x5demo/baseDemo/logic/code/dsrc”目录上,单击鼠标右键,选择“新建”->“Java 文件”,如下图所示:
在弹出的“新建 Java 文件”窗口中,输入 Java 类名,在 dsrc 下建的是动态 Java文件,不需要包名,单击“完成”按钮,如下图所示,创建了一个动态 Java 文件。
接下来,在新建的 Java 文件中编辑 Java 代码,这与通常的 Java 开发一样,但是,开发中使用的工具类是 BeX5 平台提供的,在 BeX5 中如何进行 Java 开发,请参见“4.6 Java开发”一节。
本例中,在新建的 Java 文件中,添加代码,如下图所示
至此,完成了自定义函数的开发
使用静态 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 提供的函数的使用方法一样,通过以下配置,自定义函数会按照其定义的分类出现在表达式编辑器的函数列表中
2. 使用自定义函数
在本体文件中引入自定义函数模块之后,在表达式编辑器的函数列表中,就可以看到自定义的函数了。
本例中,把自定义函数作为关系默认值来使用。在“模型资源视图”的 BIZ 目录中,打开“x5demo/baseDemo/ontology/base.ontology.m”本体文件,进入“概念模型”界面,选中“客户编码”这个关系,选择自定义函数作为其默认值。如下图所示:
3. 查看效果
打开客户信息功能,单击“新增”按钮,在客户编码中填入了目前最大的客户编码,界面效果如下:
Action 是什么?
BeX5 中 Action 作用是什么?
Action 是 BeX5 中 UI 层和 BIZ 层相互通信的唯一途径。Action 封装了一定的业务逻辑
BeX5 中 Action 运行原理是什么?
使用 BeX5 开发系统,Action 的使用是很频繁的。BeX5 平台中提供了许多有用的 Action,实际开发中,这些 Action 经常被用到。
本节中简要介绍几个常用的Action,更多的 Action 请参见 BeX5“模型资源视图”中 BIZ/system/logic/action、BIZ/SA/opm/logic/action 两个目录下的 Action。
开发者如果要引用平台提供的 Action 或者是其它应用中定义的 Action,需要在当前业务模块中的 ontology 文件中引入该 Action 所对应的概念模型文件所在的目录,在 process 文件中引入该 Action 的定义文件所在目录及 Java 代码所在目录,也就是 logic/action、logic/code 这两个目录需要被引入到当前业务模块中。如何进行资源的引用,请参见“3.1.1 概念”一节中“包含引用”这一部分。
讲完了 Action 的运行原理,下面介绍如何自定义 Action。
由 BeX5 中 Action的定义可知,自定义 Action 需要涉及三个文件:Action 文件、Procedure 文件、Java 文件。
这 3 个文件都在 logic 目录下,其中 Action 文件、Procedure 文件在logic/action 目录下;Java 文件在 logic/code 目录下。
Action 文件创建在 BIZ 层的业务模块目录下的 logic/action 目录中。本例中,在“模型资源视图”的 BIZ 目录中的“x5demo/baseDemo/logic/action”目录上,单击鼠标右键,选择“新建”->“Action 文件”,如下图所示:
在弹出的“新建 Action 文件”窗口中,输入文件名称,本例中输入“test”,单击“完成”按钮,就创建了新的 Action 文件。
在 Action 文件的“设计”界面中,单击左上角的“添加”按钮,添加一个新的 Action,在右侧的“基本信息”中,输入名称和标识,标识在调用 Action 时是必填的,不能使用中文,本例中输入的标识是“testParaAction”。
“是否是全局”选项表示该 Action 是否是全局的 Action,如果选中是全局,则表示,该 Action 不需要在 Process 文件中引入,就可以被使用,如果不是全局的,则必须先在 Process 文件的动作设置中引用该Action,才能被使用。此处不选中。如下图所示:
“基本信息”配置完成后,在下面的“参数列表”中,单击“添加”按钮,添加参数。本例中,添加的参数名称为 ksql,范围选择 public,类型选择 String。如下图所示
定义完成后,单击“生成”按钮,弹出生成 Procedure 窗口,如下图所示:单击“确定”按钮生成 Procedure。
生成 procedure 后,单击“代码”按钮,会自动跳转到代码页面,我们添加几行简单的代码,如下图所示
至此,自定义开发 Action 结束。
如何使用自定义的 Action?
自定义 Action 后,接下来可以在 UI 界面或者流程中使用自定义的 Action。自定义
的 Action 的使用方法跟 BeX5 提供的 Action 的使用方法一样。
UI 层如何调用自定义 Action,具体请参见“5.4 Action 调用”一节。
流程中如何引用自定义 Action,具体请参见“2.4.2 动作设置”一节。
Action 的参数范围有 4 种类型,分别是 public、protected、private 和 permission。
其中 public 类型的参数可以在界面调用 Action 时赋值,具体请参见“5.4 Action 调用”一节;
private 类型的参数在 action 声明时赋值,不再在其它地方赋值;permission 类型的参数在角色管理功能中设置,具体请参见《BeX5 管理员使用手册.doc》。
下面介绍 protected 类型的参数的赋值方法。打开 process 文件,进入动作设置窗
口,如下图所示。
选中一个动作,单击参数设置中的“添加”按钮,出现如下图所示对话框。
选中要赋值的参数后,单击“确定”按钮返回。如下图所示,在“值”中输入相应的内容即可。
单击“确定”按钮完成参数的赋值。
在 BeX5 中 Java 开发是很常见、很重要的开发,首先就要求开发者有一定的 Java 开发基础,才能在 BeX5 中有效地进行 Java 开发
Java 在 BeX5 中起什么作用?
Java 在 BeX5 中起三个方面的作用:Java 代码是 BeX5 底层实现的主要代码载体;
Java在 BeX5 中可以实现业务逻辑的开发;Java 可以在 BeX5 平台上进行扩展开发。
在 BeX5 中如何进行 Java 开发?
提示:开发 Java 时,请先将系统目录/BIZ/system/logic/code/dsrc 设置为源码路径。
本例中,在“模型资源视图”的 UI2 模型目录中,右键单击“x5demo/baseDemo/process/customInfo”
目录,选择“新建”->“W 文件”,如下图所示:
在弹出的“新建 W 向导”对话框中,“移动”下面的模板是适合手机的模板,“桌 面”下面的模板是适合 PC 的模板。
现在要开发 PC 界面,因此选择“桌面-列表/详细-单表-列表+详细(标签页)”,单击“下一步”按钮。如下图所示:
在“模板配置”界面中,选择主数据,单击“概念(concept)”后面的”选择”按钮,在弹出的对话框中选择界面上要访问的概念,
如果将概念中的关系全取到界面上,则不需要设置“关系(columns)”;
如果只取概念中的某些关系,则需要单击“关系(columns)”后面的”选择”按钮,在弹出的对话框中选择需要的关系,version 关系一定要选上,单击“确定”按钮。如下图所示:
在“列表视图”中,添加列表中显示的列。
单击“新增”按钮,在弹出的对话框中,选择要显示的列,version 关系不必选,单击“确定”按钮,如下图所示:
在 “详细视图”中,添加详细页中显示的数据项。
单击“添加关系”按钮,在弹出的对话框中,选择要显示的数据项,version 不必选,单击“确定”按钮,关闭对话框。
把当前文件名后缀添加.m
如下图
最后,单击“完成”按钮,完成界面建模。如下图所示:
访问: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(系统默认测试账号)
鼠标右滑,点开功能页,滑动到最下方,查看创建的页面。可以进行增删改查的操作
本例中,在“模型资源视图”的 UI2 模型目录中,右键单击“x5demo/baseDemo/process/customInfo”
目录,选择“新建”->“W 文件”,如下图所示:
选中window,查看右方控件,我们要添加一个页面,所以双击布局下面的contents,至此左上方window下面就出现了一个contents1.