x5.2.7高级开发手册


X5 高级开发手册 2011 Justep Corp. 第 1 页 共 273 页 起 步 科 技 X5 平台手册 —高级开发手册 2011 年 07 月 北京起步科技有限公司 Beijing Justep Software Co,Ltd. www.justep.co m X5 高级开发手册 2011 Justep Corp. 第 2 页 共 273 页 起 步 科 技 目 录 第一篇 业务模型........................................................................................................................................................... 11 第 1 章 业务模型概述 ................................................................................................................................................. 11 1.1 概述 .................................................................................................................................................................... 11 1.2 业务模型的组织 ............................................................................................................................................ 11 1.2.1 业务模型的构成 .................................................................................................................................. 11 1.2.2 业务模型文件 ....................................................................................................................................... 12 1.3 业务模块........................................................................................................................................................... 12 1.3.1 业务模块定义 ....................................................................................................................................... 12 1.3.2 业务模块的引用 .................................................................................................................................. 13 1.4 业务模型发布 ................................................................................................................................................. 13 第 2 章 业务本体........................................................................................................................................................... 14 2.1 概述 .................................................................................................................................................................... 14 2.2 关系 .................................................................................................................................................................... 14 2.2.1 关系的定义 ............................................................................................................................................ 14 2.3 概念 .................................................................................................................................................................... 15 2.3.1 概念的定义 ............................................................................................................................................ 15 第 3 章 业务数据........................................................................................................................................................... 17 3.1 概述 .................................................................................................................................................................... 17 3.2 数据模块定义 ................................................................................................................................................. 17 3.2.1 数据连接 ................................................................................................................................................. 17 3.2.2 存取设置 ................................................................................................................................................. 17 3.2.3 映射定义 ................................................................................................................................................. 18 第 4 章 业务逻辑........................................................................................................................................................... 20 4.1 概述 .................................................................................................................................................................... 20 4.2 Action 定义 ...................................................................................................................................................... 20 4.3 Procedure 定义 ............................................................................................................................................... 21 4.4 Fn 定义 .............................................................................................................................................................. 21 4.5 Java 代码 ........................................................................................................................................................... 22 第 5 章 业务流程........................................................................................................................................................... 23 5.1 概述 .................................................................................................................................................................... 23 5.2 业务流程定义 ................................................................................................................................................. 24 5.2.1 启动规则 ................................................................................................................................................. 24 5.2.2 通知规则 ................................................................................................................................................. 24 5.3 业务流程环节 ................................................................................................................................................. 24 5.3.1 静态环节 ................................................................................................................................................. 24 5.3.2 开始环节 ................................................................................................................................................. 25 5.3.3 结束环节 ................................................................................................................................................. 25 5.3.4 活动环节 ................................................................................................................................................. 26 5.3.5 自动环节 ................................................................................................................................................. 26 5.3.6 条件环节 ................................................................................................................................................. 27 5.3.7 条件分支环节 ....................................................................................................................................... 27 5.3.8 AND 环节 ................................................................................................................................................ 28 5.3.9 XOR 环节 ................................................................................................................................................. 29 5.4 业务流程规则 ................................................................................................................................................. 30 X5 高级开发手册 2011 Justep Corp. 第 3 页 共 273 页 起 步 科 技 5.4.1 启动规则 ................................................................................................................................................. 30 5.4.2 通知规则 ................................................................................................................................................. 31 5.4.3 执行规则 ................................................................................................................................................. 33 5.4.4 流转规则 ................................................................................................................................................. 35 5.4.5 回退规则 ................................................................................................................................................. 37 5.4.6 转发规则 ................................................................................................................................................. 38 5.4.7 合并规则 ................................................................................................................................................. 38 5.4.8 分支规则 ................................................................................................................................................. 39 5.5 业务流程执行者 ............................................................................................................................................ 39 5.5.1 基于组织机构的执行者函数 .......................................................................................................... 40 5.5.2 基于业务流程的执行者函数 .......................................................................................................... 41 5.5.3 其他执行者函数 .................................................................................................................................. 41 5.5.4 执行者函数的扩展 ............................................................................................................................. 42 5.6 业务流程与业务数据 .................................................................................................................................. 42 5.6.1 sData ......................................................................................................................................................... 42 5.6.2 业务流程变量(不支持) ............................................................................................................... 43 5.6.3 业务表达式 ............................................................................................................................................ 43 5.7 业务流程动作 ................................................................................................................................................. 44 5.7.1 启动........................................................................................................................................................... 44 5.7.2 流转........................................................................................................................................................... 45 5.7.3 回退........................................................................................................................................................... 45 5.7.4 转发........................................................................................................................................................... 46 5.7.5 终止........................................................................................................................................................... 47 5.7.6 暂停........................................................................................................................................................... 47 5.7.7 恢复........................................................................................................................................................... 48 5.7.8 处理........................................................................................................................................................... 48 5.7.9 定制........................................................................................................................................................... 48 5.8 业务流程事件 ................................................................................................................................................. 49 5.8.1 业务过程级事件 .................................................................................................................................. 49 5.8.2 业务环节级事件 .................................................................................................................................. 50 5.8.3 业务流程事件的函数 ........................................................................................................................ 51 5.9 业务动作........................................................................................................................................................... 51 5.9.1 全局的业务动作 .................................................................................................................................. 51 5.9.2 业务过程级的业务动作 .................................................................................................................... 51 5.9.3 业务环节级的业务动作 .................................................................................................................... 52 5.9.4 业务动作的事件 .................................................................................................................................. 52 5.10 业务流程运行 ................................................................................................................................................. 53 5.10.1 运行框架 ................................................................................................................................................. 53 5.10.2 运行过程 ................................................................................................................................................. 54 5.10.3 ProcessControl ....................................................................................................................................... 55 5.10.4 ProcessControlItem .............................................................................................................................. 56 5.11 业务流程实例 ................................................................................................................................................. 56 5.11.1 流程实例和任务 .................................................................................................................................. 56 5.11.2 Task 对象 ................................................................................................................................................. 57 5.11.3 任务表(SA_Task) ............................................................................................................................ 57 X5 高级开发手册 2011 Justep Corp. 第 4 页 共 273 页 起 步 科 技 5.11.4 任务关系表(SA_TaskRelation) .................................................................................................. 58 5.11.5 Token 表(SA_TokenInstance) ..................................................................................................... 58 5.11.6 ProcessControl 表(SA_ProcessControl) .................................................................................. 59 5.11.7 ProcessTemplate 表(SA_ProcessTemplate) ........................................................................... 59 5.12 业务流程 UI ..................................................................................................................................................... 60 5.12.1 UI 层实现机制 ...................................................................................................................................... 60 5.12.2 流程组件(process)............................................................................................................................ 60 5.12.3 流程工具栏组件(processBar) ................................................................................................... 62 5.12.4 流程图组件 ............................................................................................................................................ 63 5.12.5 流转对话框 ............................................................................................................................................ 63 第 6 章 组织机构........................................................................................................................................................... 65 6.1 概述 .................................................................................................................................................................... 65 6.2 机构 .................................................................................................................................................................... 66 6.3 部门 .................................................................................................................................................................... 66 6.4 岗位 .................................................................................................................................................................... 66 6.5 人员 .................................................................................................................................................................... 66 6.6 角色和授权 ...................................................................................................................................................... 67 6.6.1 权限........................................................................................................................................................... 69 6.7 管理权限........................................................................................................................................................... 69 6.8 分级授权........................................................................................................................................................... 70 6.9 组织机构管理的分级 .................................................................................................................................. 71 6.10 权限管理的分级 ............................................................................................................................................ 71 6.11 代理 .................................................................................................................................................................... 71 6.11.1 代理的收回 ............................................................................................................................................ 72 6.12 组织机构相关本体定义及其物理表结构 ........................................................................................... 72 6.12.1 组织机构表(SA_OPOrg) .............................................................................................................. 73 6.12.2 人员表(SA_OPPerson) ................................................................................................................ 73 6.12.3 角色表(SA_OPRole) ...................................................................................................................... 74 6.12.4 代理表(SA_OPAgent) ................................................................................................................... 75 6.12.5 管理权限类型表(SA_OPManageType) ................................................................................. 75 6.12.6 授权表(SA_OPAuthorize) ........................................................................................................... 75 6.12.7 权限表(SA_OPPermission)........................................................................................................ 76 6.12.8 管理权限表(SA_OPManagement) .......................................................................................... 76 6.12.9 分级授权表(SA_OPRoleManagement) ................................................................................. 77 6.13 扩展配置........................................................................................................................................................... 77 6.13.1 密码模式 ................................................................................................................................................. 77 6.13.2 组织节点类型 ....................................................................................................................................... 78 第 7 章 高级特性........................................................................................................................................................... 83 7.1.1 定义扩展属性 ....................................................................................................................................... 83 7.1.2 使用扩展属性 ....................................................................................................................................... 83 7.1.3 获取扩展属性值 .................................................................................................................................. 83 第二篇 界面模型........................................................................................................................................................... 84 第 1 章 界面模型概述 ................................................................................................................................................. 84 1.1 概述 .................................................................................................................................................................... 84 1.2 界面模型的组织 ............................................................................................................................................ 84 X5 高级开发手册 2011 Justep Corp. 第 5 页 共 273 页 起 步 科 技 1.2.1 模型的构成 ............................................................................................................................................ 84 1.2.2 .W 文件 .................................................................................................................................................... 84 1.2.3 .J 文件 ...................................................................................................................................................... 84 1.2.4 JS 文件...................................................................................................................................................... 85 1.2.5 CSS 文件 .................................................................................................................................................. 85 1.2.6 布局文件 ................................................................................................................................................. 87 1.3 运行机制........................................................................................................................................................... 87 1.4 与业务模型的关系 ....................................................................................................................................... 87 1.4.1 Action 调用 ............................................................................................................................................ 88 第 2 章 多终端类型支持 ............................................................................................................................................ 91 2.1 概述 .................................................................................................................................................................... 91 2.2 UI 和 MobileUI................................................................................................................................................ 92 第 3 章 .W ......................................................................................................................................................................... 93 3.1 概述 .................................................................................................................................................................... 93 3.2 组件 .................................................................................................................................................................... 93 3.2.1 概述........................................................................................................................................................... 93 3.2.2 运行机制 ................................................................................................................................................. 93 3.2.3 结构........................................................................................................................................................... 94 3.2.4 组件开发 ................................................................................................................................................. 94 3.2.5 组件使用 ................................................................................................................................................. 98 3.3 布局 .................................................................................................................................................................... 98 3.4 继承 .................................................................................................................................................................... 99 3.4.1 继承语法 ................................................................................................................................................. 99 3.5 Window ........................................................................................................................................................... 102 3.5.1 view ........................................................................................................................................................ 102 3.5.2 layout ...................................................................................................................................................... 103 3.5.3 place ........................................................................................................................................................ 103 3.5.4 resource ................................................................................................................................................ 104 3.6 Model ............................................................................................................................................................... 104 3.7 Data ................................................................................................................................................................... 104 3.7.1 bizData 组件 ........................................................................................................................................ 104 3.7.2 data 组件 ............................................................................................................................................... 111 3.8 Grid.................................................................................................................................................................... 112 3.8.1 Grid 组件 .............................................................................................................................................. 112 3.9 其他常用组件 ............................................................................................................................................... 117 3.9.1 Input ....................................................................................................................................................... 117 3.9.2 Select....................................................................................................................................................... 118 3.9.3 dialog、windowDialog、windowReceiver 等 ....................................................................... 118 第 4 章 .J ......................................................................................................................................................................... 119 4.1 概述 .................................................................................................................................................................. 119 4.2 组成及使用 .................................................................................................................................................... 119 第 5 章 Portal ................................................................................................................................................................ 121 5.1 概述 .................................................................................................................................................................. 121 5.2 config.js 文件配置说明 ............................................................................................................................. 121 5.2.1 布局的配置 .......................................................................................................................................... 121 X5 高级开发手册 2011 Justep Corp. 第 6 页 共 273 页 起 步 科 技 5.2.2 默认页面配置 ..................................................................................................................................... 123 5.2.3 功能树快捷方式 ................................................................................................................................ 124 5.2.4 提示区域配置 ..................................................................................................................................... 124 5.2.5 主题配置 ............................................................................................................................................... 125 5.3 自定义主题 .................................................................................................................................................... 126 5.4 部件(widget)的开发............................................................................................................................. 126 5.5 与第三方集成 ............................................................................................................................................... 129 5.5.1 第三方直接登陆 X5 的门户 .......................................................................................................... 129 5.5.2 第三方直接打开 X5 的功能 .......................................................................................................... 129 第 6 章 新 Portal .......................................................................................................................................................... 130 6.1 概述 .................................................................................................................................................................. 130 6.2 目录结构和文件介绍 ................................................................................................................................ 130 6.2.1 .w 文件 ................................................................................................................................................... 130 6.2.2 .j 文件 ..................................................................................................................................................... 130 6.3 组件说明......................................................................................................................................................... 132 6.3.1 数据状态组件 ..................................................................................................................................... 132 6.3.2 表现组件 ............................................................................................................................................... 136 第 7 章 高级特性......................................................................................................................................................... 137 7.1 扩展空间......................................................................................................................................................... 137 7.1.1 使用场景 ............................................................................................................................................... 137 7.1.2 规则......................................................................................................................................................... 137 7.1.3 实现原理 ............................................................................................................................................... 137 7.1.4 限制......................................................................................................................................................... 137 第三篇 报表模型......................................................................................................................................................... 138 第 1 章 概述 .................................................................................................................................................................. 138 第 2 章 开发指南......................................................................................................................................................... 139 2.1 扩展函数......................................................................................................................................................... 139 2.1.1 扩展的概念 .......................................................................................................................................... 139 2.1.2 select()、selecth()函数 .................................................................................................................... 141 2.1.3 group()、grouph()函数 .................................................................................................................... 142 2.2 运算函数......................................................................................................................................................... 143 2.2.1 sum()函数 ............................................................................................................................................. 143 2.2.2 avg()函数 ............................................................................................................................................... 143 2.2.3 max()函数 ............................................................................................................................................. 144 2.2.4 min()函数 .............................................................................................................................................. 144 2.2.5 count()函数 .......................................................................................................................................... 144 2.2.6 运算区域的设置 ................................................................................................................................ 145 2.2.7 表达式 .................................................................................................................................................... 147 2.3 属性(批注) ............................................................................................................................................... 148 2.3.1 全局属性 ............................................................................................................................................... 148 2.3.2 行属性 .................................................................................................................................................... 149 2.3.3 列属性 .................................................................................................................................................... 150 2.3.4 格属性 .................................................................................................................................................... 151 2.4 显示 .................................................................................................................................................................. 151 2.4.1 显示格式、边框、对齐、字体 ................................................................................................... 151 X5 高级开发手册 2011 Justep Corp. 第 7 页 共 273 页 起 步 科 技 2.4.2 显示扩展 ............................................................................................................................................... 152 2.5 组件 .................................................................................................................................................................. 154 2.5.1 数据组件 ............................................................................................................................................... 154 2.5.2 报表组件 ............................................................................................................................................... 155 2.5.3 图表组件 ............................................................................................................................................... 156 2.5.4 报表工具栏组件 ................................................................................................................................ 158 2.6 服务器配置 .................................................................................................................................................... 159 2.6.1 服务器映射 .......................................................................................................................................... 159 2.6.2 服务器日志 .......................................................................................................................................... 159 第 3 章 报表示例......................................................................................................................................................... 160 3.1 网格报表......................................................................................................................................................... 160 3.1.1 普通网格报表 ..................................................................................................................................... 160 3.1.2 横向扩展网格报表 ........................................................................................................................... 161 3.2 分组报表......................................................................................................................................................... 162 3.2.1 一级分组报表 ..................................................................................................................................... 162 3.2.2 二级分组报表 ..................................................................................................................................... 163 3.2.3 二级分组报表(行统计) ............................................................................................................. 164 3.2.4 二级分组报表(行列统计) ........................................................................................................ 165 3.2.5 二级分组报表(分组统计) ........................................................................................................ 166 3.3 交叉报表......................................................................................................................................................... 167 3.3.1 二维交叉报表 ..................................................................................................................................... 167 3.3.2 多维交叉报表 ..................................................................................................................................... 168 3.3.3 二维交叉报表(行列统计) ........................................................................................................ 169 3.3.4 多维交叉报表(行统计) ............................................................................................................. 170 3.3.5 多维交叉报表(行列统计) ........................................................................................................ 171 3.4 卡片报表......................................................................................................................................................... 173 3.5 主从报表......................................................................................................................................................... 174 3.5.1 普通主从报表 ..................................................................................................................................... 174 3.5.2 分组主从报表 ..................................................................................................................................... 175 3.6 多源关联分片报表 ..................................................................................................................................... 176 3.6.1 多源交叉报表 ..................................................................................................................................... 176 3.6.2 多源纵向分片报表 ........................................................................................................................... 177 3.6.3 多源横向分片报表 ........................................................................................................................... 178 3.6.4 多源双向分片报表 ........................................................................................................................... 179 3.6.5 报表图表混合表 ................................................................................................................................ 180 3.7 报表特性......................................................................................................................................................... 182 3.7.1 递增序号 ............................................................................................................................................... 182 3.7.2 单元格扩展 .......................................................................................................................................... 183 3.7.3 行列隐藏 ............................................................................................................................................... 184 3.7.4 排序与条件过滤 ................................................................................................................................ 186 3.7.5 报表链接 ............................................................................................................................................... 186 3.7.6 图片链接 ............................................................................................................................................... 187 3.7.7 条形码 .................................................................................................................................................... 188 3.8 报表运算......................................................................................................................................................... 188 3.8.1 合计值 .................................................................................................................................................... 188 X5 高级开发手册 2011 Justep Corp. 第 8 页 共 273 页 起 步 科 技 3.8.2 平均值 .................................................................................................................................................... 188 3.8.3 占比......................................................................................................................................................... 189 第 4 章 图表示例......................................................................................................................................................... 190 4.1 饼图 .................................................................................................................................................................. 190 4.2 垂直柱图......................................................................................................................................................... 191 4.3 水平柱图......................................................................................................................................................... 193 4.4 折线图 ............................................................................................................................................................. 194 4.5 面积图 ............................................................................................................................................................. 195 4.6 时序图 ............................................................................................................................................................. 196 4.7 仪表盘 ............................................................................................................................................................. 198 4.8 甘特图 ............................................................................................................................................................. 198 4.9 雷达图 ............................................................................................................................................................. 199 4.10 图表特性......................................................................................................................................................... 200 4.10.1 累计对比分析 ..................................................................................................................................... 200 4.10.2 图表链接 ............................................................................................................................................... 201 第 5 章 导出与打印 .................................................................................................................................................... 204 5.1 导出方式......................................................................................................................................................... 204 5.2 打印设置......................................................................................................................................................... 204 5.3 分页打印......................................................................................................................................................... 206 5.3.1 网格报表分页 ..................................................................................................................................... 206 5.3.2 分组报表分页 ..................................................................................................................................... 207 5.4 分栏打印......................................................................................................................................................... 208 5.5 整体显示......................................................................................................................................................... 209 第 6 章 附录 .................................................................................................................................................................. 210 6.1 报表批注......................................................................................................................................................... 210 6.2 图表类型......................................................................................................................................................... 211 6.3 图表公有参数 ............................................................................................................................................... 212 6.4 图表私有参数 ............................................................................................................................................... 214 6.4.1 饼图......................................................................................................................................................... 214 6.4.2 柱图......................................................................................................................................................... 216 6.4.3 线图......................................................................................................................................................... 219 6.4.4 xy 线图 ................................................................................................................................................... 221 6.4.5 面积图 .................................................................................................................................................... 224 6.4.6 时序图 .................................................................................................................................................... 227 6.4.7 甘特图 .................................................................................................................................................... 230 6.4.8 雷达图 .................................................................................................................................................... 232 6.4.9 仪表盘 .................................................................................................................................................... 232 第四篇 Studio ............................................................................................................................................................... 238 第 1 章 概述 .................................................................................................................................................................. 238 第 2 章 Studio 配置 .................................................................................................................................................... 239 2.1 JS 库配置 ........................................................................................................................................................ 239 2.2 Tomcat 配置 ................................................................................................................................................... 240 2.3 编辑器配置 .................................................................................................................................................... 241 2.4 数据源配置 .................................................................................................................................................... 241 2.5 服务器配置 .................................................................................................................................................... 242 X5 高级开发手册 2011 Justep Corp. 第 9 页 共 273 页 起 步 科 技 第 3 章 模板向导开发 ............................................................................................................................................... 243 3.1 模板向导目录结构以及配置 .................................................................................................................. 243 3.2 模板向导开发案例 ..................................................................................................................................... 244 3.2.1 Template.cfg 配置文件 .................................................................................................................... 245 3.2.2 配置页面的开发 ................................................................................................................................ 245 3.2.3 Handler 的开发 ................................................................................................................................... 247 3.2.4 案例效果图 .......................................................................................................................................... 248 3.3 平台提供的配置页 ..................................................................................................................................... 249 3.3.1 Data 配置相关 .................................................................................................................................... 249 3.3.2 列表(Grid)配置相关 ................................................................................................................... 252 3.3.3 树配置 .................................................................................................................................................... 252 3.3.4 详细页配置 .......................................................................................................................................... 253 3.3.5 流程配置 ............................................................................................................................................... 254 3.3.6 其他配置页面 ..................................................................................................................................... 255 3.4 平台提供的 Handler ................................................................................................................................... 255 3.4.1 流程结束处理 Handler .................................................................................................................... 255 3.4.2 其他 Handler........................................................................................................................................ 255 第 4 章 UI 设计时组件开发 .................................................................................................................................... 256 4.1 组件的构成 .................................................................................................................................................... 256 4.2 组件配置文件 ............................................................................................................................................... 256 4.2.1 element 属性 ....................................................................................................................................... 257 4.2.2 组件属性设计时描述节点:properties ................................................................................... 258 4.2.3 属性编辑器描述节点:property-editors ................................................................................. 260 4.2.4 组件模板子节点:templates ........................................................................................................ 261 4.2.5 组件事件子节点:events .............................................................................................................. 261 4.2.6 组件设计时菜单描述节点:toolbar ......................................................................................... 261 4.2.7 复合组件子节点 inner-component-config ............................................................................... 262 4.3 开发组件类 .................................................................................................................................................... 263 4.3.1 Js 类 ......................................................................................................................................................... 263 4.3.2 Java 类: ............................................................................................................................................... 265 4.4 开发属性编辑器类 ..................................................................................................................................... 265 4.4.1 格式......................................................................................................................................................... 265 4.4.2 属性编辑器注册: ........................................................................................................................... 266 4.4.3 使用案例 ............................................................................................................................................... 266 4.5 组件注册......................................................................................................................................................... 267 4.5.1 组件目录注册 ..................................................................................................................................... 267 4.5.2 组件工具箱配置 ................................................................................................................................ 267 4.5.3 组件配置文件的注册 ...................................................................................................................... 267 4.6 其他 .................................................................................................................................................................. 268 4.6.1 样式属性对话框的使用 .................................................................................................................. 268 4.6.2 debug 设置 ........................................................................................................................................... 268 4.6.3 公共属性配置 ..................................................................................................................................... 268 第五篇 应用加密说明 ............................................................................................................................................... 269 第 1 章 开发商使用说明 .......................................................................................................................................... 269 1.1 功能授权......................................................................................................................................................... 269 X5 高级开发手册 2011 Justep Corp. 第 10 页 共 273 页 起 步 科 技 1.2 开发商数字证书申请 ................................................................................................................................ 269 1.3 开发商应用模型代码加密 ...................................................................................................................... 270 1.4 制作发送应用授权 License ..................................................................................................................... 271 第 2 章 加密应用使用说明 ..................................................................................................................................... 272 2.1 授权应用 License 注册功能 .................................................................................................................... 272 2.2 部署应用......................................................................................................................................................... 272 2.3 申请应用授权 ............................................................................................................................................... 272 2.4 注册应用授权 License ............................................................................................................................... 272 X5 高级开发手册 2011 Justep Corp. 第 11 页 共 273 页 起 步 科 技 第一篇 业务模型 第1章 业务模型概述 1.1 概述 模型是人们了为方便研究、理解和解决客观事件中存在的种种问题而对客观现实经过反复思维 抽象后的文字、图标、符号、关系式以及实体模样描述的集合,以描述所认识到的客观事物的一种 直观表现形式。 业务模型是从企业信息化的需要出发,针对企业的业务和管理所做的一种体系性抽象和描述, 业务模型体系为信息系统的设计和开发提供科学、合理的导向和依据。 业务建模就是基于企业工程理论和业务模型体系,来分析、设计、开发和维护信息系统。业务 建模的过程,是从业务和管理的现实和知识出发,依据和参照业务模型体系,采用业务建模工具, 设计并构建出相关的业务模型资源,业务模型资源是业务建模的主要产品。 根据国际化的需求,X5 业务模型支持多语言描述。通过在业务模型的描述中,使用国际化的语 言标识,实现多语言的业务模型描述。业务模型对多语言的支持,为业务的国际化需求提供了基础。 1.2 业务模型的组织 1.2.1 业务模型的构成 X5 业务模型系统由 BIZ 工程构成。BIZ 工程之下有三种类型的模块:系统级模块、平台级应用模 块以及一般应用级模块。 系统级模块包括 system 及其子模块,是在平台发布时就带的有,包括模型调度框架及各种基础 功能,是其他应用系统开发以及运行的基础。系统级目录 system 下设 ontology、data、logic 和 config 目录。config 是系统专有的模块,包括模型的一些配置信息(例如业务动作的插件配置),ontology 目录下存放平台级的本体定义。data 目录之下存放平台本体的 mapping 及数据库的连接,logic 目录 下包含 action(平台提供的 action 定义), code(平台提供的业务逻辑), fn(平台提供的函数定义), 平台级应用模块是指 SA,随平台一起发布,是一般应用系统需要依赖的。 一般应用级模块是指根据不同的业务需求定义的一个大的分类级别的模块。应用级模块的定义 是具有一定规范的,便于理解以及开发。Studio 建模工具遵守标准的定义规范。 图 1.1 模块级别 X5 高级开发手册 2011 Justep Corp. 第 12 页 共 273 页 起 步 科 技 标准的应用级业务模型定义规范如下: BIZ 中新建一个应用模块。其下 data, logic, ontology, process 四个子模块: 1、 data:用于定义概念到物理表的映射和数据库连接信息。此模块包含*.config.m 文件、 *.mapping.m 文件。 2、 ontology:用于定义概念模型。此模块包含*.ontology.m 文件。 3、 process:用来定义流程。此模块包含若干个子模块,每个子模块对应一个业务流程定义, 子模块中包含*.process.m 文件。 4、 logic:用来实现业务逻辑。此模块包含 action,code,fn 模块,其中 action 中存储的是 action 及 procedure 定义,包含*.action.m 和*.procedure.m 文件;code 中存储的是业务 逻辑代码,包含 src,dsrc,classes,dclasses,lib 和 slib 目录;fn 存储的是函数定义, 包含*.fn.m。 1.2.2 业务模型文件 业务模型文件从后缀名的划分来看主要有 xml、m、java 和 jar。 m 文件:后缀为 m 的文件为模型描述文件,主要内容是 ontology、mapping、fn、action 等等的定 义以及各种配置。 主要包括以下几种: 本体文件 *.ontology.m 映射文件 *.mapping.m 配置文件 *.config.m 函数文件 *.fn.m 过程文件 *.process.m action 文件 *.action.m procedure 文件 *.procedure.m xml 文件:目前只有 model.config.xml,每个模块下均可创建,用于描述模块间的引用关系。 java 文件:后缀为 java 的文件,主要内容就是使用 java 编写的逻辑程序。 jar 文件:标准的 java 类库文件。 1.3 业务模块 1.3.1 业务模块定义 X5 的业务模型是由业务模块组成的。业务模型包含的业务模块与模型的目录组织是一一对应的, 一个目录代表一个业务模块,因此,业务模型在文件系统中的目录层次结构就对应成了业务模块的 层次结构。 可以这样理解:X5 的业务模型体系中业务模型的目录结构等价于业务模型中的业务模块的结构。 在表达业务模型描述的时候经常使用业务模块这个术语,而在说明业务模型是如何保存的时候会使 用目录这个术语。 业务模块的建立非常的简单,只需通过 Studio 在 BIZ 项目下建立相应的目录。 本体模块,对应 ontology 目录,存储本体定义信息。 数据模块,对应 data 目录,存储本体与数据库表的映射信息(mapping)和数据库的连接配置 X5 高级开发手册 2011 Justep Corp. 第 13 页 共 273 页 起 步 科 技 信息。 逻辑模块,对应 logic 目录,存储业务逻辑的定义,它一般包括三个子目录 action、code、fn。 流程模块,对应 process 目录,存储业务流程的定义。 1.3.2 业务模块的引用 每个业务模块都会自动包含其上级业务模块(即父目录),如果需要使用其它业务模块中定义的 内容,那么就会用到业务模块的引用。 业务模块的引用在 model.config.xml 中定义,语法规范如下: 1、 语法: 业务模块路径业务模块路径 2、 说明: include:将其他模块中定义的东西完全引用,可以传递,如 A include B, B include C, 则 A 可以使用 C 的定义。 use:将其他模块中定义的东西引用到本模块,不可以传递,如 A use B,B use C,则 A 不可以使用 C 的定义。 3、 案例: 一个 model.config.xml 的例子 /system/logic/action /system/ontology 通过 Studio 新建一个业务模块时,一般包含本体模块(ontology)、数据模块(data)、逻辑模块 (logic)和流程模块,其中逻辑模块(logic)一般包括三个子模块动作模块(action)、代码模块(code) 和函数模块(fn),这些模块之间的默认引用关系如下: 1、 本 体 模 块 : include 系 统 本 体 模 块 ( /system/ontology )和 use 系 统 函 数 模 块 (/system/logic/fn); 2、 数据模块:include 当前的本体模块; 3、 动作模块:use 系统动作模块(/system/logic/action)和 use 当前数据模块; 4、 代码模块:use 系统代码模块(/system/logic/code); 5、 流 程 模 块 : use 当 前 的 动 作 模 块 、 use 当 前 的 代 码 模 块 、 use 系 统 函 数 模 块 (/system/logic/fn)、 use 系统动作模块(/system/logic/action)和 use 系统代码模块 (/system/logic/code); 6、 函数模块:这个模块不会自动生成,如果需要,用户可以自己创建,创建后,被当前的 本体模块和流程模块引用; 1.4 业务模型发布 业务模型的发布之前,需要先编译业务模型,之后将相应的 BIZ 拷贝就行了。 X5 高级开发手册 2011 Justep Corp. 第 14 页 共 273 页 起 步 科 技 第2章 业务本体 2.1 概述 业务本体可以用来描述企业业务里包含的非常丰富的概念知识 业务本体是整个业务模型的语义基础,它可以规范和约束业务所处理的数据,为数据赋予语义。 业务本体不仅可以促进企业知识的重用和共享,还可为企业数据交换和集成带来非常多的好处。 X5 采用本体知识描述体系来对业务数据进行建模。可以简单的理解本体就是通过概念、关系和 规则对知识的描述体系,把这种描述思想运用到企业信息化。 概念(concept)是对现实世界中各种事物的一种抽象,可以简单理解为数据库中的表,是关系 的集合,可以使用它来定义生活中或业务中使用的概念或术语。 关系(relation)是对事物间联系的描述,可以简单理解为数据库表中的字段,但含义更丰富。 2.2 关系 2.2.1 关系的定义 关系(relation)类似于类定义中的域定义,但有本质的差别。在本体定义体系中,关系的定义 是独立于概念定义存在的,它表明了客观存在关系这样的事实。目前只支持二元关系。 1、 语法: 2、 说明: name:关系名,建议使用有意义的单词组合。 data-type :关系的类型。 single-valued: 是否是单值关系。 inverse-of : 互逆关系。互逆关系是指从两个方向上描述同一个关联的一对关系,假设 r1, r2 为互逆关系,则 A –r1-> B,则可推出 B –r2-> A, 如:parent 关系和 child 关系,A 是 B 的 parent,则可推出 B 是 A 的 child。 size : 关系的长度。 scale:关系的精度 required:是否必须 unique:是否唯一 default-value-expr:默认值表达式 label 标签:描述关系的 label,language 属性指明使用的语言。 3、 案例: 2.3 概念 2.3.1 概念的定义 1、 语法: 2、 说明: name:概念名称,建议概念名称全部使用有意义的单词组合,首字母大写。 default-value-expr:概念主键的默认值表达式。 keys:指明哪些关系组成概念的主键,使用“:”分隔,例如“sName:sAge”。组成 keys 的 关系必须在 has-relation 中出现。 label 标签:表示概念的 label,language 属性表示使用的语言。 has-relation标签:表示概念包含哪些关系,在has-relation中可以重新指定relation上绝大部 分属性,同时新增了几个属性: local-name,表示关系在此概念中的别名。 whole-part:整体部分关系,用于表示两个概念之间的关联关系,它的取值范围是 {composition,aggregation},composition表示组合,当删除关系所在的本体时,同时删 除关系指向的本体。aggregation表示聚合,当删除关系所在的本体时,置空关系的互 逆关系。 tree标签:指明概念通过此关系形成树,属性path-relation指出树形使用的path关系名, path-seperator表示path的分隔符。 3、 案例: X5 高级开发手册 2011 Justep Corp. 第 16 页 共 273 页 起 步 科 技 X5 高级开发手册 2011 Justep Corp. 第 17 页 共 273 页 起 步 科 技 第3章 业务数据 3.1 概述 业务数据模块负责维护业务的数据。 主要包括本体与数据库表的映射信息(mapping)和数据库的连接配置信息。。 业务系统的持久存储层是 ER 数据库,业务系统需要知道如何把本体定义和数据库里的表结构相 对应,这样系统就可以把业务数据的操作自动转换成相应的数据库操作,这个过程类似 Hibernate 实 现的 ORM 过程,本体到物理表的映射也可以缩写为 ORM,但这里的“O”是指本体(Ontology)。 3.2 数据模块定义 3.2.1 数据连接 目前支持的数据库类型主要是 SQL Server、Oracle、 Sybase 和 DB2。默认情况下,对应的数据库 是 Oracle。 每一个数据模块都可以定义它自己的数据库连接配置,按照模块的继承原则子模块可以继承父 模块的数据库连接配置。 1、 语法: 2、 实例: 3、 说明: 配置的 JNDI 名称和应用服务中设置的 JNDI 名称一致,例如 对 tomcat 下的 Oracle 数据的配 置为“…\apache-tomcat\conf\server.xml”: 3.2.2 存取设置 本地存储:定义哪些概念存储到本模块(即数据模块)指定的数据库。 1、 语法: 2、 说明: 概念名:存储到本模块(即数据模块)中的概念。 3、 案例: X5 高级开发手册 2011 Justep Corp. 第 18 页 共 273 页 起 步 科 技 3.2.3 映射定义 实现本体到数据库的映射定义。 1、 语法: ……
……
2、 说明: concept:指定映射的概念名称。 table 标签:概念映射到的表。table 包含的属性和标签包括: type 属性:表示映射表的类型,它的取值范围是{owner-table,relation-table},owner-table 表示主表,一个概念只能映射到一个主表上;relation-table 表示关系表。 name 属性:表名 key 标签:指向当前概念的主键或者外键,只允许有一个 key 标签。field 表示字段,允 许指定多个字段做联合主键,使用“,”分隔,type 表示主键的数据类型,当是联合主 键时,type 也是使用“,”分隔各个字段的类型。 item 标签:表示一个关系的映射,可以有多个。field 属性表示字段名,type 属性表示 字段的数据类型。 discriminator 标签:鉴别器,用以多个概念映射到一张表上时,根据鉴别字段的值来识 别当前行的数据是哪个概念的实例。field 表示鉴别字段名,value 表示鉴别字段的值。 index 标签:定义数据库的索引,name 表示索引的名称,field 表示索引的字段,允许 指定多个字段做索引,使用“,”分隔,type 表示索引的类型,当前只支持“UNIQUE” 和“NORMAL”。 3、 案例: 一对一关系的基本映射案例: X5 高级开发手册 2011 Justep Corp. 第 19 页 共 273 页 起 步 科 技
说明:概念 SA_OPOrg 映射到表 SA_OPOrg 中,主键对应的字段名为 sID。关系 sFName、sFID 都是一对一关系,在表 SA_OPOrg 中分别映射的字段名为 sFName、sFID。 多对多关系的映射案例: ……
说明:概念 SA_Task 有一个多对多关系 sNext,表示下一个任务,映射到一张关系表上。上 面的 Mapping 说明:type="relation-table"表示表 SA_TaskRelation 是关系表,指向当前 SA_Task 的外键是 sTaskID1, 关系 sNext 映射到的字段为 sTaskID2。 X5 高级开发手册 2011 Justep Corp. 第 20 页 共 273 页 起 步 科 技 第4章 业务逻辑 4.1 概述 业务逻辑模块主要用于编写业务逻辑,一般包含三个子模块:action(定义 action 和 procedure)、 code(业务逻辑的实现,一般使用 java 实现,有 src,dsrc,lib)、 fn(函数定义)。 4.2 Action 定义 1、 语法: <参数访问权限 name=" " type=" "/> …… 2、 说明: name:action 的名称。 global:标识当前 action 是否是全局的。 log-enabled:标识当前 action 是否需要记录日志。 procedure:关联的 procedure 名称。 参数节点:声明参数。参数访问权限包括:private,私有,表示只能在 action 声明时赋值; protected,保护的,表示可以在 process 中 has-action 时赋值;public,公共的,可以接受前 台传入的值;permission,权限参数,只能从组织机构上传权限的值。 参数节点上的属性:name 属性:参数名;type 属性:参数类型;value 属性:参数的默认 值;required 属性:标识参数是否必须的;class 属性:当 type 是 Object 时,可以指定具体 的 Java 类为参数类型。 3、 示例: X5 高级开发手册 2011 Justep Corp. 第 21 页 共 273 页 起 步 科 技 4.3 Procedure 定义 1、 语法: …… 2、 说明 name:名字。 code:对应的 Java,必须指向某个类的静态方法。 code-model:Java 代码所在的模块,如果没有指定,默认指向当前模块。 parameter 标签:表示一个参数,name 属性表示参数名,type 属性表示参数类型。parameter 节点的个数必须与相应的 Java 静态方法中的参数个数一致,且 Java 静态方法中的参数按顺序进 行绑定。 3、 示例: 4.4 Fn 定义 1、 语法: …… 2、 说明: name:fn 的名称。 category:分类,用于 studio 显示。 code-model:Java 代码所在的模块,如果没有指定,默认指向当前模块。 code:对应的 Java,必须指向某个类的静态方法。 type:返回数据的类型。 parameter 标签:参数,name 属性表示参数名,type 属性表示参数类型。 X5 高级开发手册 2011 Justep Corp. 第 22 页 共 273 页 起 步 科 技 3、 实例 4.5 Java 代码 Java 代码是业务逻辑的实现技术,它主要存放在 code 模块下,code 模块下一般包括以下几个子 模块:src、dsrc、classes、dclasses、lib 和 slib。 src 模块:定义静态 Java,此模块下的 Java 必须经过编译才能使用。 dsrc 模块:定义动态 Java,此模块的 Java 不需要编译,运行时会自动编译,运行时允许修改; 此模块的 Java 不允许有包名。 lib 模块:定义 jar 文件。 slib 模块:定义加密的 jar 文件。 classes 模块:src 编译的结果。 dclasses 模块:dsrc 编译的结果。 在 Java 代码中,引用别的 code 模块中的 Java 类时(同一 code 模块下的代码可以直接使用), 除了必须使用 Java 的 import 语法之外,当前 code 模块必须引用(use 或 include)对应的 code 模块, 例如:“/demo/logic/code”模块下的某个 Java 类(无论是 src、dsrc、lib 或 slib 子模块中的)需要引 用“ /demo/common/code”模块下的类“com.justep.demo.CommonUtils”时,必须在“/demo/logic/code” 模块中引用“/demo/common/code”模块,即在 model.config.xml 文件中包括以下的语句: /demo/common/code X5 高级开发手册 2011 Justep Corp. 第 23 页 共 273 页 起 步 科 技 第5章 业务流程 5.1 概述 X5 业务流程是基于 PetriNet 原理的业务流程定义和运行体系,PetriNet 是当今被广泛应用于业 务流程描述和运行算法的理论体系。在 PetriNet 中只有三个基本元素,它们分别是 Place(容器), Activity(处理)和 Token(令牌),PetriNet 的基础原则都是围绕这三个元素定义的,它们分别是: Place 是用来存放 Token 的。 Activity 用来消耗其输入 Place 中的 Token,并且给它的输出的 Place 产生新 Token。 Activity 和 Activity 不能直接互连接的,只能通过 Place 互连。如图所示。 图 5.1 基本的 PetrnNet 图 Activity 激活的条件是其输入的所有 Place 中都有 Token。 一个 Token 被一个 Activity 消耗以后就没了,不能再被消耗。 虽然 X5 的业务流程体系是基于 PetriNet 原理的,但由于业务模型层封装的原因,在实际的业务 流程建模过程中并不会太多接触到底层 PetriNet 的东西。所以在这里就不再对 PetriNet 做详细描述 了,具体 PetriNet 的详细信息请参阅与 PetriNet 相关的专业文档。 X5 的业务流程以 PetriNet 作为基础理论依据,把业务流程元素和 PetriNet 元素做了一一对应, 并且在此基础之上扩展出更合适于业务模型层的复杂业务流程规则,以形成业务流程定义。同样的, 在业务流程运行时的算法体系中也遵循了基本的 PetriNet 原理,并在此基础之上根据业务流程定义 的扩展,也对业务流程运行扩展出相应特性。如图所示就是上个 PetriNet 图对应的流程图。 图 5.2 与 PetriNet 图对应的业务流程图 业务流程本质上就是把业务表单在人之间传来传去,负责传送业务表单并且通知对方进行处理 的媒介途径是待办任务。所以 X5 业务流程体系中待办任务是核心基础,无论是业务流程还是协同只 要牵扯到业务表单在人之间的传递都要依赖待办任务。基于以上的理解和考虑,X5 业务流程体系是 以待办任务为核心,结合业务流程与协同于一身的业务流程体系。 X5 业务流程体系分为三部分,它们分别是业务流程定义,业务流程运行和业务流程实例(业务 流程控制数据)。业务流程定义描述业务流程的整个过程和各种规则,从使用上说画的流程图和设置 X5 高级开发手册 2011 Justep Corp. 第 24 页 共 273 页 起 步 科 技 的流程规则就是业务流程定义。业务流程运行的核心是业务流程引擎,它解析业务流程定义,推进 业务流程的运行,运行的结果就是业务流程实例。一个业务流程定义被运行一次就产生一个业务流 程实例,在业务流程实例中包含若干待办任务。 5.2 业务流程定义 业务流程定义描述的是企业实现一个业务目标(业务审批)需要包含多少个环节步骤,各环节 步骤间前后顺序和同步关系,各步骤由谁来处理等信息。抽象到业务模型上,步骤对应业务环节, 顺序关系由连接弧定义,处理人对应执行者,处理要求对应到处理规则,所以业务流程定义是由环 节,处理规则和连接弧组成。 业务过程中画在流程图上的业务环节,将以业务流程的方式使用待办任务作为入口来运行。此 类业务环节需要在执行者收到待办任务以后,通过打开处理待办任务才可以运行业务环节。业务流 程定义特指此类业务环节的定义,在业务过程中包含的没被画在流程图上的业务环节都是静态的业 务环节,它们不包含在业务流程定义的范畴内。 5.2.1 启动规则 启动规则是在调用流程启动动作(startProcessQueryAction)时起作用,用来初始化业务流程实 例的规则。启动规则不是必须设置,当它没有设置是会根据缺省的启动规则初始化业务流程。启动 规则的详细描述,见 5.4.1。 5.2.2 通知规则 通知规则是在调用流程结束动作 ( finishProcessAction ) 时 或 调 用 流 程 终 止 动 作 (abortProcessAction)时起作用的,用于给相关人产生通知待办任务的规则。通知规则不是必须设 置的,当它没有设置时就表示不产生通知。通知规则的详细描述,见 5.4.2。 5.3 业务流程环节 业务流程环节是业务流程里最基本最重要的组成元素,它描述业务流程中需要人为参与的处理, 自动的处理和业务流程中路径的选择,分支和合并等。需要注意的是,所有业务流程环节定义的各 种规则和条件都只有在业务流程执行讯问动作的时候起作用。 5.3.1 静态环节 业务流程中有两类环节:一类是非流程图上的环节,称之为静态环节;一类是流程图上的环节, 称之为流程环节(后续介绍的都是流程环节)。 一般平台默认为每个业务流程生成一个 mainActivity 的静态环节,用来启动流程;通知规则中指 向的环节,可以根据业务需求指定静态环节或流程环节。 X5 高级开发手册 2011 Justep Corp. 第 25 页 共 273 页 起 步 科 技 5.3.2 开始环节 开始环节是业务流程里的一种标志环节,在一个业务流程定义只能有唯一的一个开始环节。从 PetriNet 的角度来说,流程必须都是从 Place 开始的,所以开始环节映射到 PetriNet 时其实是一个 Place。 入口环节,启动环节和开始环节是比较容易混淆的几个概念。入口环节指的是连在开始环节后 的第一层活动环节,它肯定是被画在流程图中开始环节之后的业务环节。启动环节指的是调用流程 启动动作(startProcessAction)触发流程启动的环节,一般它是静态业务环节(mainActivity)而不被 画在流程图中。 开始环节的意义不仅仅在于可以让代码能更容易的理解和找到业务流程的“起始点”,更重要的 是当一个业务流程有多个入口环节时,在开始环节后可以跟分支环节或者条件环节来定义多入口环 节之间的逻辑关系。如图所示。 图 5.3 开始环节后跟条件分支选择入口 5.3.3 结束环节 和开始环节一样,结束环节也是业务流程里的一种标志环节,一个业务流程定义只能有唯一的 一个结束环节。从 PetriNet 的角度来说,每个流程结束以后都会产生产物,所以当结束环节映射到 PetriNet 时其实也是一个 Place。 当结束环节和其他环节组成分支的时候,结束环节和其他环节之间只能是排它(XOR)的关系, 也就是说要么流入结束环节,要么流入其他环节,二者同时只能选其一,如图所示。 图 5.4 结束环节和其他环节必须是 XOR 关系 需要注意的是,业务流程运行到结束环节并不一定代表整个流程就结束了,判断流程是否结束 只有一个依据,那就是所有的活动环节的待办任务是否都处理完了。 X5 高级开发手册 2011 Justep Corp. 第 26 页 共 273 页 起 步 科 技 5.3.4 活动环节 活动环节代表企业中的一个单独的、独立的业务环节。活动环节其实就是被画在流程图里的业 务环节,运行时它和静态业务环节的区别在于活动环节必须由业务流程通过待办任务触发后才可以 运行,而不像静态业务环节随时可以被运行。 活动环节是在业务流程运行的过程中唯一可进行人工干预处理的地方。当业务流程运行到活动 环节时就会给指定的执行者生成待办任务,并且业务流程的运行会停下来,等执行者以待办任务为 入口打开业务环节处理业务表单后,执行者再决定流程是要继续往后运行还是要重新处理。 活动环节映射到 PetriNet 里时是一个 Activity。需要注意的是此 Activity 并非指的是业务环节。 条件(condition) 条件使用表达式的方式定义活动环节满足什么条件才可以被激活。活动环节的条件属性上定义 的表达式只有在其他环节做流转操作流入当前活动环节时被计算,计算结果为 true 则表示当前活动 环节可以激活并生成待办任务,计算为 false 则表示当前活动环节不允许激活。条件是必须设置的属 性,如果定义常量则直接写 true 或 false 就可以了。条件表达式的设置和其中的函数,如何取业务数 据详见 5.6.3。 执行规则(ExecuteRule) 执行规则定义活动环节的执行者,待办任务属性和处理方式等信息。执行规则只有在其他环节 做流转操作流入当前活动环节时才起作用,它为生成活动环节的待办任务提供素材信息,当待办任 务生成了以后它就不再作用了。执行规则不是必须设置的,当它没有设置的时候会根据缺省的执行 规则计算活动环节执行者和生成待办任务。执行规则的详细描述,详见 5.4.3。 流转规则(AdvanceRule) 流转规则定义活动环节在做流转操作时的一些处理选项。流转规则不是必须设置的,当它没有 设置的时候会根据缺省的流转规则进行流转操作。流程规则的详细描述,详见 5.4.4。 回退规则(BackRule) 回退规则定义活动环节在做回退操作时的一些处理选项。回退规则不是必须设置的,当它没有 设置的时候会根据缺省的回退规则进行回退操作。回退规则的详细描述,详见 5.4.5。 转发规则(TransferRule) 转发规则定义活动环节在做转发操作时的一些处理选项。转发规则不是必须设置的,当它没有 设置的时候会根据缺省的转发规则进行转发操作。转发规则的详细描述,详见 5.4.6。 通知规则(NoticeRule) 通知规则定义活动环节在做流转,回退和转发等操作时需要通知其他人的处理选项。通知规则 不是必须设置的,当它没有设置的时候就表示不需要通知。通知规则的详细描述,详见 5.4.2。 5.3.5 自动环节 自动环节是通过调用指定业务动作或指定代码完成业务处理的环节,它一般用来实现同步更新 业务数据或调用其他 WebService 等需求。当业务流程运行进入自动环节时并不会停下来,而是调用 完指定业务动作或执行完指定代码后就直接进入下一步环节。自动环节只有在其他环节做流转操作 进入它时,它才会起作用。 调用指定业务动作和执行指定代码的需求当然可以在事件实现,但是自动环节的好处在于可以 从业务流程的图上看出有一个明显的自动处理。 自动环节本质上也属于“处理”,所以映射到 PetriNet 里时是 Activity(处理)。 X5 高级开发手册 2011 Justep Corp. 第 27 页 共 273 页 起 步 科 技 条件(condition) 条件使用表达式的方式定义自动环节满足什么条件才可以被激活。自动环节的条件属性上定义 的表达式只有在其他环节做流转操作流入当前自动环节时计算,计算结果为 true 则表示当前自动环 节可以激活并进行自动处理,计算为 false 则表示当前自动环节不允许激活。条件是必须设置的属性, 如果定义常量则直接写 true 或 false 就可以了。条件表达式的设置和其中的函数,如何取业务数据详 见 5.6.3。 业务动作(Action) 自动环节上业务动作的设置和业务环节是一样的,不同点在于自动环节上设置的业务动作将被 自动调用。业务动作在自动环节中是必须设置的属性。 5.3.6 条件环节 条件环节就是通过定义条件表达式的方式描述环节能否激活,从而控制路径是否畅通的环节, 类似公路上的红绿灯。条件环节采用条件表达式的方式,根据表达式计算结果来控制流程能流入哪 些环节,不能流入哪些环节。条件环节只有在其他环节做流转操作流入它时才起作用,如果条件表 达式计算结果为 true,则表示“此路畅通”可以直接经过条件环节后进入到下一步环节,反之则不 能经过。那么,在活动环节前加一个条件环节和直接设置活动环节的条件属性,两者是等价的。 条件环节本质上属于“处理”,所以映射到 PetriNet 里时是 Activity。 条件(condition) 条件使用表达式的方式定义条件环节满足什么条件才可以被激活,激活的意思进入。自动环节 的条件属性上定义的表达式只有在其他环节做流转操作流入当前条件环节时计算,计算结果为 true 则表示“此路畅通”直接进入下一步环节,计算为 false 则表示“此路不通”而不能进入下一步环节。 条件是必须设置的属性,如果定义常量则直接写 true 或 false 就可以了。条件表达式的设置和其中的 函数,如何取业务数据详见 5.6.3。 5.3.7 条件分支环节 条件分支环节虽然和条件环节一样是通过条件表达式的方式来描述路径是否畅通的环节。但是 条件分支环节和条件环节有着本质上的不同,条件分支环节无论条件表达式怎么设置其实它一直都 是畅通的,条件表达式只是用来选择它要从哪个输出流出而已。条件分支环节只允许有两个输出, 一个输出用来定义是当条件表达式计算结果为真(true)时走的路径,另外一个则用来定义条件表 达式结果为假(false)时走的路径。条件分支只有在其他环节做流转操作流入它时,它才起作用。 条件分支环节本质上属于“处理”,所以映射到 PetriNet 里时是多个 Activity 的组合,如图所示。 X5 高级开发手册 2011 Justep Corp. 第 28 页 共 273 页 起 步 科 技 图 5.5 条件分支对应到 PetriNet 条件(condition) 使用条件表达式的方式选择输出,条件表达式计算结果为真(frue)就流入条件为真的输出, 反之就流入条件为假的输出。条件是必须设置的属性,如果定义常量则直接写 true 或 false 就可以了。 条件表达式的设置和其中的函数,如何取业务数据详见 5.6.3。 条件为真的输出(true-output) 条件为真的输出上的属性值只能从与条件分支直接连接的输出的环节中选择。用来标识条件表 达式计算结果为真(true)时要走的输出路径。它的选择范围是直接连在条件分支环节后的环节。 条件为真的输出此属性是必须设置的。 条件为假的输出(false-output) 条件为假的输出上的属性值只能从与条件分支直接连接的输出的环节中选择。用来标识条件表 达式计算结果为假(false)时要走的输出路径。它的选择范围是直接连在条件分支环节后的环节。 条件为假的输出此属性是必须设置的。 5.3.8 AND 环节 连接弧用来描述环节间的前后顺序,则环节间的逻辑关系则是使用逻辑环节(XOR 或 AND)来 描述。在业务流程中,逻辑环节有 AND 环节和 XOR 环节。它们都可以用来做分支和做合并,描述环 节间的协作和同步的关系。 AND 环节有两种模式分别为分支模式和合并模式,当它有多个输出时即为 AND 分支,当它有多 个输入时即为 AND 合并。AND 环节可以同时具有多个输入和多个输出,即同时处于 AND 分支和 AND 合并下,也可以只单独处于分支模式或者单独处于合并模式。 AND 环节映射到 PetriNet 里时是一个 Activity。 AND 分支 AND 分支表示所有输出路径中只要是畅通的路径就必须都走。从使用上说,只要经过 AND 分支 系统就会默认把所有畅通的输出都默认选上,并且在流转对话框中不能取消选择,以达到 AND 分支 的目的。从待办任务的角度来说是把待办任务进行了拆分,一条待办任务在经过 AND 分支以后就拆 分成了多条待办任务,每条待办任务都可以做各自独立的流转和回退操作。 AND 分支其实本质就是一个待办任务拆分的过程。它和执行规则中多个执行者同时处理一条待 办任务的不同点在于,多个执行者同时处理一条待办任务时执行者间具有协作关系的,而 AND 分支 是把待办任务拆分到后续多个活动环节了,除非是遇到 AND 合并,要不然多个活动环节间是不具备 任何协作关系的。AND 分支后的每个活动环节的执行者都会收到在活动环节间各自独立的待办任务。 毫无疑问这种待办任务拆分也只有在其他环节做流转操作,流入 AND 分支时才起作用的。 X5 高级开发手册 2011 Justep Corp. 第 29 页 共 273 页 起 步 科 技 分支规则是对 AND 分支的一些特殊情况的处理,例如在 AND 的三个输出中只有两个是必选的, 而另外一个选不选要用户自己决定。分支规则不是必须设置的属性,当它没有设置时会默认按照 AND 分支每个都是必须走的原则来处理。分支规则的详细说明。 AND 合并 AND 合并表示它所有的输入路径中只要有可能流入到 AND 环节中的待办任务,那就必须等到全 部都流入 AND 环节了以后把所有流入的待办任务合并成一条待办任务,流程才可以继续运行到下一 步环节。从待办任务的角度来说 AND 合并进行了待办任务的合并,多条待办任务经过 AND 合并以后 就合并成了一条待办任务往下走,AND 合并的后序的活动环节只会收到一条待办任务。 AND 合并其实本质就是一个待办任务合并的过程,一般都和 AND 分支配对使用。当业务流程运 行经过了 AND 分支以后,同时给多个活动环节生成了待办任务,每个待办任务可以独立流转和回退, 只有在经过 AND 合并以后多个待办任务才会又合并成一个待办任务继续运行。 在 AND 合并的多个输入中,有可能有的输入的待办任务会先流转到 AND 合并,有的则后到。这 时的处理原则是,先到达 AND 合并的待办任务需要等待其他尚未到达 AND 合并的待办任务,直到已 经没有待办任务会流入 AND 合并时才允许通行到它的下一步环节。 合并规则是对 AND 合并多个输入之间的逻辑规则,描述什么情况下才进行待办任务的合并。例 如某些重要的主要的输入先达到 AND 合并,那就可以不需要等待其他次要输入了。而次要的输入先 到达就必须要等待主要的输入达到后才可以流入到下一环节。合并规则不是必须设置的属性,当它 没有设置时会按照 AND 合并的所有输入都是必须的原则来处理。合并规则详细描述,详见 5.4.7。 5.3.9 XOR 环节 逻辑环节中的 AND 环节所描述的是环节之间的同时同步的关系,或者叫并发关系。XOR 环节则 描述的是环节间的独立排它的关系。 XOR 环节也有两种模式分别为分支模式和合并模式,XOR 环节有两种模式分别为分支模式和合 并模式,当它有多个输出时即为 XOR 分支,当它有多个输入时即为 XOR 合并。XOR 环节可以同时具 有多个输入和多个输出,即同时处于 XOR 分支和 XOR 合并下,也可以只单独处于分支模式或者单独 处于合并模式。XOR 环节同样也只有在其他环节做流转操作流入 XOR 环节时起作用。 XOR 环节映射到 Pertri Net 里时是一个 Place。 XOR 分支 XOR 分支表示 XOR 环节所有输出的畅通的路径中只能同时走其中唯一的一条路径。从使用的角 度来说,业务流程运行经过 XOR 分支会在所有畅通的输出中缺省选出其中当一条路径作为默认流出, 同时在流转对话框中用户也可以更改默认选择,但是流转对话框限制了同时只能选中一个输出来保 证 XOR 分支的特性。 当前待办任务经过 XOR 分支以后还是一条待办任务,所以经过 XOR 分支不会造成待办任务的拆 分。 XOR 合并 XOR 合并表示 XOR 环节所有输入中任何一个输入达到 XOR 环节都可以接通行到流入下一环节。 当前待办任务经过 XOR 分支以后还是一条待办任务,所以本质上 XOR 分支不会造成任何待办任务之间的 等待或合并。 X5 高级开发手册 2011 Justep Corp. 第 30 页 共 273 页 起 步 科 技 5.4 业务流程规则 业务流程规则定义业务流程的执行者,各种操作的处理选项和通知等信息。为了支持复杂业务 流程,所有业务流程规则都是可以设置多条的,在业务流程运行的时候根据设置的生效条件和规则 的排列顺序计算出唯一的一条生效的规则。也就是说相同类型的业务流程规则在同一时刻只有唯一 的一条可以生效。 业务流程规则的计算一般都在调用讯问相关的业务动作时计算,计算时根据业务流程规则定义 的顺序一条一条的计算,当找到一条可以生效就不再往下计算了。 5.4.1 启动规则 启动规则是定义在业务流程上的当调用 startProcessQueryAction 动作启动业务流程时,为业务流 程实例数据做初始化的规则定义。在启动规则里一般做一些流程实例的标题,限制时间的初始化, 但是其实启动规则可以对业务流程实例所属的概念 SA_Task 的所有关系赋值。 启动规则只有在调用 startProcessQueryAction 时生效,而以后流程运行中就不再起作用了。所以 当业务流程运行中业务数据值发生改变时这里是不会自动跟着变的,而只能写代码主动去刷新。 生效条件 生效条件使用表达式的方式定义规则满足什么条件才起作用。生效条件里定义的表达式最终计 算结果必须是真(true)或假(false)。生效条件属性是必须设置的,如果定义常量则直接写 true 或 false 就可以了。条件表达式的设置和其中的函数,如何取业务数据等描述,详见 5.6.3。 任务标题 任务标题使用表达式的方式定义业务流程实例的标题。任务标题里定义的表达式最终计算结果 必须是一个字符串,如果定义常量则也需要使用单引号引起来。任务标题属性不是必须设置的,当 没有设置时默认使用业务过程的标题作为业务流程实例的标题。任务标题表达式的设置和其中的函 数,如何取业务数据等描述,详见 5.6.3。 业务流程实例的标题最重要的作用是被用来生成各个活动环节的待办任务标题和通知的待办任 务标题,如果把业务单据的制单人姓名和单据编号生成到业务流程实例的标题中,则此所有通知和 活动环节的待办任务就可以很容易通过标题就区分开来。 任务标题最终被存入业务流程实例所属概念 SA_Task 的 sName 关系中。 限制时间 限制时间定义业务流程必须在某个时间段内处理完成。限制时间里定义的表达式最终计算结果 必须是一个日期时间类型的值,一般是根据当前日期加上几天来定义业务流程必须在几天内处理完。 限制时间表达式的设置和其中的函数,如何取业务数据等描述,详见 5.6.3。 限制时间属性的计算结果将被存入业务流程实例的限制时间属性里,基于这个可以做一些自动 的处理,例如超过限制时间自动结束,自动提醒和自动催办等。 限制时间最终被存入业务流程实例所属概念 SA_Task 的 sLimitDate 关系中。 任务属性 启动规则用来初始化业务流程实例的数据,其中任务标题和限制时间本质上都是给业务流程实 例数据的关系赋值,把它们单独拿出来配置是出于方便性的考虑。任务属性可以给业务流程实例的 任意关系赋值,只要指定关系名和对应的值表达式即可。在流程启动时会把所有任务属性里的计算 结果存入到业务流程实例所属待办任务的各个关系中。任务属性中各关系值表达式的设置和其中的 函数,如何取业务数据等描述,详见 5.6.3。 由于业务流程实例本质上也是存入任务表的,所以任务属性这里属性名的选择范围就是概念 X5 高级开发手册 2011 Justep Corp. 第 31 页 共 273 页 起 步 科 技 SA_Task 下的所有关系。任务属性就是对概念 SA_Task 的关系的赋值的规则定义。 在业务过程上没有定义启动规则时,缺省的启动规则中生效条件属性值为 true,任务标题属性 值是业务过程的标题,而其他属性都没有值。 5.4.2 通知规则 通知规则用于当业务流程在运行的过程中做了某个操作而需要通知有关人时。通知规则里定义 通知接收人,接收人的处理方式等信息。当通知规则定义于业务流程自身上时是根据一些业务流程 级别的操作生效,而当通知规则定义于活动环节上是就根据活动环节级别的一些操作来生效。 生效条件 生效条件使用表达式的方式定义规则满足什么条件才起作用。生效条件里定义的表达式最终计 算结果必须是真(true)或假(false)。生效条件属性是必须设置的,如果定义常量则直接写 true 或 false 就可以了。条件表达式的设置和其中的函数,如何取业务数据等描述,详见 5.6.3。 通知确认 在执行操作的过程中如果产生通知的话,是否需要弹出对话框,使当前用户可以手工修改一下 通知的接受者或者通知的属性。当通知规则设置于活动环节上时是否要弹出流转对话框由活动环节 上的流转规则和回退规则来确定,通知规则里的通知确认不起作用。由于流转而引发的业务流程结 束时通知也一样流转规则确定是否弹出对话框。 通知时机 通知时机定义业务流程执行什么操作时通知规则才起作用。它其实和生效条件意义是一样的, 都是为了定义满足什么条件通知规则才起作用。在业务流程运行时,通知时机被转换成条件表达式 使用 isExecutionAction 函数来判断目前正在调用的业务动作,和生效条件一起决定通知规则是否起作 用。 流转时通知是只有通知规则被定义在活动环节上时才有的属性。它表示在活动环节上做流转操 作时通知规则才起作用。流转时通知其实是判断当前调用的业务动作是否是 advanceProcessQueryAction 动作。 回退时通知是只有通知规则被定义在活动环节上时才有的属性。它表示在活动环节上做回退操 作时通知规则才起作用。回退时通知其实是判断当前调用的业务动作是否是 backProcessQueryAction 动作。 结束时通知是只有通知规则被定义在业务过程上时才有的属性。它表示整个业务流程实例结束 时通知规则才起作用。结束时通知其实是判断当前调用的业务动作是否是 finishProcessAction 动作, 此业务动作在做流转操作时如果业务流程实例可以被结束就会被自动触发,当然了也可以外界主动 的调用它结束流程。 终止时通知是只有通知规则被定义在业务过程上时才有的属性。它表示执行流程终止操作时通 知规则才起作用。结束时通知其实是判断当前调用的业务动作是否是 abortProcessQueryAction。 通知标题 通知标题使用表达式的方式定义生成通知的待办任务的标题。任务标题里定义的表达式最终计 算结果必须是一个字符串,如果定义常量则也需要使用双引号引起来。任务标题属性不是必须设置 的,当没有设置时默认使用“通知:”加业务流程实例的标题作为通知的待办任务的标题。通知标题 表达式的设置和其中的函数,如何取业务数据等描述,详见 5.6.3。 通知标题表达式计算结果的值,最终被存入通知的待办任务所属的概念 SA_Task 的 sName 关系 中。 限制时间 限制时间定义通知接收者在指定的时间点一起必须要把通知的待办任务处理掉。限制时间里定 X5 高级开发手册 2011 Justep Corp. 第 32 页 共 273 页 起 步 科 技 义的表达式最终计算结果必须是一个日期时间类型的值,一般是根据当前日期加上几天来定义通知 的待办任务必须在几天内处理完。通知标题表达式的设置和其中的函数,如何取业务数据等描述, 详见 5.6.3。 限制时间属性的计算结果将被存入通知的待办任务的限制时间属性里,基于这个可以做一些自 动的处理,例如超过限制时间自动结束,自动提醒和自动催办等。 限制时间表达式计算结果的值,最终被存入通知的待办任务所属的概念 SA_Task 的 sLiimitDate 关系中。 处理页面 处理页面定义通知的待办任务的接受者使用哪个业务环节打开待办任务。处理页面属性的值指 定的就是一个业务环节的 URL。业务环节的 URL 的就是其整个模块的路径加业务环节的 ID。 处理页面最终被存入通知的待办任务所属的概念 SA_Task 的 sEURL 关系中。 打开时自动完成 打开时自动完成定义通知的接收者收到待办任务以后,在待办页面或者任务中心打开待办任务 时立即把待办任务的状态设置为已结束(tesFinished)。本质上打开待办任务的时候其实是调用了 executeTaskAction 业务动作,在此业务动作里去结束当前待办任务。 打开时自动完成属性如果设置上,那最终其实是把通知的待办任务所属的概念 SA_Task 中的关 系 sExecuteMode2 的值设置为 finishWhenOpen。在调用 executeTaskAction 业务动作时判断此标记更 新待办任务的状态。 当流入此环节时 当流入此环节时通知属性是只有通知规则在活动环节上定义时才会起作用的,和通知时机一样 用来决定通知规则在什么时候起作用。例如某个活动环节后续有多个环节,那么可以定义只有流入 其中某个环节时才需要通知,否则不通知。此属性的取值范围是直接连在活动环节后的环节的 ID。 当流入此环节时不是必须设置的,当它没有设置是就表示流入任意环节都产生通知。 当流入此环节时通知属性一般用在某个活动环节后既有结束环节又有其他环节时,只想流入结 束时产生通知,而流入其他环节则不产生通知,此时属性值的就可以设置成结束环节的 ID。 执行者设置 执行者设置通过组织机构范围函数的方式定义通知的待办任务的接收者的可选范围和默认选择 的接收者。执行者表达式的设置,其中的函数和如何取到业务数据的描述,详见 5.5。 执行者不仅仅指人员成员,还可以是机构,部门和岗位。也就是说,待办任务的不仅仅 可以发 给人,还可以发给机构,部门和岗位等属于“组织”的组织单元。当待办任务是发给组织时,此组 织下的所有人员成员都会收到待办任务,这些人员成员根据待办任务上定义的执行模式来处理待办 任务。 执行者类型定义的是在流转对话框中用户可以选择什么类型的组织节点。此属性和其他属性没 有任何关系,而仅仅作用于流转对话框。如果不弹流转对话框,则它就没什么意义。 执行者表达式通过组织机构函数的方式定义通知的默认接收者。实际业务流程运行时,不管是 否有弹出流转对话框默认接收者都是起作用的,都会给默认接收者生成通知的待办任务。执行者表 达式的计算结果必须是组织单元的列表,其表达式的设置,其中的函数和如何取到业务数据的描述, 详见。 执行者范围表达式通过组织机构函数的方式定义通知的接收者的最大的可选范围。执行者范围 表达式的计算结果一般只在流转对话框里使用,用它来确定流转对话框中组织机构树的显示和选择 范围。如果它的计算结果是一个组织则流转对话框会默认显示组织下的人员成员。执行者范围表达 式的计算结果必须是组织单元的列表,其表达式的设置,其中的函数和如何取到业务数据的描述, 详见。 如果最大的接收者可选范围和默认选择接收者一样的或者不需要流转对话框时,就把执行者表 达式和执行者范围表达式设置成一样就可以避免重复组织机构表达式计算造成速度慢。 X5 高级开发手册 2011 Justep Corp. 第 33 页 共 273 页 起 步 科 技 任务协作 任务协作定义如何给通知的接收者生成待办任务,是多个接收者一起一条待办任务还是每个接 收者一条待办任务,以及接收者应该如何来处理待办任务。 任务分配模式定义给执行者生成待办任务的模式。共同分配就是给所有执行者生成一条待办任 务,那么只有等所有执行者都处理完成或被其中一个执行者抢占处理完成后此待办任务才算结束, 才可以进行流转回退等操作。独立分配就是给每个执行者都生成一条待办任务,它们各自独立互不 影响。每个执行者都可以把自己的结束待办任务处理完成后进行流转和回退等操作。同部门独立分 配指的是给属于同一个部门的执行者生成同一条待办,用于在只有在部门之间要求待办任务互相独 立的需求时,各部门下的人员成员都处理完成或者被某个一个人员成员抢占处理完成后自己部门的 待办任务就结束,但不影响其他部门的。同机构独立分配和同组织独立分配的意思和同部门独立分 配是一样的。 任务执行模式定义每一条待办任务内的执行者处理待办任务的方式,执行模式最终被存入到待 办任务所属概念 SA_Task 的 sExecuteMode 关系中。抢占模式(temPreempt)表示待办任务的所有执 行者中根据抢占模式只有一个执行者能抢到此待办任务进行处理,那么在抢的同时把其他执行者状 态都设置为取消(tesCanceled)。同时模式(temSimultaneous)指的是待办任务中所有执行者都可以 处理此待办任务,当所有执行者都处理完毕或者当控制者处理完毕了以后,待办任务才可以做流转 和回退等操作。顺序模式(temSequential)指的是待办任务的执行者可以按照一定顺序来处理此待 办任务,顺序是由执行者表达式里返回的组织单元顺序或者在流转对话框中选择执行者的顺序来确 定的,当生成待办任务时只有第一个执行者的状态是待办(tesReady),其他执行者状态都是等待中 (tesSleeping),等第一个执行者处理完毕以后才把第二个执行者的状态设置为(tesReady),以此类 推到所有执行者都处理完毕后待办任务才可以做流转或回退操作。任务执行模式最终被存到待办任 务的执行模式属性里了。 任务抢占模式定义当任务执行模式为抢占时,待办任务执行者做什么操作可以抢到待办任务。 打开时抢占(tpmOpen)是指谁先打开待办任务就算谁的,其实就是在执行 executeTaskAction 时执 行抢占操作。处理时抢占(tpmExecute)是指谁先做流转,回退或者转发等待办任务操作就算谁的。 抢占是把除当前操作者以外的其他所有执行者的状态都设置为取消(tmsCanceled)。任务抢占模式 最终被存到待办任务的执行模式属性里了。 任务属性 任务属性用来在生成通知的待办任务时给待办任务的关系赋值的,其实通知标题和限制时间都 是用来给待办任务的关系赋值,把它们单独拿出来配置是出于方便性的考虑。任务属性可以给待办 任务的任意属关系值,只要指定关系名和对应的值表达式即可。在通知时会把所有任务属性里的关 系和的值表达式的计算结果存入到待办任务中。任务属性中各关系值表达式的设置和其中的函数, 如何取业务数据等描述,详见 5.6.3。 由于待办任务本质上也是存入任务表的,所以任务属性这里属性名的选择范围就是概念 SA_Task 下的所有关系。任务属性就是对概念 SA_Task 的关系的赋值的规则定义。 5.4.3 执行规则 执行规则用于定义活动环节的执行者,执行者可选范围,待办任务属性和处理方式等信息。执 行规则是在其他环节做流转动作(且只有在做流转动作)流入当前活动环节时起作用的,在给当前 活动环节计算执行者且生成了待办任务以后执行规则就不再起作用了。 生效条件 生效条件使用表达式的方式定义执行规则满足什么条件才起作用。生效条件里定义的表达式最 终计算结果必须是真(true)或假(false)。生效条件属性是必须设置的,如果定义常量则直接写 true X5 高级开发手册 2011 Justep Corp. 第 34 页 共 273 页 起 步 科 技 或 false 就可以了。条件表达式的设置和其中的函数,如何取业务数据等描述,详见 5.6.3。 任务标题 任务标题使用表达式的方式定义生成活动环节的待办任务的标题。任务标题里定义的表达式最 终计算结果必须是一个字符串,如果定义常量则也需要使用双引号引起来。任务标题属性不是必须 设置的,当没有设置时默认使用当前活动环节的标题加“:”号再加业务流程实例的标题作为当前待 办任务的标题。任务标题表达式的设置和其中的函数,如何取业务数据等描述,详见 56.3。 任务标题表达式的计算结果,最终是被存入到活动环节的待办任务所属概念 SA_Task 中的关系 sName 上的。 是否需要保存 当前通知中选择的信息是否保存,以供下次使用。 限制时间 限制时间定义活动环节的执行者在指定的时间点必须要把活动环节的待办任务处理完毕。限制 时间里定义的表达式最终计算结果必须是一个日期时间类型的值,一般是根据当前日期加上几天来 定义待办任务必须在几天内处理完。限制时间表达式的设置和其中的函数,如何取业务数据等描述, 详见 5.6.3。 限制时间表达式的计算结果,最终是被存入到活动环节的待办任务所属概念 SA_Task 中的关系 sLimitDate 上的。 执行者设置 执行者设置通过组织机构范围函数的方式定义活动环节的待办任务的执行者可选范围和默认选 择的执行者。执行者表达式的设置,其中的函数和如何取到业务数据的描述,详见 5.5。 执行者不仅仅指人员成员,还可以是机构,部门和岗位。也就是说,待办任务的不仅仅 可以发 给人,还可以发给机构,部门和岗位等属于“组织”的组织单元。当待办任务是发给组织时,此组 织下的所有人员成员都会收到待办任务,这些人员成员根据待办任务上定义的执行模式来处理待办 任务。 执行者类型定义的是在流转对话框中用户可以选择什么类型的组织节点。此属性和其他属性没 有任何关系,而仅仅作用于流转对话框。 执行者表达式通过组织机构函数的方式定义活动环节的默认执行者。实际业务流程运行时,不 管是否有弹出流转对话框默认执行者都是起作用的,都会给默认执行者生成待办任务。执行者表达 式的计算结果必须是组织单元的列表,详见() 执行者范围表达式通过组织机构函数的方式定义活动环节的执行者的最大的可选范围。执行者 范围表达式的计算结果一般只在流转对话框里使用,用它来确定流转对话框中组织机构树的显示和 选择范围。如果它的计算结果是一个组织则流转对话框会默认显示组织下的人员成员。 一般情况下,如果执行者范围和默认执行者一样的或者不需要流转对话框的话,就把执行者表 达式和执行者范围表达式设置成一样。 任务协作 任务协作定义如何给通知的接收者生成待办任务,是多个接收者一起一条待办任务还是每个接 收者一条待办任务,以及接收者应该如何来处理待办任务。 任务分配模式定义给执行者生成待办任务的模式。共同分配就是给所有执行者生成一条待办任 务,那么只有等所有执行者都处理完成或被其中一个执行者抢占处理完成后此待办任务才算结束, 才可以进行流转回退等操作。独立分配就是给每个执行者都生成一条待办任务,它们各自独立互不 影响。每个执行者都可以把自己的结束待办任务处理完成后进行流转和回退等操作。部门间独立分 配指的是给属于同一个部门的执行者生成同一条待办,用于在只有在部门之间要求待办任务互相独 立的需求时,各部门下的人员成员都处理完成或者被某个一个人员成员抢占处理完成后自己部门的 待办任务就结束,但不影响其他部门的。机构间独立分配和组织间独立分配的意思和部门间独立分 配是一样的。 X5 高级开发手册 2011 Justep Corp. 第 35 页 共 273 页 起 步 科 技 任务执行模式定义每一条待办任务内的执行者处理待办任务的方式,执行模式最终被存入到待 办任务所属概念 SA_Task 的 sExecuteMode 关系中。抢占模式(temPreempt)表示待办任务的所有执 行者中根据抢占模式只有一个执行者能抢到此待办任务进行处理,那么在抢的同时把其他执行者状 态都设置为取消(tesCanceled)。同时模式(temSimultaneous)指的是待办任务中所有执行者都可以 处理此待办任务,当所有执行者都处理完毕或者当控制者处理完毕了以后,待办任务才可以做流转 和回退等操作。顺序模式(temSequential)指的是待办任务的执行者可以按照一定顺序来处理此待 办任务,顺序是由执行者表达式里返回的组织单元顺序或者在流转对话框中选择执行者的顺序来确 定的,当生成待办任务时只有第一个执行者的状态是待办(tesReady),其他执行者状态都是等待中 (tesSleeping),等第一个执行者处理完毕以后才把第二个执行者的状态设置为(tesReady),以此类 推到所有执行者都处理完毕后待办任务才可以做流转或回退操作。任务执行模式最终被存到待办任 务的执行模式属性里了。 任务抢占模式定义当任务执行模式为抢占时,待办任务执行者做什么操作可以抢到待办任务。 打开时抢占(tpmOpen)是指谁先打开待办任务就算谁的,其实就是在执行 executeTaskAction 时执 行抢占操作。处理时抢占(tpmExecute)是指谁先做流转,回退或者转发等待办任务操作就算谁的。 抢占是把除当前操作者以外的其他所有执行者的状态都设置为取消(tmsCanceled)。任务抢占模式 最终被存到待办任务的执行模式属性里了。 任务属性 任务属性是用来在生成活动环节的待办任务时给它的属性赋值的,其实任务标题和限制时间本 质上都是给待办任务的属性赋值,把它们单独拿出来配置是出于方便性的考虑。任务属性可以给待 办任务的任意属性赋值,只要指定属性名和对应的值表达式即可。在通知时会把所有任务属性里的 属性的计算结果存入到待办任务对应的各个属性中。 任务属性一般用来给用户扩展的或者默认没有提供配置选项的属性赋值。 由于待办任务本质上也是存入任务表的,所以任务属性这里属性名的选择范围就是概念 SA_Task 下的所有关系。 5.4.4 流转规则 业务流程运行中当某个活动环节处理完毕以后要流到下一步去,即为流转。顾名思义流转规则 就是在当前活动环节做流转操作时生效的规则,这来的流转操作指的是 advanceProcessQueryAction 动作。它定义的是当前活动环节调用 advanceProcessQueryAction 动作时的一些选项,例如是否需要 弹出流转对话框等。 需要注意的是,流转到下一步是哪些环节和是哪些执行者则由环节间的关系和下一步活动环节 的执行规则来定的。 生效条件 生效条件使用表达式的方式定义流转规则满足什么条件才起作用。生效条件里定义的表达式最 终计算结果必须是真(true)或假(false)。生效条件属性是必须设置的,如果定义常量则直接写 true 或 false 就可以了。条件表达式的设置和其中的函数,如何取业务数据等描述,详见 5.6.3。 流转确认 流转确认定义活动环节在做流转操作时,是否需要弹出流转对话框。如果直接调用 advanceProcessAction 业务动作实现流转操作,则此选项是不起作用的。只要是流转操作,则在流转 规则上的流转确认起着决定性的作用,不管引发它通知的通知规则里是怎么设的,都以这里的为准。 允许跳转 允许跳转定义活动环节在做流转操作时,是否允许抛弃原有流转而跳转入其他后续环节。允许 跳转仅仅作用于需要流转对话框时,如果允许跳转则在流转对话框里就会显示跳转页面进行跳转选 X5 高级开发手册 2011 Justep Corp. 第 36 页 共 273 页 起 步 科 技 择,否则不显示。 在流转对话框中跳转的选择范围是当前活动环节后的任意活动环节。由于跳转本身就属于一种 特殊情况,所以跳转到当前活动环节的后续环节时,这些后续环节的执行规则是不起作用的,执行 者也只能从整个组织机构中任意选择。 对于业务流程的业务动作来说,不管此属性如何设置其实都是支持跳转的,只要能构造出 ProcessControl 就可以了。 是否需要保存 当前流转动作中选择的信息是否保存,以供下次使用。 允许定制流程 允许定制流程定义活动环节在做流转操作时,是否允许抛弃原有流转而自由指定,甚至自由添 加几个环节(已经存在的)并指定这些环节的顺序。 定制流程允许当前活动环节不按流程图的定义进行流转,不仅可以指定后序环节以及环节的执 行者,并且可以指定后序若干个环节及环节的执行者。允许定制流程后,可以指后后序环节的选择 范围。 强制流转 强制流转定义在活动环节做流转操作时,是否忽略存储于待办任务中的执行模式而直接可以进 行流转或回退操作。其实只有在执行模式设置为同时或顺序,并且当前执行者不是待办任务的最后 一个执行者或不是控制者时此属性才起作用。强制流转就是待办任务的任意执行者都可以做流转操 作,否则就要收到执行模式的约束。 强制流转以后,把其他尚未处理完成的执行者的状态都设置为取消(tmsCanceled)。类似于做 了抢占处理一样。 任务等待 任务等待的基础是任务分支。在业务流程中有两种情况会造成任务分支,第一种是经过了 AND 分支,而第二种则是在某个活动环节上的执行规则中任务分配模式被设置为独立分配。业务流程中 的待办任务在某个点分支以后,可以理解为在业务流程中出现了多条线路并行处理。 任务等待就是定义当前待办任务流转时是否需要等待其他有可能流入当前活动环节的待办任 务,如果需要任务等待且确实还有其他待办任务可能流入当前活动环节,则流转操作只是把当前待 办任务状态设置为已结束(tmsFinished)而并不实际往下流转到下一步,反之如果已经没有可能流 入当前活动环节的其他待办任务了,那就把当前待办任务和其他已经结束而尚未实际流转的待办任 务一起流转。 任务等待会造成当前环节的下一步活动环节同时收到多条待办任务,因为流转操作时可能以前 已经有待办任务结束了但尚未实际流转,而流转操作会把此类待办任务和当前的待办任务一起流转。 本质上和这些待办任务单个单独的流转是没有区别的。 任务合并 在业务流程中有两种情况会造成任务合并,第一种就是经过了 AND 合并,而第二种则是这里的 任务合并。任务合并是要以任务等待为基础的,如果已经没有可能流入当前环节的待办任务了,那 就把当前待办任务和其他已经结束但没有流转的待办任务一起流转,但后续每个活动环节只会收到 一条待办任务。 任务分支环节 需要任务等待的时候,业务流程引擎会自动计算待办任务是从哪个环节开始分支的,确定一个 分支环节到当前环节的范围,根据范围内的待办任务参与任务等待和任务合并的计算。但是自动计 算出来的就分支环节未必是百分支百严格,所以任务分支环节用于配置当自动计算结果不严格是可 以手工指定待办任务发生分支的环节。 任务分支环节可以是一个活动环节也可以是一个 AND 分支。 X5 高级开发手册 2011 Justep Corp. 第 37 页 共 273 页 起 步 科 技 5.4.5 回退规则 业务流程运行中在某个活动环节由于某种原因不能继续发流到下一步,而需要发回给上一步重 新处理既为回退。顾名思义流转规则就是在当前活动环节做回退操作时生效的规则,这里的回退操 作指的是 backProcessQueryAction 动作。它定义的是当前活动环节调用 backProcessQueryAction 动作 时的一些选项,例如是否需要弹出流转对话框等。 需要注意的是,回退操作是把待办任务再发给曾经经过的活动环节,所以给曾经经过的活动环 节生成新的待办任务的依据不再是这些活动环节上定义的执行规则,而是这些活动环节当初用来流 转的待办任务。曾经的待办任务由谁处理就把新待办任务发给谁,并且执行模式,抢占模式等一些 属性都从旧待办任务上直接拷贝到新待办任务里的。 生效条件 生效条件使用表达式的方式定义执行规则满足什么条件才起作用。生效条件里定义的表达式最 终计算结果必须是真(true)或假(false)。生效条件属性是必须设置的,如果定义常量则直接写 true 或 false 就可以了。条件表达式的设置和其中的函数,如何取业务数据等描述,详见 5.6.3。 是否需要保存 当前回退动作中选择的信息是否保存,以供下次使用。 回退确认 回退确认定义活动环节在做流转操作时,是否需要弹出回退对话框。如果直接调用 backProcessAction 业务动作实现回退操作,则此选项是不起作用的。只要是回退操作,则在回退规 则上的回退确认起着决定性的作用,不管它引发通知的通知规则里是怎么设的,都以这里的为准。 强制回退 强制回退定义活动环节在做回退操作时,是否忽略存储于待办任务中的执行模式而直接可以进 行回退操作。其实只有在执行模式设置为同时或顺序,并且当前执行者不是待办任务的最后一个执 行者或不是控制者时此属性才起作用。强制回退就是待办任务的任意执行者都可以做回退操作,否 则就要受到执行模式的约束。 强制回退以后,把其他尚未处理完成的执行者的状态都设置为取消(tmsCanceled)。类似于做 了抢占处理一样。 按原路返回 在活动环节上做回退操作了以后,把待办任务发给某个活动环节曾经的执行者。那么此执行者 处理完成了以后是把待办任务直接再发给退来的环节呢,还是根据业务流程定义把待办任务再重新 一步一步流到退来环节。如图所示,途中虚线表示回退和回退后的流转,左边是按原路返回,右边 是重新一步一步流到退来环节。 图 5.6 按原路返回和不按原路返回 按原路返回指的就当前活动环节的待办任务回退以后,要求待办任务的执行者处理完成以后就 把待办任务再直接发回来,而不要再重新流一次。按原路返回最终是把发给对方的待办任务所属的 X5 高级开发手册 2011 Justep Corp. 第 38 页 共 273 页 起 步 科 技 概念 SA_Task 的关系 sExcuteMode2 赋值为 flowToFront。再对方做流转操作时,根据此关系的的值作 为依据就可以知道流转操作的目标。 如果当前活动环节处于一个 AND 分支中的,并且回退操作的目标活动环节处于 AND 分支外。当 指定了按原路返回属性时,回退操作不会吧 AND 分支中的其他待办任务取消。否则就默认取消 AND 分支中的其他待办任务。本质在于如果待办任务曾经经过了分支处理,回退操作时的目标活动环节 超过了分支范围的话,做回退操作时按原路返回属性不会导致其他分支范围内待办任务的取消。否 则就会取消分支范围内的其他待办任务。 如果当前活动环节是需要多人处理的,并且执行模式是同时或顺序时。执行回退操作时按原路 返回属性不会导致其他分支范围内待办任务的取消。否则就会取消分支范围内的其他待办任务。 回退范围 回退范围定义活动环节在做回退操作时,可以退到曾经经过的活动环节中的哪些环节。回退范 围的选择范围是当前活动环节前序的所有活动环节,此属性是必须设置的。 前序人指的是退给当前待办任务的前一个待办任务的执行者。需要注意的是当前待办任务的前 一个待办任务未必就是当前活动环节的前一个活动环节的待办任务。例如当前待办任务是转发过来 的,那么当前待办任务和前一个待办任务就属于同一个活动环节。 前序环节指的是退给当前待办任务所属活动环节的前一个活动环节的待办任务的执行者。如果 当前活动环节的前面有多个活动环节相连,例如 AND 合并后的活动环节,则可以任意选择其中活动 环节的执行者回退。 首环节指的是退给业务流程启动时生成待办任务的活动环节的执行者。首环节一般都是指入口 环节,但是并不一定是入口环节,因为业务流程其实可以把任意活动环节作为入口环节。 指定环节指的是退给指定的某个前序环节的执行者。指定环节可以是单个或者多个,但是都必 须是当前活动环节的前序环节。当指定的是多个环节时,可以从其中任选一个退给它的执行者。 所有前序环节指的是回退时把当前待办任务所有曾经经过活动环节都列出来,任选其中一个退 给它的执行者。 5.4.6 转发规则 业务流程运行中某个活动环节的执行者无法决定要怎么处理,或者需要先把待办任务发给其他 人看看然后再做处理即为转发。转发规则就是在当前活动环节做转发操作时生效的规则,这里的转 发操作指的是 transferTaskQueryAction 动作。它定义的是当前活动环节调用 transferTaskQueryAction 动作时的一些选项,例如是否需要弹出流转对话框等。 转发和流转区别在于,流转是把待办任务发给了下一步活动环节的执行者,业务流程的当前活 动环节和执行者都变了。而转发虽然也把待办任务流给了其他执行者,但是业务流程的当前活动环 节没有发生改变。 转发规则的属性配置和执行规则一摸一样,所以转发规则的详细信息请参考执行规则的详细信 息。详见。 5.4.7 合并规则 合并规则是定义在 AND 合并上用来描述 AND 合并的多个输入之间的关系的。合并规则是在所有 直接输入到 AND 合并的活动环节中,只要任意活动环节做流转操作时它都会起作用。 生效条件 生效条件使用表达式的方式定义合并规则满足什么条件才起作用。生效条件里定义的表达式最 X5 高级开发手册 2011 Justep Corp. 第 39 页 共 273 页 起 步 科 技 终计算结果必须是真(true)或假(false)。生效条件属性是必须设置的。如果定义常量则直接写 true 或 false 就可以了。条件表达式的设置和其中的函数,如何取业务数据等描述,详见 5.6.3。 是否需要保存 当前转发动作中选择的信息是否保存,以供下次使用。 合并模式 合并模式是 AND 合并上对输入的待办任务应该如何做合并的定义。在此过程中所有流入 AND 合并的属于合并规则可选输入的待办任务是没有任何决定权限,只有属于必选输入的待办任务流入 AND 合并才会计算 AND 合并是否允许通行。 AND 合并是否允许通行的规则是就计算是否还存在有可能流入 AND 合并的属于必选输入的待办 任务,如果有则不允许通行。反之允许通行。AND 合并通行的规则是,把当前待办任务和已经结束 但是尚未实际流转的待办任务合并成一条待办任务,往下流转。 合并指是常规的待办任务合并。当有必选输入流入 AND 合并时,判断是否还有属于必选输入的 待办任务可能会流入 AND 合并,如果有则 AND 合并不能通行,把当前待办任务状态设置为已完成 (tmsFinished)但不实际流入下一环节。如果已经没有了,则把当前待办任务和已完成且尚未实际 流转的待办任务合并后流入下一步环节,同时取消(tmsCanceled)其他所有尚未流入 AND 合并的待 办任务。在此过程中所有属于可选输入的待办任务流入 AND 合并都缺省被当作 AND 合并不能通过处 理。 抢占指的是在 AND 合并所有的必选输入中只要有其中一条待办任务流入 AND 合并,则 AND 合 并就可以通行流入下一环节,同时把所有尚未流入 AND 合并的待办任务都取消(tmsCanceled)。 可选输入 可选输入定义 AND 合并哪些输入是可选的,剩下的则是必选的。可选输入的选择范围是和 AND 合并直接相连的前顺环节。可选输入只有在计算合并模式的使用起作用,详见合并模式。 5.4.8 分支规则 合并规则是定义在 AND 分支上用来定义 AND 分支的多个输出之间的关系的。分支规则是在 AND 分支前 的活动环节做流转操作时起作用的。例如某个活动环节后的 AND 分支后有 3 个活动环节,在此活动环节 流转时想要做到其中 2 个活动环节是必须选择的,剩下 1 个活动环节是否选择由用户自己定。在分支规 则中描述,用户自己决定的活动环节为可选输出,剩下就是必选输出了。 生效条件 生效条件使用表达式的方式定义分支规则满足什么条件才起作用。生效条件里定义的表达式最 终计算结果必须是真(true)或假(false)。生效条件属性是必须设置的。如果定义常量则直接写 true 或 false 就可以了。条件表达式的设置和其中的函数,如何取业务数据等描述,详见 5.6.3。 可选输出 可选输出定义 AND 分支后的环节中,哪些是用户在流转时可自己决定选还是不选。在流转对话 框中,可选环节是可以被去掉的,而必选环节则不可以被去掉。以保证必选和可选的特性。 5.5 业务流程执行者 业务流程从本质上说其实就是待办任务在不同人之间按照既定的顺序和规则间传来传去,所以 业务流程是否能和组织机构紧密结合是衡量业务流程是否可用的一大标准。 X5 业务流程通过组织机构函数的方式实现在业务流程和组织机构的紧密整合,使用组织机构函 数组成组织机构表达式,用来选择任意复杂的组织范围作为业务流程执行者。同时一般的表达式函 X5 高级开发手册 2011 Justep Corp. 第 40 页 共 273 页 起 步 科 技 数也可以穿插用于组织机构表达式中,实现了业务流程可以从任意地方获取执行者。业务流程执行 者定义目前用在执行规则,通知规则和转发规则中,执行规则用来定义活动环节的执行者,通知规 则用来定义通知接收者,转发规则用来定义转发时的接收者。 之所以叫执行者而不叫处理人的原因在于,业务流程的待办任务不仅仅可以发给人员成员,还 可以发给岗位,部门和机构等组织单位。当待办任务的执行者是一个人员成员时只有他自己能看到 和处理这个待办任务。而当待办任务的执行者是岗位,部门或机构等组织单位时,这些组织和它们 的子组织下分配的所有人员成员都可以看到和处理待办任务。 执行者函数和其他一般函数最大的区别在于返回值的格式,执行者函数的返回值类型必须是指 定类型(OrgUnit)的组织单元的列表。组织单元是用 FID 和 FName 两个标识一起来描述。 其实执行者函数本质就是选择出各种条件的组织单元。执行者函数本身也不仅仅可以在业务流 程中使用,在系统其他有根据条件选择组织单元的地方可以通过直接调用函数或者调用表达式的方 式使用。其他一般函数的返回值只要和执行者函数的输入参数匹配,就可以直接当作执行者函数的 传入参数使用。 5.5.1 基于组织机构的执行者函数 根据组织机构的树形层次,成员,授权和管理关系而提供的选择组织单元的函数。这些函数不 依赖业务流程的任何东西,所以它们不仅仅在业务流程中用,在任何其他选择组织范围的地方都可 以用。 表 5.1 组织机构函数及其用途 函数名 描述 findManagers 获取指定组织单元的管理者 findManagersOfCurrentDept 获取当前部门的管理者 findOnePersonMemberByID 根据人的 ID 获取人员成员 findOrgChildren 获取指定组织的子(不包括人员成员) findOrgChildren2 获取指定组织的子 findOrgChildrenByCode 获取属于指定组织单元的指定编码的子(不包括人员成员) findOrgChildrenByLevel 获取属于指定组织单元的指定级别的子(不包括人员成员) findOrgParents 获取属于指定组织单元的父 findOrgParentsByCode 获取属于指定组织单元的指定编码的父 findOrgParentsByLevel 获取属于指定组织单元的指定级别的父 findOrgUnitsByFID 根据 FID 获取指定的组织单元 findOrgUnitsByID 根据 ID 获取指定的组织单元 findOrgUnitsHasRole 获取属于指定角色 ID 的组织单元 findOrgUntisHasRoleByCode 获取属于指定角色 Code 的组织单元 findPersonMembersByCode 根据人的编码获取人员成员 findPersonMembersByCodeList 根据人的编码获取人员成员 findPersonMembersByID 根据人的 ID 获取人员成员 findPersonMembersByIDList 根据人的 ID 获取人员成员 findPersonMembersInOrg 获取指定部门下的人员成员 findSubordinations 获取指定组织单元的下属 currentPersonMember 当前人员成员 X5 高级开发手册 2011 Justep Corp. 第 41 页 共 273 页 起 步 科 技 5.5.2 基于业务流程的执行者函数 根据业务流程图上的环节和前后关系而提供的选择组织单元的函数,由于这些函数依赖了业务 流程中的待办任务,所以只能在业务流程中使用。 在所有基于业务流程的执行者函数中,指定环节的参数都可以传入标识环节的相对参数,例如 ROOT(首环节),ALL(所有环节),PREV(前序环节)。 基于业务流程的执行者函数中所有取 FID 的函数都只是返回一个字符串,只能当作其他函数的 输入参数,而无法直接当作执行者。 表 5.2 业务流程的执行者函数及其用途 函数名 描述 indActivityCreator 获取指定环节的创建者 findActivityCreatorOrg 获取指定环节的创建者所在的组织 findActivityCreatorDept 获取指定环节的创建者所在的部门 findActivityCreatorOgn 获取指定环节的创建者所在的机构 findActivityExecutor 获取指定环节的执行者 findActivityExecutorOrg 获取指定环节的执行者所在的组织 findActivityExecutorDept 获取指定环节的执行者所在的部门 findActivityExecutorOgn 获取指定环节的执行者所在的机构 findOrgUnitsHasActivity 获取拥有指定环节权限的组织单元 findOrgUnitsHasCActivity 获取拥有当前环节权限的组织单元 findOrgUnitsHasCActivityInACDept 获取和指定环节创建者在同一部门下, 拥有当前 activity 权限的组织单元 findOrgUnitsHasCActivityInACOgn 获取和指定环节创建者在同一机构下, 拥有当前 activity 权限的组织单元 findOrgUnitsHasCActivityInAEDept 获取和指定环节处理者在同一部门下, 拥有当前 activity 权限的组织单元 findOrgUnitsHasCActivityInAEOgn 获取和指定环节处理者在同一机构下, 拥有当前 activity 权限的组织单元 5.5.3 其他执行者函数 用于给执行者函数之间进行逻辑运算和参数转换而提供的函数。下表列的只是一些常用函数而 不是所有函数。所有函数以 STUDIO 中表达式构造器上公布的函数为准。 表 5.3 其他执行者函数及其用途 属性名 描述 orgUnitsAnd 两个 OrgUnit 列表做交集操作 rgUnitsByIndex 从组织单元列表中获取指定序号的组织单元 orgUnitsOr 两个 OrgUnit 列表做并集操作 orgUnitsToDepts 组织单元转换成相应的部门 orgUnitsToOgns 组织单元转换成相应的机构 orgUnitsToOrgs 组织单元转换成相应的组织 distinctOrgUnitsByFID 根据 FID 对组织机构列表进行 distinct 操作 distinctOrgUnitsByID 根据 ID 对组织机构列表进行 distinct 操作 X5 高级开发手册 2011 Justep Corp. 第 42 页 共 273 页 起 步 科 技 5.5.4 执行者函数的扩展 执行者函数的扩展中最基础,最重要的就是要返回值满足执行者的要求,否则就只能当作一般 的函数作为其他函数的输入参数使用。 在 JAVA 中写代码的时候,可以使用任意的方式从任意地方把组织单元的 FID 和 FName 获取到后, 用它们来创建 OrgUnit 对象。最后吧 OrgUnit 对象加入到标准的 JAVA List 中。 5.6 业务流程与业务数据 业务流程的本质就是待办任务在不同的人之间传来传去,待办任务其实是“桥梁”起到通知提 醒的作用,而实际在人之间传来出去的实体应该是业务表单。所以,业务流程能否和业务数据紧密 结合就是业务流程是否可用的另一大衡量标准。 在业务流程中使用业务数据有三种方式,它们分别是在事件的JAVA代码中直接访问业务数据库, 业务流程变量和业务表达式。三种方式分别有不同的用途,在 JAVA 代码中一般直接访问业务数据库 更新业务数据。业务流程变量中一般记录一些从业务数据上取来的值参与业务流程各种表达式计算。 业务表达式则是业务模型底提供的公共机制,里面有一些函数可以访问业务数据中的值。 5.6.1 sData 当待办任务在不同的人之间传来传去时,首先要解决的一个问题就是如果让双方的业务表单保 持一致。例如人员 A 通过待办任务把一个单号为 001 的申请单发给人员 B 审批,则人员 B 打开待办 任务处理的时候看到的业务单据就应该是单号为 001 的申请单。 在待办任务中业务数据的传递是通过 sData 来实现的。sData 只是一个泛指,在待办任务的概念 SA_Task 中它其实是靠 4 个关系来描述的,它们分别是 sData1,sData2,sData3 和 sData4。当业务流 程启动时,在调用流程启动动作(startProcessAction)的地方要求必须传入一个值为 sData1 的初始 值。这个值被记录在 sData1 中在待办任务中一直传着走,在上例中从人员 A 的待办任务传入人员 B 的待办任务。当人员 B 打开待办任务处理时,从 sData1 中把值取出来参与业务表单的过滤。 一般情况下,赋值给 sData 的都是当前业务单据的单号,也就是业务主表的主键。业务主表只 有一个主键时,自然 sData1 就够用了。如果业务主表是多主键则就需要把每个主键字段的值分别填 写入 sData1,sData2,sData3 和 sData4。也就是说,目前只支持 4 个字段的联合主键。 当启动一个业务流程需要同时处理多条业务主表的数据时,一般推荐的方案是为这多条业务数 据生成一个批号,再把批号赋值给 sData。同样也可以把多个单据的单号分别都赋值给 sData。也就 是说一个待办任务可以有多套 sData。每套 sData 里都包含 sData1,sData2,sData3 和 sData4。 在业务表达式中常常会这样用“:sData1”,这其实是业表达式中变量的用法,也就是说在业务表 达式中使用“:sData1”来引用 sData1 的值,同样的可以“:sData2”, “:sData3”和“:sData4”。 在业务流程事件的代码中,分别使用 ProcessUtils.getProcessData1() , ProcessUtils.getProcessData2(),ProcessUtils.getProcessData3()和 ProcessUtils.getProcessData4()获取到 sData 的值。 X5 高级开发手册 2011 Justep Corp. 第 43 页 共 273 页 起 步 科 技 5.6.2 业务流程变量(不支持) 业务流程变量把从业务数据中取到的或者从系统代码中取到的一些值存入业务流程的实例中, 参与业务数据的过滤或者业务流程表达式的计算。其实业务流程表达式的计算不一定需要依赖到变 量而可以直接调用函数来算,但是依赖变量的好处是只有在为变量赋值的地方业务流程需要和业务 模块产生联系,而直接调用函数就是每个调用点都有依赖业务模块了。 sData1, sData2, sData3, sData4 也是业务流程变量的一种,只是它们是特殊的,主体用来参与业 务过滤的系统级的业务流程变量。 在业务表达式中使用?号加变量名的方式使用访问变量值。而在业务流程事件的 JAVA 代码中则 是通过当前待办任务来访问变量值。 全局变量 定义于业务过程(Process)上的变量,当业务流程启动时根据定义把每个变量的值算出来,然 后和变量名一起存入到业务流程实例中。这种变量可以在业务流程中任何一个地方直接引用。 局部变量 定义于活动环节(Activity)上的变量,当其他活动环节做流转动作流入当前活动环节时根据定 义把每个变量的值计算出来,然后和变量名一起存入当前活动环节的待办任务中。这种变量只能在 当前活动环节中使用。 5.6.3 业务表达式 在业务流程中使用的表达式分为两大类,它们分别用来执行者的组织机构表达式,和一般的业 务表达式。两种表达式可以互相使用。 业务表达式其实是业务模型底层公共的表达式,它不仅仅在业务流程中用,在概念定义等其他 地方也用。业务表达式中的函数同样不是写死的,任何的函数基本都可以当作业务表达式的函数来 用。 在业务流程中可以使用任意的业务表达式函数,在这里就不一一列举,而只列出来一些业务流 程中最常用的函数以供参考。 业务流程的业务表达式函数 在表达式中,获取业务数据的值基本都使用 relationValue 函数,这种函数本质上就是根据传入 参数构造一个 SQL 去数据库里把对应表和字段的值查出来。在多条关联时,这些函数是完全可以互 相嵌套使用的,如果一个表达式里有多个这种函数,也就是说这个表达式计算时将发多个 SQL 到数 据库里取值。这些取值的函数是业务模型底层提供的公共的获取业务数据值的函数,不仅仅在只在 业务流程里使用。 表 5.4 业务流程的业务表达式函数及其用途 属性名 描述 relationValue 取关系的第一个值 relationValues 取关系的所有值 nextSeq 流水号 nextSeqString 流水号字符串 guid 创建 guid 唯一标识 startsWith 是否有指定前缀 endsWith 是否有指定后缀 extOfFile 获取后缀名 X5 高级开发手册 2011 Justep Corp. 第 44 页 共 273 页 起 步 科 技 pathOfFile 获取路径 nameNoExtOfFile 获取不含扩展名的文件名 nameOfFile 获取文件名 5.7 业务流程动作 由于业务流程是属于业务模型层的模块,所以部署运行在 BusinessServer 中,BusinessServer 与 外界交互的唯一手段就是通过业务动作。在业务表单里查询和提交业务数据是通过业务动作实现的, 同样的,流程的各种动作也是基于业务动作来实现的。 业务流程的各种操作,一般都由讯问和实际做两大类业务动作构成,只有个别操作没有提供关 于讯问的业务动作。所有讯问的业务动作都只是基于内存的推导和运算,把相关需要计算的规则, 环节和执行者都计算完毕后生成 ProcessControl,而不留下任何痕迹。实际做的业务动作都是根据传 入的 ProcessControl 完成实际的操作,并且把结果存入数据库。 业务流程默认提供的业务动作都是系统级别的,不需要在 Activity 里主动引用就可以直接调用 的。基本所有的业务流程的业务动作都是两个动作一起组合起来实现一个流程操作,例如流转操作 是由 advanceProcessQueryAction 动作先查出 ProcessControl,然后 advanceProcessAction 动作根据 ProcessControl 实际流转。 业务流程所有业务动作都是基于待办任务公布的,不但业务流程本身可以用,协同任务也可以 用。也就是说只要是待办任务的操作,基本都可以调用业务流程的业务动作。 5.7.1 启动 启动的本质是根据业务流程定义产生新的业务流程实例,并且为业务流程的入口活动环节生成 待办任务。需要注意的是,启动不一定只能给入口活动环节生成待办任务,只是在界面模型层里系 统默认提供的流程启动函数是那样实现的,其实启动时可以给业务流程中任何活动环节生成待办任 务,也就是说业务流程未必一定要从入口启动,还可以从中间某个环节启动。 启动操作由 startProcessQueryAction 和 startProcessAction 两个业务动作组成。 startProcessQueryAction 启动讯问,在实际启动前讯问有哪些入口环节,每个入口环节可以选择哪些执行者等信息。 startProcessQueryAction 不会实际让业务流程启动,它只是在内存里推导运行了整个启动的过程,然 后把运行结果以 ProcessControl 的形式返回而不会留下任何痕迹。基于 ProcessControl 可以弹对话框 选环节和选执行者,还可以在代码中修改 ProcessControl 实现代码控制启动。通过修改 ProcessControl 可以实现任意复杂的启动方式,从任意环节和任意人启动流程。 在调用 startProcessQueryAction 时首先计算的是启动规则,然后从开始环节往后找到入口环节, 计算入口环节的执行规则后生成 ProcessControl,所以在开始环节和入口环节中间的任何其他类型的 环节和规则都将会被计算。 startProcessAction 实际启动,调用这个业务动作实际生成业务流程实例和指定入口环节的待办任务,并且存入数 据库。只是在界面模型层里系统默认提供的流程启动函数其实就是直接调用了 startProcessAction。 通过传入 ProcessControl 参数可以实现对启动的控制,而当传入的 ProcessControl 值为 NULL 时它在 BusinessServer 内部首先调用了 startProcessQueryAction 获取到 ProcessControl 的值后再进行实际启动 的。 X5 高级开发手册 2011 Justep Corp. 第 45 页 共 273 页 起 步 科 技 其实 startProcessAction 本身不会产生任何计算规则和计算环节的行为,它仅仅就是根据 ProcessControl 实现启动。 界面模型层提供的流程启动函数 xui-start-process,直接调用 startProcessAction 动作,且 ProcessControl 参数值为 NULL。 5.7.2 流转 流转的本质首先是把当前待办任务的状态设置为已结束(tsFinished),然后为下一步活动环节生 成新的待办任务,当前待办任务和新待办任务间使用前后关系关联。 流转操作由 advanceProcessQueryAction 和 advanceProcessAction 两个业务动作组成。 advanceProcessQueryAction 流转讯问,在实际流转前讯问当前活动环节的下一步有多少个活动环节,每个活动环节有多少 执行者。advanceProcessQueryAction 实际上不会为下一步环节生成待办任务,它只是把流转的运行 过程在内存里推导运行了一遍,然后把运行结果以 ProcessControl 形式返回,不会留下任何痕迹。基 于 ProcessControl 可以弹出流转话框选择下一步环节和选择执行者,还可以在代码中修改 ProcessControl 实现代码控制流转。通过操作 ProcessControl 可以实现任意复杂的流转,像跳转和自 由流就是通过操作 ProcessControl 来实现的。 在调用 advanceProcessQueryAction 时首先计算当前活动环节的流转规则,然后基于当前活动环 节往后找到下一步活动环节,计算这些活动环节的执行规则后生成 ProcessControl。所以在当前活动 环节和下一步活动环节之间的所有环节和规则都将被计算。 advanceProcessAction 实际流转,调用此业务动作把当前待办任务结束后生成下一步活动环节的待办任务,并且存入 数据库。通过传入 ProcessControl 参数可以实现对流转的自定义,而当传入的 ProcessControl 为 NULL 时它在 BusinessServer 内部首先调用了 advanceProcessQueryAction 获取到 ProcessControl 的值后再进 行实际流转的。 其实 advanceProcessAction 本身不会产生任何计算规则和计算环节的行为,它仅仅就是根据 ProcessControl 实现流转。 执行完毕 advanceProcessAction 以后,如果当前业务流程实例的所有待办任务都已处理完成,则 自动触发 finishProcessAction 把当前业务流程实例的状态也设置为已结束(tesFinished)。 界面模型层的 process 组件上有流转操作的函数,它们分别是 advanceQuery/advanceQueryExt 和 advance/advanceExt。advanceQuery/advanceQueryExt 首先调用 advanceProcessQueryAction 动作获取 ProcessControl,判断是否需要弹出流转对话框,如果需要则基于 ProcessControl 构造流转对话框,并 且把流转对话框的选择结果再存入ProcessControl,最后传入ProcessControl调用advanceProcessAction 动作。advance/advanceExt 则直接调用 advanceProcessAction 动作,ProcessControl 参数值传入为 NULL。 由于 advance/advanceExt 减少了 ProcessControl 的传递,所以速度上会比 advanceQuery/advanceQueryExt 要高一些。 5.7.3 回退 回退的本质首先是把当前待办任务状态设置为已退回(tesReturned),然后给曾经经过的指定的 活动环节生成新的待办任务。当前待办任务和新待办任务间使用前后关系关联。 回退操作由 backProcessQueryAction 和 backProcessAction 两个业务动作组成。 backProcessQueryAction X5 高级开发手册 2011 Justep Corp. 第 46 页 共 273 页 起 步 科 技 回退讯问,在实际回退前讯问当前活动环节能回退到哪些活动环节,每个活动环节有多少执行 者。backProcessQueryAction 只是把回退的运行过程在内存里推导运行了一遍,然后把运行结果以 ProcessControl 形式返回,不会留下任何痕迹。基于 ProcessControl 可以弹回退话框选择回退的活动 环节和选择执行者,还可以在代码中修改 ProcessControl 实现代码控制回退。通过操作 ProcessControl 可以实现任意复杂的回退,甚至是业务流程定义和规则中本来就不支持的。 在调用 backProcessQueryAction 时首先计算当前活动环节的回退规则,然后再根据回退规则找出 能退到哪些活动环节去,在获取到这些活动环节曾经的待办任务后生成 ProcessControl。所以在回退 时只会计算当前环节的回退规则,而不会产生其他任何计算行为。 backProcessAction 实际流转,调用此业务动作把当前待办任务结束后生成目标活动环节的待办任务,并且存入数 据库。通过传入 ProcessControl 参数可以实现对回退的控制,而当传入的 ProcessControl 为 NULL 时 它的代码实现其实是首先调用了 backProcessQueryAction 获取到 ProcessControl 的值后再进行实际回 退。 其实 backProcessAction 本身不会产生任何计算规则和计算环节的行为,它仅仅就是根据 ProcessControl 实现回退。 界面模型层的 process 组件上有两个关于回退操作的函数,它们分别是 backQuery/backQueryExt 和 back/backExt。backQuery/backQueryExt 首先调用 backProcessQueryAction 动作获取 ProcessControl, 判断是否需要弹出流转对话框,如果需要则基于 ProcessControl 构造流转对话框,并且把流转对话框 的选择结果再存入 ProcessControl,最后传入 ProcessControl 调用 backProcessAction 动作。back/backExt 则直接调用 backProcessAction 动作,ProcessControl 参数值传入为 NULL。由于 back/backExt 减少了 ProcessControl 的传递,所以速度上会比 backQuery/backQueryExt 要高一些。 5.7.4 转发 转发的本质首先是把当前待办任务的状态设置为已转发(tesTransmited),然后基于当前活动环 节给其他执行者生成新的待办任务。当前待办任务和新待办任务采用前后关系关联。 转发操作由 transferTaskQueryAction 和 transferTaskAction 两个业务动作组成。 transferTaskQueryAction 转发讯问,在实际转发前讯问当前活动环节能转发给哪些执行者。transferTaskQueryAction 只是 把转发的运行过程在内存里推导运行了一遍,然后把运行结果以 ProcessControl 形式返回。基于 ProcessControl 可以弹转发话框选择执行者,还可以在代码中修改 ProcessControl 实现代码控制转发。 通过操作 ProcessControl 可以实现任意复杂的转发,甚至是业务流程定义和规则中本来就不支持的。 在调用 transferTaskQueryAction 时首先计算当前活动环节的转发规则,然后根据转发规则后生成 ProcessControl。所以在转发时只会计算当前环节的转发规则,而不会产生其他任何计算行为。 transferTaskAction 实际流转,调用此业务动作把当前待办任务结束后给选择的执行者生成新待办任务,并且存入 数据库。通过传入 ProcessControl 参数可以实现对转发的控制,而当传入的 ProcessControl 为 NULL 时它的代码实现其实是首先调用了 transferTaskQueryAction 获取到 ProcessControl 的值后再进行实际 转发。 其实 transferTaskAction 本身不会产生任何计算规则和计算环节的行为,它仅仅就是根据 ProcessControl 实现转发。 界 面 模 型 层 的 process 组件上有两个关于转发操作的函数,它们分别是 transferQuery/transferQueryExt 和 transfer/transferExt 。 transferQuery/transferQueryExt 首先调用 transferTaskQueryAction 动作获取 ProcessControl,判断是否需要弹出流转对话框,如果需要则基于 X5 高级开发手册 2011 Justep Corp. 第 47 页 共 273 页 起 步 科 技 ProcessControl 构造流转对话框,并且把流转对话框的选择结果再存入 ProcessControl,最后传入 ProcessControl 调用 transferTaskAction 动作。transfer/transferExt 则直接调用 transferTaskAction 动作, ProcessControl 参数值传入为 NULL。由于 transfer/transferExt 减少了 ProcessControl 的传递,所以速 度上会比 transferQuery/transferQueryExt 要高一些。 5.7.5 终止 终止的本质就是把当前业务流程实例和其下所有待办任务的状态都设置为已终止(tesAborted)。 终止操作由 abortProcessQueryAction 和 abortProcessAction 两个业务动作(Action)组成。 abortProcessQueryAction 终止讯问,在实际终止前讯问需要通知给哪些相关人。abortProcessQueryAction 根据在业务过程 (Process)上设置的通知规则生成 ProcessControl。基于 ProcessControl 可以弹出通知对话框选择执 行者,还可以在代码中修改 ProcessControl 实现代码控制终止时通知。 在调用 abortProcessAction 时首先计算业务过程(Process)上的通知规则,然后根据通知规则后 生成 ProcessControl。所以在终止时只会计算当前业务过程的通知规则,而不会产生其他任何计算行 为。 abortProcessAction 实际终止,调用此业务动作(Action)把更新当前业务流程实例和其所有待办任务的状态为已终 止(tesAborted),并且存入数据库。通过传入 ProcessControl 参数可以实现对终止时通知的控制,而 当传入的 ProcessControl 为 NULL 时 abortProcessAction 的代码实现其实是首先调用了 abortProcessQueryAction 获取到 ProcessControl 的值后再进行实际终止。 其实 abortProcessAction 本身不会产生任何计算规则和计算环节的行为,它仅仅就是根据 ProcessControl 实现终止。 界面模型层的 process 组件上有两个关于终止操作的函数,它们分别是 abortQuery/abortQueryExt 和 abort/abortExt 。 abortQuery/abortQueryExt 首 先 调 用 abortProcessQueryAction 动 作 获 取 ProcessControl,判断是否需要弹出流转对话框,如果需要则基于 ProcessControl 构造流转对话框,并 且把流转对话框的选择结果再存入 ProcessControl,最后传入 ProcessControl 调用 abortProcessAction 动作。abort/abortExt 则直接调用 abortProcessAction 动作,ProcessControl 参数值传入为 NULL。由于 abort/abortExt 减少了 ProcessControl 的传递,所以速度上会比 abortQuery/abortQueryExt 要高一些。 5.7.6 暂停 暂停的本质就是把当前业务流程实例和其所有待办任务的状态都设置为已暂停(tesPaused)。暂 停和终止在代码实现上是没什么区别的,从业务上说两者区别在于暂停可以再次被恢复,而终止则 指的是以后都不再处理了。 暂停操作由 suspendProcessQueryAction 和 suspendProcessAction 两个业务动作组成。 suspendProcessQueryAction 暂停讯问,在实际暂停前讯问需要通知给哪些相关人。suspendProcessQueryAction 根据在业务 过程(Process)上设置的通知规则生成 ProcessControl。基于 ProcessControl 可以弹出通知对话框选 择执行者,还可以在代码中修改 ProcessControl 实现代码控制暂停时通知。 在调用 suspendProcessQueryAction 时首先计算业务过程(Process)上的通知规则,然后根据通 知规则后生成 ProcessControl。所以在终止时只会计算当前业务过程的通知规则,而不会产生其他任 何计算行为。 suspendProcessAction X5 高级开发手册 2011 Justep Corp. 第 48 页 共 273 页 起 步 科 技 实际终止,调用此业务动作(Action)把更新当前业务流程实例和其所有待办任务的状态为已暂 停(tesPaushed),并且存入数据库。通过传入 ProcessControl 参数可以实现对终止时通知的控制,而 当传入的 ProcessControl 为 NULL 时 suspendProcessAction 的代码实现其实是首先调用了 suspendProcessQueryAction 获取到 ProcessControl 的值后再进行实际终止。 其实 suspendProcessAction 本身不会产生任何计算规则和计算环节的行为,它仅仅就是根据 ProcessControl 实现终止。 界 面 模 型 层 的 process 组件上有两个关于暂停操作的函数,它们分别是 suspendQuery/suspendQueryExt 和 suspend/suspendExt。suspendQuery/suspendQueryExt 首先调用 suspendProcessQueryAction 动作获取 ProcessControl,判断是否需要弹出流转对话框,如果需要则基 于 ProcessControl 构造流转对话框,并且把流转对话框的选择结果再存入 ProcessControl,最后传入 ProcessControl 调用 suspendProcessAction 动作。suspend/suspendExt 则直接调用 suspendProcessAction 动作,ProcessControl 参数值传入为 NULL。由于 suspend/suspendExt 减少了 ProcessControl 的传递, 所以速度上会比 suspendQuery/suspendQueryExt 要高一些。 5.7.7 恢复 恢复的本质就是把当前业务流程实例和其所有待办任务中所有状态为已暂停(tesPaushed)的都 把状态设置为待办中(tesReady)。使其能重新得到处理。 恢复操作只有 resumeProcessAction 一个业务动作。 resumeProcessAction 实际恢复,调用此业务动作把当前业务流程实例和其所有待办任务中状态为已暂停(tesPaused) 的都更新为待办中(tesReady),并且存入数据库。 其实 abortProcessAction 本身不会产生任何计算规则和计算环节的行为,它仅仅实现对状态的更 新。 界面模型层的 process 组件上有流程唤醒函数 resume/resumeExt,直接调用 resumeProcessAction 动作,且 ProcessControl 参数值为 NULL。 5.7.8 处理 处理是指在待办任务页面,任务中心或者其他任何能看到待办任务的地方打开待办任务相关的 业务表单进行处理,此时会调用 executeTaskAction 实现待办任务打开时的一些自动特性。 executeTaskAction 此业务动作是在待办任务页面或者任务中心处理待办任务时自动调用的,实现一些打开时的自 动特性。例如打开时抢占,打开时结束,打开时流转。 5.7.9 定制 定制是指运行时不按流程定义运行,动态指定指定一个流程模板,使得后续按指定的流程模板 运行。流程模板包含若干个环节及其之间的关系,对于每个环节,可以指定相应的执行者,流程模 板中的环节必须是当前流程定义中存在的环节。 定制不仅可以重新定义一个新的流程模板,而且可以选择已经定义过的流程模板。 定 制 操 作 由 startCustomizedProcessQueryAction 、 startCustomizedProcessAction 和 cancelCustomizedProcessAction 组成。 X5 高级开发手册 2011 Justep Corp. 第 49 页 共 273 页 起 步 科 技 startCustomizedProcessQueryAction 此业务动作是查询当前环节实例是否关联了流程模板,如果关联了流程模板,返回具体的流程 模板标识及所处的位置信息。 startCustomizedProcessAction 此业务动作是将指定的流程模板关联到当前环节,使得从当前环节开始按指定的流程模板运行。 cancelCustomizedProcessAction 此业务动作是取消当前环节实例与流程模板的关系。 5.8 业务流程事件 在实际业务需求中往往需要写一些代码用来控制业务流程运行,或根据业务流程的运行结果同 步业务数据,更有甚者通过代码是实现一些业务流程原本不支持的特性。而写这些代码的切入点就 是事件。 业务流程事件其实就是业务流程默认提供的业务动作的事件。它不只包含下面列的这些事件, 还可以给任意动作扩展事件。 业务流程事件可以在业务过程上定义,也可以在业务环节上定义。它们的触发顺序是先触发业 务过程上级的事件,后触发业务环节上的事件。 5.8.1 业务过程级事件 业务过程级事件在业务过程的任意业务环节中执行对应业务动作都会触发。在此事件中一般写 一些公共的处理。这里列举的只是一些最常用事件,不是所有事件。每个业务 Action 都有 before 和 after 事件。 表 5.5 业务过程级事件和动作 事件名 业务动作(Action) OnBeforeStartQuery startProcessQueryAction OnAfterStartQuery startProcessQueryAction OnBeforeStart startProcessAction OnAfterStart startProcessAction OnBeforeAdvanceQuery advanceProcessQueryAction OnAfterAdvanceQuery advanceProcessQueryAction OnBeforeAdvance advanceProcessAction OnAfterAdvance advanceProcessAction OnBeforeBackQuery backProcessQueryAction OnAfterBackQuery backProcessQueryAction OnBeforeBack backProcessAction OnAfterBack backProcessAction OnBeforeAbortQuery abortProcessQueryAction OnAfterAbortQuery abortProcessQueryAction OnBeforeAbort abortProcessAction OnAfterAbort abortProcessAction OnBeforeSuspendQuery suspendProcessQueryAction OnAfterSuspendQuery suspendProcessQueryAction X5 高级开发手册 2011 Justep Corp. 第 50 页 共 273 页 起 步 科 技 OnBeforeSuspend suspendProcessAction OnAfterSuspend suspendProcessAction OnBeforeStartCustomizedQuery startCustomizedProcessQueryAction OnAfterStartCustomizedQuery startCustomizedProcessQueryAction OnBeforeStartCustomized startCustomizedProcessAction OnAfterStartCustomized startCustomizedProcessAction OnBeforeResume resumeProcessAction OnAfterResume resumeProcessAction OnBeforeFinish finishProcessAction OnAfterFinish finishProcessAction OnBeforeWithaw withdrawTaskAction OnAfterWithaw withdrawTaskAction OnBeforeTransferQuery transferTaskQueryAction OnAfterTransferQuery transferTaskQueryAction OnBeforeTransfer transferTaskAction OnAfterTransfer transferTaskAction 5.8.2 业务环节级事件 业务环节只有基于当前业务环节执行对应业务动作时才会触发。在业务环节级的事件中一般写 一些私有的处理。这里列举的只是一些最常用事件,不是所有事件。事件是完全可以根据 action 来 扩展的。 表 5.6 业务环节级事件和动作 事件名 业务动作(Action) OnBeforeAdvanceQuery advanceProcessQueryAction OnAfterAdvanceQuery advanceProcessQueryAction OnBeforeAdvance advanceProcessAction OnAfterAdvance advanceProcessAction OnBeforeBackQuery backProcessQueryAction OnAfterBackQuery backProcessQueryAction OnBeforeBack backProcessAction OnAfterBack backProcessAction OnBeforeStartCustomizedQuery startCustomizedProcessQueryAction OnAfterStartCustomizedQuery startCustomizedProcessQueryAction OnBeforeStartCustomized startCustomizedProcessAction OnAfterStartCustomized startCustomizedProcessAction OnBeforeTransferQuery transferTaskQueryAction OnAfterTransferQuery transferTaskQueryAction OnBeforeTransfer transferTaskAction OnAfterTransfer transferTaskAction OnBeforeWithaw withdrawTaskAction OnAfterWithaw withdrawTaskAction X5 高级开发手册 2011 Justep Corp. 第 51 页 共 273 页 起 步 科 技 5.8.3 业务流程事件的函数 业务流程事件的函数一般只能在业务流程相关的事件的代码中调用,其他地方不能调。它用来 业务动作的输入参数和修改业务动作的返回值,还包括获取底层提供的业务流程相关对象。这引起 函数都在 ProcessUtils 里,这里列举的只是一些最常用函数,不是所有函数。 表 5.7 业务流程事件的函数 事件名 业务动作(Action) ProcessUtils.getProcessData1() 获取 sData1 的值 ProcessUtils.getProcessData2() 获取 sData2 的值 ProcessUtils.getProcessData3() 获取 sData3 的值 ProcessUtils.getProcessData4() 获取 sData4 的值 ProcessUtils.getProcessContext() 获取流程上下文 ProcessContext ProcessUtils.getProcessContext().getProcessControl() 获取 ProcessControl ProcessUtils.getProcessContext().getTask() 获取当前任务 5.9 业务动作 业务动作分为三个级别:全局的业务动作、业务过程级的业务动作、业务环节级的业务动作。 业务动作的执行必须在一个特定的环境下执行,即某个业务过程(process)的某个环节(activity) 下执行。业务环节可以执行的业务动作包括三种:当前模块可见的全局的业务动作、当前业务过程 级的业务动作和当前业务环节级的业务动作。 5.9.1 全局的业务动作 全局的业务动作是指在业务动作定义时,声明为 global(即 global 属性为“true”)的业务动作, 例如: 对于全局的业务动作,不需要声明引用,只要对业务动作模块可见即可,就可以调用这个业务 动作。当前提供的所有业务流程操作,都是全局的业务动作。 5.9.2 业务过程级的业务动作 在业务过程上,可以声明当前业务过程拥有哪些业务动作,同时可以对业务动作的部分属性可 以进行重新定义。具体如下: 1、 语法: …… 2、 说明: action:action 的标识,只能引用当前模块可见的 action。 log-enabled:标识当前 action 是否需要记录日志。 access-permission:声明访问权限,取值范围{public, protected},public 表示不需要授权就可 以访问,protected 表示当前指定的 action 必须经过授权才可以访问。 参数节点:只允许对 public 和 protected 的参数进行重新定义。 3、 示例: 5.9.3 业务环节级的业务动作 在业务环节上,也可以声明当前业务过程拥有哪些业务动作,同时可以对业务动作的部分属性 可以进行重新定义。具体的语法和语义和业务过程上引用业务动作一样,唯一的区别是声明的位置 不一样。 5.9.4 业务动作的事件 每个业务动作在运行的过程中,都会派发两个事件:before 和 after。与业务动作的引用类似, 有三种类型的事件处理器:全局的事件处理器、业务过程级的事件处理器、业务环节级的事件处理 器。 全局的事件处理器:指在模块下直接声明的事件处理器;业务过程级的事件处理器:指在业务 过程上声明的事件处理器;业务环节级的事件处理器:指在业务环节上声明的事件处理器; 当某个业务动作的事件被触发时,这个事件关联的事件处理器都会被执行,执行的顺序是:首 先执行业务环节级的事件处理器,其次执行业务过程级的事件处理器,最后执行全局的事件处理器。 1、 语法: 2、 说明: action:action 的标识,只能引用当前模块可见的 action; event:事件名称,取值范围{before, after} ; handler:事件的处理器,它必须指向某个 procedure; X5 高级开发手册 2011 Justep Corp. 第 53 页 共 273 页 起 步 科 技 3、 示例: 5.10 业务流程运行 业务流程运行的本质其实就是实现各种业务流程的业务动作,其最核心部分是基于 PetriNet 原 理的业务流程引擎。从体系结构上来说业务流程引擎和业务动作是没有任何关系的,业务动作只是 外界用来控制业务流程引擎的一种途径,抛开业务动作,外界同样还可以像使用一般 Java 接口和类 一样使用业务流程引擎提供的各种接口和类。 业务流程引擎实现两大特性,第一是解析和计算业务流程定义,然后生成 ProcessControl。第二 是根据 ProcessControl 实现实际的业务流程操作,并生成业务流程实例数据且存入数据库。所以业务 流程引擎的本质就是解析业务流程定义然后生成和维护业务流程实例数据,这也是业务流程运行的 本质。 5.10.1 运行框架 在企业实际的业务需求流程分为两大类,第一是预先设置好流程定义画好流程图,然后按照既 定规则运行的流程,也就是一般的业务流程。第二则是没有什么预先定义的,可以在任意执行者间 传来传去的一些临时协作性的流程,也就是一般的协同。 业务流程和协同,两者的共同点是都使用待办任务作为参与流程处理的入口和媒介,执行者收 到待办任务后进行的都是结束,流转和回退等相同的操作。所以从用户或者待办任务的角度来说, 两种流程的都是针对待办任务进行处理,不同点仅仅在于有规则处理和无规则处理的具体代码实现 上。 业务流程的业务动作(Action)都是以待办任务 ID 作为传入参数,保证了业务流程和协作流接 口的统一性,也统一了外界对流程的视角是先有待办任务然后才是各自处理。例如流转都可以调 advanceProcessAction 动作,打开都调 executeTaskAction 动作。 X5 高级开发手册 2011 Justep Corp. 第 54 页 共 273 页 起 步 科 技 图 5.7 业务流程框架 任务引擎(TaskEngine)是核心调度类,它对外公布所有业务流程和协同处理相关的接口,当 BusinessServer 收到流程相关业务动作时,就创建一个任务引擎(TaskEngine)实例来服务。任务引 擎(TaskEngine)提供一些公共的数据载入和保存的特性外,它还判断待办任务的类型,创建不同的 待办任务处理引擎。当业务动作传入的待办任务属于业务流程时它就创建一个业务流程引擎 (ProcessEngine)的实例来服务,同样的当代待办任务类型属于协同时它就创建一个协同任务引擎 (CollaborationEngine)的实例来服务。 业务流程引擎(ProcessEngine)是整个运行框架中解析和运算业务流程定义的部分。它计算业 务流程定义中的各种条件,各种表达式,各种环节和各种规则。它负责把业务流程定义(Process) 载入到内存的对象体系(Process 对象),根据对象体系读取环节和规则,运算各种表达式,然后生 成 ProcessControl,最后基于 ProcessControl 完成各种操作。其中流转讯问部分是基于 PN 原理的,计 算下一步活动环节的 。 协同任务引擎(CollaborationEngine)则是解析任务类型定义,完成协同任务的各种操作。 5.10.2 运行过程 由于业务流程的绝大多数操作都是由两个业务动作(Action)一起组合来完成的,在 UI 中,当 调用在 UI 层上提供的用于流转操作的 advanceQuery/advanceQueryExt 函数时,其实后台的运行过程 如图所示地方 advanceProcessQueryAction advanceProcessAction 。。。 任务引擎(TaskEngine) DB 业务流程引擎 ProcessEngine ProcessControl 组 织 机 构 Task 流转查询 流转 。。。 backProcessQueryAction backProcessAction 协同任务引擎 回退查询 回退 。。。 。。。 X5 高级开发手册 2011 Justep Corp. 第 55 页 共 273 页 起 步 科 技 advanceQuery advanceProcessQueryAction ProcessControl 流转对话框 ProcessControladvanceProcessAction 图 5.8 流转操作运行过程 advanceQuery/advanceQueryExt 调度代码首先执行 advanceProcessQueryAction 得到 ProcessControl。基于此 ProcessControl 代码是可以直接修改它的内容的,那么一般是弹出流转对话框, 在流转对话框里表现的可选环节,可选执行者都是从 ProcessControl 里取得的。用户使用流转对话框 修改 ProcessControl 控制流程运行,最后 ProcessControl 被传入 advanceProcessAction 完成流转操作。 业务流程其他诸如转发,回退,中止等操作的过程都和流转过程一样。 在 UI 层上还提供了另外一套速度快的,可以不弹出流转对话框的函数。例如调用用于流转操作 的快速的函数 advance/advanceExt 时运行过程如图所示: advance/advanceExt其实直接调用了advanceProcessAction,并且ProcessControl参数传入为NULL。 所以 ProcessControl 不会传到 UI 端。其他诸如回退,转发也有类似函数。 5.10.3 ProcessControl 业务动作是外界控制业务流程运行的途径,那么具体的该如何控制呢?就需要借助于 ProcessControl 了。ProcessControl 是控制业务流程运行的实体,基本上 ProcessControl 里怎么描述业 务流程就会怎么走。ProcessControl 可以从过各种讯问的业务动作(Action)获取到,也可以完全自 己构造。 ProcessControl 包含流向(FlowTo)和通知(Notice)两个主要元素,这两个元素都同属于 ProcessControlItem 类。在 ProcessControlItem 类里描述了活动环节的标识,待办任务的属性,已选中 的执行者(Executors)和最大的执行者范围(ExecutorRange)。两个元素的任意一个都可以空,单当 两个都为空时就不会弹出对话框了。在流转对话框中流转那个页面里表现的是 FlowTo,通知页面表 现的则就是 Notice。 FlowTo FlowTo 描述操作的流向,例如流转操作时描述后续有哪些活动环节和哪些执行者可选,回退操 作时描述能退到哪些活动环节能选哪些执行者,转发和其他操作也是类似这样的。FlowTo 是 ProcessControlItem 对象的列表,其中每一项代表一个流向,一般流向里有多少个可选的活动环节那 么 FlowTo 列表就有多少个 ProcessControlItem 对象。FlowTo 列表可以为空,为空时表示没有流向, 例如终止时只有通知没有流向。 X5 高级开发手册 2011 Justep Corp. 第 56 页 共 273 页 起 步 科 技 Notice Notice 描述操作相关的通知,例如流转操作引发的流转时通知,回退操作时引发的回退时通知, 其他操作也是类似这样的。Notice 是 ProcessControlItem 对象的列表,其中每一项代表了一个通知。 Notice 列表可以为空,为空时表示没有通知,例如没有给流转时设置通知规则。 在业务流程事件中一般对 ProcessControl 有两种控制,它们分别是在弹出流转对话框之前修改 ProcessControl 的信息和使用 ProcessControl 控制流转。在弹出流转对话框之前修改 ProcessControl 的目的一般是,让弹出的流转对话框可以显示修改后的 ProcessControl 信息,像这种控制一般在 OnAfterAdvanceQuery 事件里做。ProcessControl 控制流转一般是在 OnBeforeAdvance 事件里做。 5.10.4 ProcessControlItem ProcessControlItem 在 ProcessControl 中用来描述业务流程操作的目标流向和通知流向。在 ProcessControl 中每个 ProcessControlItem 将被生成 N 个待办任务。在 ProcessControlItem 存储了待办 任务的执行者和执行者范围,还使用 Task 类用来存储待办任务的属性。 Executors ProcessControlItem 中已选择的执行者,它是一个 OrgNode 对象的列表。 ExecutorRange ProcessControlItem 中执行者的范围,它是一个 OrgNode 对象的列表。 5.11 业务流程实例 业务流程运行框架中的业务流程引擎(ProcessEngine)解析业务流程定义,其运行的结果就是 生成业务流程实例。业务流程实例是个泛指,其实它真正包含了流程实例(ProcessInstance)和每个 活动环节的任务(Task)两部分的数据。其中流程实例(ProcessInstance)是每次启动流程生成一个, 而活动环节的任务(Task)则是每次流转,回退和转发时都会为流向活动环节生成的。所以它们是 一个流程实例(ProcessInstance)包含多个任务(Task)的关系。 5.11.1 流程实例和任务 由于流程实例(ProcessInstance)和任务(Task)的绝大多数属性是都一样的,所以在数据库中, 它们都是存入到任务表(SA_Task)。两种数据使用 SCATALOGID 和 SKINID 字段组合来区分。所以流程 实例(ProcessInstance)本质上也是任务(Task),一种特殊类型的任务(Task)。 表 5.8 任务类型(1) 任务类型 sCataLogID sKindID 流程实例(ProcessInstance) tsProcess tkProcessInstance 流程任务(Task) tsProcess tkTask 协同任务(Task) tsTask tkTask 由于每一条任务只能描述一个创建者和一个执行者,所以当一条任务需要多个执行者共同处理 时就需要为这条任务生成与执行者数量等量的子任务。当一条任务只需要一个执行者来处理时则就 不需要生成子任务。 表 5.9 任务类型(2) X5 高级开发手册 2011 Justep Corp. 第 57 页 共 273 页 起 步 科 技 任务类型 sCataLogID sKindID 流程任务(Task) tsProcess tkTask 流程任务的子任务(Task) tsProcess tkExecutor 流程通知(Task) tsProcess tkNotice 协同任务(Task) tsTask tkTask 同任务的子任务(Task) tsTask tkExecutor 任务其实本质就是一个通知,用来通知执行者处理相关事务。它包含创建者,接收者,时间和 相关单号等信息。一条任务被执行者处理完毕以后还可以把它再发给其他执行者处理,则在任务间 就会形成前后关系。任务本身是存入任务表的,而任务的关系是存入任务关系表。 5.11.2 Task 对象 任务在概念上使用 SA_Task 描述,而概念本身只负责数据的存取和数据的规则,在代码中操作 起来并不方便所以扩展出 Task 对象。Task 对象描述任务的基本信息和任务见的父子和前后信息。 业务流程运行体系的代码都是基于 Task 对象来写的,其中在业务流程引擎中扩展的 ProcessInstance 和 ActivityInstance 对象其实内部实现都是 Task 对象。 在需要在代码中生成任务时,推荐的方案是创建 Task 对象然后创建一个 TaskEngine 对象来保存 它们。当然也可以直接使用 SQL 语句插入任务表。 5.11.3 任务表(SA_Task) 任务表用来存储任务,这里的任务是个泛指,其实是包含了流程实例,待办任务,多人处理, 协同任务等等信息都被存入了任务表。 任务表结构 在任务表结构中各个字段就不一一列举了,详细结构可以查看 SA_Task 的概念定义。在这里要 特别说明的是其中一些重要字段的定义和取值范围。 表 5.10 任务表重要字段以及描述 关系名 描述 sID 任务唯一标识 sName 任务标题,在任务相关页面和任务中心显示用 sParentID 父任务 ID sFlowID 任务所属流程实例的 ID,如果当前记录本身就是流程实例,则它的值和 SID 的值相 等 sCatalogID 任务的大类标识,tsProcess 为流程任务,tsTask 为协同任务 sKindID 任务的类型细分标识,tkProcessInstance 为流程实例,tkTask 为任务,tkExecutor 为执行者 sCURL 一般存储的是创建此任务的 activity 的 URL,创建者用它来浏览任务详细 sEURL 存储的是处理此任务的 activity 的 URL,执行者用它来查看详细和处理待办任务 sVariable 存储变量名和值。 Data1 存储业务单据的关键字 sData2 存储业务单据的关键字 sData3 存储业务单据的关键字 X5 高级开发手册 2011 Justep Corp. 第 58 页 共 273 页 起 步 科 技 sData4 存储业务单据的关键字 sProcess 任务属于哪个业务过程,存储业务过程的 URL,一般只有属于流程的任务会给这 个关系赋值 sActivity 任务属于哪个业务环节,存储业务环节的 ID,一般只有属于流程的任务会给这个 关系赋值 sCreatorFID 创建者的 FID sExecutorFID 执行者的 FID sExecuteMode 任务的执行模式,取值范围是 temPreempt(抢占),temSequential(顺序), temSimultaneous(同时) sPreemtMode 任务的抢占模式,取值范围是 tpmOpen(打开时),tpmExecute(处理时) sExecuteMode2 sSourceID 只有在回退时用到,用来记录新生成的回退的待办任务是基于此执行者原始的哪 条待办任务的 sProcessTemplateID 流程模板标识 sProcessTemplateItemSequence 流程模板中当前环节的序号 sStatusID 任务状态,取值范围是 tesReady(尚未处理),tesExecuting(正在处理),tesSleeping(暂 缓处理),tesCanceled(已取消),tesAborted(已终止),tesFinished(已完成), tesReturned(已回退),tesTrainsmited(已转发),tesPaused(已暂停) sAIStatusID 只有在属于流程的待办任务会用到,值默认为 NULL,外界不需要维护 5.11.4 任务关系表(SA_TaskRelation) 任务关系表用来存储任务间的前后关系,可以认为它是任务表的从表。当一条任务真的具有前 序任务或后序任务时在任务关系表中才会有相关关系的维护。 任务关系表中 sTaskID1 表示前面的待办任务 sTaskID2 表示后面的待办任务。sKind 字段用来描述 关系类型,目前没有使用。 任务关系表的字段在这就不一一列举了,详细的表结构可以查看 SA_TaskRelation 概念的定义。 5.11.5 Token 表(SA_TokenInstance) Token 表用来存储业务流程底层算法 PetriNet 中产生的 Token。一般的业务流程和协同任务都不 会用到 Token,所以 Token 表也不需要被外界所关注,因为业务流程本身做到了只要具有待办任务就 可以进行任意操作而不需要依赖 Token。Token 表是任务表的从表,它的 sProcessInstanceID 字段对应 于在任务表中存储的业务流程实例的 SID。 Token 表结构 Token 表的字段在这就不一一列举了,只列举一些重要的字段和描述。详细的表结构可以查看 SA_TOKEN 概念的定义。 表 5.11 任务表重要字段以及描述 字段名 描述 sID Token 唯一标识 sProcessInstanceID Token 所属的流程实例的 ID,记录的值是表示流程实例的那条任务的 ID sProcess Token 所属的业务过程,这里存储业务过程的 URL X5 高级开发手册 2011 Justep Corp. 第 59 页 共 273 页 起 步 科 技 sPlace Token 所属的 Place,这里存储 Place 的 ID sFromActivity Token 是由哪个 Activity 产生的,这里存储 Activity 的 ID sFromActivityInstanceID Token 是由哪个任务产生的,记录任务的 ID sToActivity Token 是被哪个 Activity 消耗的,这里存储 Activity 的 ID sToActivityInstanceID Token 是被哪个任务消耗的,记录任务的 ID sValue Token 的值 sActive 标识 Token 是否被消耗,取值范围是 true 和 false 5.11.6 ProcessControl 表(SA_ProcessControl) 某个执行者在做流转操作时选择了目标执行者,他下次再基于相同的活动环节做流转操作时, 系统会默认选择上次他选择的执行者。此特性的实现是因为业务流程引擎在每次操作的时候都把 ProcessControl 的内容给保存到 ProcessControl 表里了,以备下次操作时可以还原当初的一些选择。 ProcessControl 表结构 ProcessControl 表的字段在这就不一一列举了,只列举一些重要的字段和描述。详细的表结构可 以查看 SA_ProcessControl 概念的定义。 表 5.12 任务表重要字段以及描述 字段名 描述 sID 唯一标识 sOperatorID 操作者 ID,标识 ProcessControl 属于哪个操作者 sProcess 标识 ProcessControl 在哪个业务过程做操作时产生的,这里存储业务过程的 URL sActivity 标识 ProcessControl 在哪个业务环节做操作时产生的,这里存储业务环节的 ID sAction 标识 ProcessControl 在做什么操作时产生的 sContent ProcessControl 的内容,这里存储的值是基于 ProcessControl 对象的 XML 格式 5.11.7 ProcessTemplate 表(SA_ProcessTemplate) 流程模板表用来存储流程模板的信息,它即包含了定义的流程模板,也包含了运行时流程模板 产生的实例。 ProcessTemplate 表结构 ProcessTemplate 表的字段在这就不一一列举了,只列举一些重要的字段和描述。详细的表结构 可以查看 SA_ProcessTemplate 概念的定义。 表 5.13 任务表重要字段以及描述 字段名 描述 sID 唯一标识 sName 名称 sKindID 标识是模板还是模板实例,取值范围{template, instance} sProcess 模板作用的流程标识 sProcessName 流程名称 sActivity 模板作用的环节标识 sActivityName 环节名称 X5 高级开发手册 2011 Justep Corp. 第 60 页 共 273 页 起 步 科 技 sScopeID 标识当前模板的作用域,取值范围{public, private},public 表示别人也可以使用,private 表示 只允许创建者自己使用 sCreatorFID 创建者的 FID sCreatorFName 创建者的 Fname sCreatorName 创建者的名称 sCreatorID 创建者的 ID sCreateTime 创建时间 sContent 流程模板的内容,格式是: //c: 流程模板的根节点 //op: options //i: 可选项,允许有个; n: 可选项的名称,当前只支持“cps”, 表示是否取消其它并行分支; v: 可选择项的值。 //流程模板的中项 //u:unit(可以是环节标识,‘and’,‘xor’,或流程结束标识); l:表示 u 的名称; //n:模板项的序号,类似:1,2,2.1,2.2,3 //t:模板项的类型,取值范围 unit,and,xor //e:执行者;m:执行模式 //o:组织单元; l:组织单元的名称; expr:组织单 元的表达式; // c:是否允许修改流程模板 5.12 业务流程 UI 5.12.1 UI 层实现机制 在 UI 层,提供了一组 UI 的 Action,它的本质是调用业务层的 Action。 在 UI 层,关于流程的操作提供了两种方式: 第一种:先查询 ProcessControl;再弹出界面编辑 ProcessControl;最后基于 ProcessControl 进行调用业务层的操作。例如:advanceQuery/advanceQueryExt、backQuery/backQueryExt、 abortQuery/abortQueryExt、transferQuery/transferQueryExt、suspendQuery/suspendQueryExt。 第二种:直接调用业务层的流程动作。例如: advance/advanceExt、back/backExt、 abort/abortExt、transfer/transferExt、suspend/suspendExt。 5.12.2 流程组件(process) 流程组件是 UI 层中流程的核心组件,它是流程的 UI 层与 BIZ 层的桥梁。 流程组件是一个非可视组件,以下列出流程组件的一些主要事件,方法和属性,具体的详细信 息可以参考 API 帮助文档。 X5 高级开发手册 2011 Justep Corp. 第 61 页 共 273 页 起 步 科 技 表 5.14 流程组件的属性 属性名 描述 id 唯一标识。 data 流程组件关联的业务数据 Data。 auto-close 执行完操作(流转,回退,转发,终止,暂停)之后是否关闭当前页面。 auto-start 保存业务数据时,是否自动启动流程。 auto-save 在执行操作之前,是否自动保存业务数据。 auto-filter 是否根据流程上的业务数据自动过虑业务 Data onBeforeStart 启动流程之前的事件,事务内。 onAfterStart 启动流程之后的事件,事务内。 onStartCommit 启动流程成功的事件,事务外。 onStartError 启动流程失败的事件,事务外。 onBeforeAdvance 流转之前的事件,事务内。 onAfterAdvance 流转之后的事件,事务内。 onAdvanceCommit 流转成功的事件,事务外。 onAdvanceError 流转失败的事件,事务外。 onBeforeAdvanceQuery 流转查询之前的事件。 onAfterAdvanceQuery 流转查询之后的事件。 onAdvanceQueryError 流转查询失败的事件。 onBeforeBack 流程回退之前的事件,事务内。 onAfterBack 流程回退之后的事件,事务内。 onBackCommit 流程回退成功的事件,事务外。 onBackError 流程回退失败的事件,事务外。 onBeforeBackQuery 流程回退查询之前的事件。 onAfterBackQuery 流程回退查询之后的事件。 onBackQueryError 流程回退查询失败的事件。 onBeforeAbort 流程终止之前的事件,事务内。 onAfterAbort 流程终止之后的事件,事务内。 onAbortCommit 流程终止成功的事件,事务外。 onAbortError 流程终止失败的事件,事务外。 onBeforeAbortQuery 流程终止查询之前的事件。 onAfterAbortQuery 流程终止查询之后的事件。 onAbortQueryError 流程终止查询失败的事件。 onBeforeSuspend 流程暂停之前的事件,事务内。 onAfterSuspend 流程暂停之后的事件,事务内。 onSuspendCommit 流程暂停成功的事件,事务外。 onSuspendError 流程暂停失败的事件,事务外。 onBeforeSuspendQuery 流程暂停查询之前的事件。 onAfterSuspendQuery 流程暂停查询之后的事件。 onSuspendQueryError 流程暂停查询失败的事件。 onBeforeTransfer 流程转发之前的事件,事务内。 onAfterTransfer 流程转发之后的事件,事务内。 onTransferCommit 流程转发成功的事件,事务外。 onTransferError 流程转发失败的事件,事务外。 onBeforeTransferQuery 流程转发查询之前的事件。 X5 高级开发手册 2011 Justep Corp. 第 62 页 共 273 页 起 步 科 技 onAfterTransferQuery 流程转发查询之后的事件。 onTransferQueryError 流程转发查询失败的事件。 onBeforeStartCustomizedQuery 流程定制查询之前的事件。 onAfterStartCustomizedQuery 流程定制查询之后的事件。 onStartCustomizedQueryError 流程定制查询失败的事件。 表 5.15 流程组件的方法 方法名 描述 start 启动流程 startExt 启动流程,扩展 advanceQuery 流转查询 advanceQueryExt 流转查询,扩展 advance 流转 advanceExt 流转,扩展 backQuery 回退查询 backQueryExt 回退查询,扩展 back 回退 backExt 回退,扩展 suspendQuery 暂停查询 suspendQueryExt 暂停查询,扩展 suspend 暂停 suspendExt 暂停,扩展 abortQuery 终止查询 abortQueryExt 终止查询,扩展 abort 终止 abortExt 终止,扩展 transferQuery 转发查询 transferQueryExt 转发查询,扩展 transfer 转发 transferExt 转发,扩展 startCustomizedQuery 流程定制查询 5.12.3 流程工具栏组件(processBar) 流程工具栏组件是一个可视组件,通过它可以调用流程的所有动作。例如: X5 高级开发手册 2011 Justep Corp. 第 63 页 共 273 页 起 步 科 技 在流程工具栏中,预定义了七个 item:back-process-item(回退查询)、advance-process-item(流 转查询)、transfer-task-item(转发查询)、suspend-process-item(暂停查询)、abort-process-item(终 止查询)、customized-process-item(定制查询)、process-chart-item(流程轨迹图)。 5.12.4 流程图组件 有三个流程图组件:processChart、processTrackChart 和 processPertChart,这三个组件都是可视 组件,这三个组件的接口和方法都一致,唯一的区别是表现的内容不一样:processChart 包含轨迹图 和波特图,processTrackChart 仅仅是轨迹图,processPertChart 仅仅是波特图。详细信息请参考 API 帮助文档。 5.12.5 流转对话框 UI 层提供了一个默认的流转对话框,对话框的输入和输出数据一样,如下: X5 高级开发手册 2011 Justep Corp. 第 64 页 共 273 页 起 步 科 技 <-- 与to的格式类似 --> `如果用户需要自己定制流程对话框,需要满足这个输入输出接口。 X5 高级开发手册 2011 Justep Corp. 第 65 页 共 273 页 起 步 科 技 第6章 组织机构 6.1 概述 在企业中,组织是为了完成企业目标而形成的具有特定结构、分工协作的团队。组织模型就是 用来定义企业的组织形式的模型,它以职责、权限的形式定义了企业成员、企业各个部门的作用与 任务,同时提供灵活的结构以适应不同的企业或企业中不同的组织结构。 组织模型是业务模型的重要组成部分和基础,它是企业中组织机构计算机化的抽象定义,对应 于一个业务模型,其组织模型是唯一的。X5 平台中的组织机构模型的核心是组织(org)【注:组织 (org)是一个泛化的机构概念,它可以是机构(ogn)、部门(dpt)、岗位(pos)、 人员成员(psm) 等形式】、人员(person)和角色(role),通过这三个核心元素就可以完备地描述组织机构,如图 6.1。 角色是权限的集合,角色能分配到组织(org)上。 图 6.1 组织构成图 说明: 人员(person):人员分配到相关的组织后才具有相关的功能和数据权限(即角色),分配到组 织下的人员称之为人员成员,一个人员可以分配到多个组织单元从而形成多个人员成员。 组织(org)只是一个泛化的抽象概念,组织单元可以从组织中继承出各种具体的组织,并扩 展各个具体的属性。目前系统的组织包括:机构、部门、岗位、人员成员。 组织具有自动继承的能力,子组织自动继承父组织的所有权限。 角色只能授给组织。 企业的经营活动是由多个业务功能【业务功能:业务过程中的业务环节】组成的,业务功能首 X5 高级开发手册 2011 Justep Corp. 第 66 页 共 273 页 起 步 科 技 先分配到组织模型中的角色上,也就是说角色拥有了哪些业务功能,然后将角色分配给组织,从而 形成业务分工即组织拥有业务功能。最后由组织模型中的人员登录业务运行平台,以人员成员的身 份运行业务功能,实现企业经营活动。在这些业务功能中,有些是可以独立执行的,而大多是根据 其逻辑关系串接组合在一起,形成一系列的经营过程,即业务流程,人员通过运行业务功能借以启 动、执行、控制流程,最终实现企业的经营过程的运作。 图 6.2 组织模型与模型体系各个部分的关系图 6.2 机构 机构(ogn)是对企业中各种单位的抽象,是组织(org)中的一种表现形式,机构是一个容器, 它可以包含多个子组织。 机构可以被分配角色,机构的角色可以被它的子组织继承。 6.3 部门 部门(dpt)对应于企业的静态结构划分,由企业的实际部门设置情况来决定,是以传统的面向 职能或者现在流行的面向过程与客户方式对机构进行的划分,是机构的主要组成部分。例如:某公 司的行政、销售、技术等部门,以及各个科室等等,都可以认为是部门。 对应着企业的实际经营活动,部门下可以设置子部门和分配岗位。部门不能独立存在,必须从属于 机构或上级部门。 6.4 岗位 岗位(pos)是组织(org)的一种特殊形式即一种组织单元。岗位具有组织的所有特性。岗位是组织 中对具有特定分工组织单元的抽象,如:一个项目组,可以出现“项目经理”、“开发工程师”、 “测试工程师”等岗位;在岗位下的人员同时就拥有了岗位所具备的所有功能及数据权限(即拥有 了岗位的所有角色)。 6.5 人员 人员(person)--客观存在,在组织中从事具体工作的最小个体。将人员分配到组织机构中任何组 X5 高级开发手册 2011 Justep Corp. 第 67 页 共 273 页 起 步 科 技 织(org)下,形成一个新的组织单元,即人员成员(psm)。在组织模型中,只有成为人员成员才能使 他(她)承担起相关的职责,实现他(她)的使命。人员登录业务运行平台后,只能以人员成员的 身份运行系统,才能实现其特定的职责。如果登录人员承担了多个职责(对应多个人员成员),那 么在处理工作上,不同的功能会根据功能的环境选择和本功能对应的人员成员。 图 6.3 人员列表界面图 图 6.4 人员详细信息界面图 6.6 角色和授权 角色(role)--指应用领域内一种权力和责任的语义综合体,可以是一个抽象概念,也可以是对 应于实际系统中的特定语义体,比如组织内部的职务等。其本身并不能代表权限的大小,只是权限的 X5 高级开发手册 2011 Justep Corp. 第 68 页 共 273 页 起 步 科 技 集合,可以被用来分配给组织(org)。权限只能通过角色分配给到组织(org),不能被直接分配。 角色作为组织 (org)与权限(permission)的代理层,解耦了权限和组织机构的关系,所有的授权应 该给予角色而不是直接给组织机构。 角色继承就是角色获得已有角色(被继承者)的所有权限。 角色分配就是将角色分配给组织,使组织获得相应的权限。 权限(permission)描述了对资源的访问和操作所具有的能力。权限可以分为功能权限和数据权 限。功能权限是指约束角色对功能的访问或功能中动作的访问;数据权限是指约束角色对数据访问。 图 6.5 角色列表 X5 高级开发手册 2011 Justep Corp. 第 69 页 共 273 页 起 步 科 技 图 6.6 授权 6.6.1 权限 权限分两种:功能权限和数据权限。 权限设置中,有三个关键的参数:业务过程(process)、业务功能或业务环节(activity)、业务 动作(action)。 功能权限是指能够执行哪引些功能或动作,其中,process 必须是具体的业务过程;activity 可 以是具体的业务功能或“*”(表示拥有相应业务过程下所有业务功能); action 可以为空,表示没 有 action 的权限,也可以是“*”表示拥有相应业务过程下某个或某些业务功能所有 action 的权限。 数据权限分为参数权限和语义权限两种,参数权限是指绑定到具体参数的数据权限,参数权限 必须指定具体的 process、activity、action,以及需要绑定的参数名。语义权限是指指定名称的可在 所有的 action 内使用的权限,语义权限的 process、activity 和 action 的名称必须为“*”。 6.7 管理权限 管理权限定义了组织单元所能管理的下属范围,即定义哪些组织单元成为它的下属。管理权限 体现了组织单元的行政职能。 在系统中,可以分配管理权限的组织单元类型有:人员成员;被分配的管理权限中可以包括的 组织单元类型有:机构、部门、岗位和人员成员。 管理权限包括组织管理权限和业务管理权限。 组织管理权限: 描述组织上的上下级关系(如:对于组织上的下级,上级可以对它进行工作或 任务的分配,或者再给它分配下级),它定义的下属称为组织下属。 业务管理权限: 描述的是业务上的分管,即业务上的下属,提供了对业务监控、上下级业务管 理的支持,业务管理权限定义的下属称为业务下属。 例如:某部门经理,他的组织上的下属为部门A(组织管理权限),此外,他还分管部门B的销 售业务(业务管理权限),即部门B 是他业务上的下属。业务管理权限是通过给管理权限加上一个 业务类型实现的,此业务类型代表了管理权限的业务意义。 组织单元的下属范围:包括管理权限中定义的组织单元及其下级组织单元。如:对人员成员 A 分 配的管理权限中包含机构 B,则机构 B 及其下级的所有部门、岗位、人员成员都将成为人员成员 A 的下属。 X5 高级开发手册 2011 Justep Corp. 第 70 页 共 273 页 起 步 科 技 图 6.7 管理权限 6.8 分级授权 权限的分级授权,是指对管理者已有的权限逐级往下分配,即组织单元把自己管理的角色分配 给组织下属,而组织下属又可以把获得的角色分配给它自己的组织下属,依此类推,逐级向下分配。 图 6.8 分级授权 X5 高级开发手册 2011 Justep Corp. 第 71 页 共 273 页 起 步 科 技 6.9 组织机构管理的分级 是指对当前登录者所能管理的组织机构进行新增、删除、修改和将自己所能管理的组织机构成 员分配给下属组织成员。 所涵盖的功能包括:组织管理-分级 、授权管理-分级,分级管理-分级,业务管理权限-分级。 6.10 权限管理的分级 是指当前登录者将所能管理的角色授权给其能管理的组织成员,或分配给其所能管理的人员成 员管理。 所涵盖的功能包括:授权管理-分级,分级管理-分级,业务管理权限-分级。 6.11 代理 代理是指某人在他人的授权下,以自己的口令登录系统并以他人的身份代替他人处理他人许可 范围内的事务。其中,被代替的一方称为被代理人或者委托人,代替方称为代理人。代理人获得委 托人的授权及其能够处理事务的范围,是委托人通过“代理设置”将自己拥有的角色、功能或某个 模块下的功能代理给代理人。委托人可以通过“代理设置”功能一次性回收所有代理出去的角色、 功能或某个模块下的功能。代理设置中还可以设定代理有效时间段,只有在设置的时间内,代理关 系才成立。 X5 高级开发手册 2011 Justep Corp. 第 72 页 共 273 页 起 步 科 技 图 6.9 分级授权 6.11.1 代理的收回 代理的收回是指委托人或者被代理人取消代理人对自己代理出去的角色、功能或某个模块下的 功能,并保留代理的历史记录。代理收回后,代理人和被代理人的代理关系取消,被代理的人员成 员的岗位职责重新由被代理人来承担。 6.12 组织机构相关本体定义及其物理表结构 概念 SA_OPOrg 中的关系 sCode 的规则是: 同级组织的 sCode 不重复; 概念 SA_OPOrg 中的关系 sFCode 的规则是(用正则表达式描述): (/A(/B)*/)?C 含义为:由当前组织的所有祖先到当前组织的 sCode 由“/”进行连接而成,其中: A 表示最顶层的 sCode 的值,C 表示当前的 sCode,B 表示除最顶层和当前的组织节点的 sCode, 例:/JUSTEP/X5CPSYB/KFYZ 概念 SA_OPOrg 中的关系 sFID 的规则是(用正则表达式描述): (/A(/B)*/)?C 含义为:由当前组织的所有祖先到当前组织的“SID + ‘.’ + sOrgKindID”由“/”进行 连接而成,其中:A 表示最顶层的“SID + ‘.’ + sOrgKindID”的值,C 表示当前的“SID + ‘.’ + sOrgKindID”, B 表示除最顶层和当前的组织节点的“SID + ‘.’ + sOrgKindID”对于人员成员的 SID,有特殊的规则:“当 前人的 SID + ‘@’ + 父组织的 SID + ‘’” 例:/JUSTEP.org/X5.dept/KF1.dept 概念 SA_OPOrg 中的关系 sFName 的规则是(用正则表达式描述): (/A(/B)*/)?C 含义为:由当前组织的所有祖先到当前组织的 sName 由“ /”进行连接而成,其中: A 表示最顶层的 sName 的值,C 表示当前的 sName,B 表示除最顶层和当前的组织节点的 sName X5 高级开发手册 2011 Justep Corp. 第 73 页 共 273 页 起 步 科 技 例:/起步软件/X5 产品事业部/开发一组 6.12.1 组织机构表(SA_OPOrg) 表 6.1 组织机构表 字段名 描述 sID 唯一标识 sName 名称 sCode 编码 sLongName 长名称 sFName 全路径名 sFCode 全路径编码 sFID 全路径 ID sOrgKindID 组织类型 sSequence 序号 sValidState 可用状态 sParent 父任务 sLevel 级别 sPhone 电话 sFax 传真 sAddress 地址 sZip 邮编 sDescription 描述 sPersonID 人员 ID sNodeKind 节点类型 version 版本 6.12.2 人员表(SA_OPPerson) 表 6.2 人员表 字段名 描述 sID 唯一标识 sName 名称 sCode 编码 sIDCard 身份证号 sNumb 数据编号 sLoginName 登录名 sPassword 密码(MD5) sPasswordTimeLimit 密码时限(天) sPasswordModifyTime 密码修改时间 sMainOrgID 所属部门 sSafeLevelID 密级 sSequence 序号 X5 高级开发手册 2011 Justep Corp. 第 74 页 共 273 页 起 步 科 技 sValidState 可用状态 sDescription 描述 sSex 性别 sBirthday 出生日期 sJoinDate 参加工作日期 sHomePlace 出生地 sDegree 学历 sGraduateSchool 毕业院校 sSpeciality 专业 sSchoolLength 学年制 sTitle 职称 sMarriage 婚姻状态 sCardNO 证件号码 sCardKind 证件类型 sFamilyAddress 家庭住址 sZip 邮编 sMsn MSN sQQ QQ sMail 电子邮件 sMobilePhone 移动电话 sFamilyPhone 家庭电话 sOfficePhone 办公电话 sPhoto 照片 sCountry 国家 sProvince 省 sCity 市 sEnglishName 英文名称 version 版本 6.12.3 角色表(SA_OPRole) 表 6.3 角色表 字段名 描述 sID 唯一标识 sName 名称 sCode 编码 sCatalog 分类 sRoleKind 角色类型 sParentRolesNames 父角色名称列表 sDescription 描述 sSequence 序号 sValidState 可用状态 version 版本 X5 高级开发手册 2011 Justep Corp. 第 75 页 共 273 页 起 步 科 技 6.12.4 代理表(SA_OPAgent) 表 6.4 代理表 字段名 描述 sID 唯一标识 sOrgFID 委托人的 FID sOrgFName 委托人的 Fname sAgentID 代理人 sValidState 可用状态 sStartTime 开始时间 sFinishTime 结束时间 sProcess 业务过程 sCreatorID 创建者 sCreatorName 创建者的名称 sCreateTime 创建时间 sCanTranAgent 是否允许转交 Version 版本号 6.12.5 管理权限类型表(SA_OPManageType) 表 6.5 管理权限类型表 字段名 描述 sID 唯一标识 sName 名称 sCode 编码 sManageOrgKind 管理组织类型 sManageOrgKindName 管理组织类型名称 sLeaderNumber 上级个数 sIsSystem 是否系统 version 版本 6.12.6 授权表(SA_OPAuthorize) 表 6.6 授权表 字段名 描述 sID 唯一标识 sOrgID 组织单元 sOrgName 组织单元名称 sOrgFID 组织单元的 FID sOrgFName 组织单元的 Fname sAuthorizeRoleID 授权角色 sDescription 描述 X5 高级开发手册 2011 Justep Corp. 第 76 页 共 273 页 起 步 科 技 sCreatorFID 授权人的 FID sCreatorFName 授权人的 Fname sCreateTime 创建时间 version 版本 6.12.7 权限表(SA_OPPermission) 表 6.7 权限表 字段名 描述 sID 唯一标识 sPermissionRoleID 所属角色 sProcess 业务过程 sActivity 业务功能 sActivityFName 业务功能全路径名 sActions 业务动作 sActionsNames 业务动作名称 sSemanticDP 语义数据权限 sPermissionKind 语义数据权限类型 sDescription 描述 sSequence 序号 sValidState 可用状态 version 版本 6.12.8 管理权限表(SA_OPManagement) 表 6.8 管理权限表 字段名 描述 sID 唯一标识 sOrgID 组织单元 sOrgName 组织单元的名称 sOrgFID 组织单元的 FID sOrgFName 组织单元的 Fname sManageOrgID 管理组织 sManageOrgName 管理组织的名称 sManageOrgFID 管理组织的 FID sManageOrgFName 管理组织的 FName sManageTypeID 管理类型 sCreatorFID 授权人 sCreatorFName 授权人的 Fname sCreateTime 创建时间 version 版本 X5 高级开发手册 2011 Justep Corp. 第 77 页 共 273 页 起 步 科 技 6.12.9 分级授权表(SA_OPRoleManagement) 表 6.9 分级授权表 字段名 描述 sID 唯一标识 sOrgID 组织单元 sOrgName 组织单元名称 sOrgFID 组织单元的 FID sOrgFName 组织单元的 Fname sRoleID 角色 sCreatorFID 授权人的 FID sCreatorFName 授权人的 Fname sCreateTime 创建时间 version 版本 6.13 扩展配置 6.13.1 密码模式 从 5.2.6 版本开始支持两种可选的密码模式。 “固定密码”模式 X5 的新建人员和重置密码时默认采用“固定密码”模式,默认密码是“123456”。用户可以通 过配置文件设置默认密码,配置文件位于“/BIZ/system/config/opm.config.m”。 “动态密码”模式 用户也可以选择“动态密码”模式,如果设置为动态密码模式,管理员在新建人员和重置密码 时,需要记录动态生成的密码,并通知对应人员。 X5 高级开发手册 2011 Justep Corp. 第 78 页 共 273 页 起 步 科 技 密码模式配置 位于“/BIZ/system/config/opm.config.m”(见图 6.10 动态密码模式配置)。 图 6.10 动态密码模式配置 6.13.2 组织节点类型 从 5.2.6 版本开始支持可配置的组织节点类型。 组织节点类型配置用于定义组织节点的类型及其属性,用户可以对除“psm(人员)”以外的 组织节点类型进行增减扩展。例如:可以增加新的组织节点类型“集团”、“公司”、“一级部门”、“二级 部门”;可以增加虚拟组织节点类型“机构分组”、“部门分组”等。 配置后,系统的组织管理功能、组织相关组件都会自动支持配置后的组织节点类型。 系统还提供一组新的前后台 API,用于代码中读取和识别配置后的组织节点类型。 配置文件 配置文件位于“/BIZ/system/config/opm.config.m”。 图片配置 组织类型的图片配置位于“/UI/system/images/org/orgKind”,每个类型的图片 4 张一组。 X5 高级开发手册 2011 Justep Corp. 第 80 页 共 273 页 起 步 科 技 配置示例 X5 高级开发手册 2011 Justep Corp. 第 81 页 共 273 页 起 步 科 技 X5 高级开发手册 2011 Justep Corp. 第 82 页 共 273 页 起 步 科 技 配套 API Java com.justep.system.opm.OrgUtils getRealFName 获取组织真实路径名称(排除虚拟节点) com.justep.system.opm.OrgKinds getIDs 获取所有组织节点类型 ID getLabel 获取名称 isRoot 是否是根节点 isVirtual 是否是虚拟节点 getParents 获取父节点类型 JavaScript justep.Org getRealFName 获取组织真实路径名称(排除虚拟节点) justep.Org.OrgKinds getIDs 获取所有组织节点类型 ID getLabel 获取名称 isRoot 是否是根节点 isVirtual 是否是虚拟节点 getParents 获取父节点类型 X5 高级开发手册 2011 Justep Corp. 第 83 页 共 273 页 起 步 科 技 第7章 高级特性 7.1.1 定义扩展属性 1、 语法 2、 说明 owner:表示扩展属性可以使用在哪些元素上,这个属性可以不写,表示可以使用在所有 的模型要素上。取值范围:concept、relation、has-relation、mapping、store、process、template、 business-activity、auto-activity、if-else-activity、and、xor、place、static-activity、advance-rule、 back-rule、execute-rule、fork-rule、join-rule、notice-rule、start-rule、transfer-rule、action、 has-action、 listener、procedure、config、fn; name:扩展属性的名称; namespalce:扩展属性的名空间; type:扩展属性值的类型,取值范围:String、Integer、Long、Double、Boolean、Float、 DateTime、 Date、Time、Decimal、Xml、List、Map; 3、 示例 7.1.2 使用扩展属性 根据扩展属性的定义,在相应的模型元素上添加相应的属性即可,例如: 7.1.3 获取扩展属性值 可以通过 ModelObject 上的 getExtAttributeValue(String uri, String name)来获取扩展属性的值。 X5 高级开发手册 2011 Justep Corp. 第 84 页 共 273 页 起 步 科 技 第二篇 界面模型 第1章 界面模型概述 1.1 概述 界面模型相对于业务模型,它描述的是用户交互界面。界面模型是基于组件体系的描述,组件 的规范采用了 XBL 标准。 1.2 界面模型的组织 1.2.1 模型的构成 界面模型主要包含.W(UI 展现描述部分)、.J(UI 逻辑实现部分)、组件、JS、CSS、布局等要素, 这些将在后面的章节介绍。 .W 是界面模型中的重要组成部分,一个.W 对应一个功能页面,每个功能页面都必须有对应的 process 和 activity,UI 通过 process 和 activity 来和 biz 模型进行关联,从而实现 UI 和功能权限,动 作权限,数据权限的关联。同时通过.J 可以进行 UI 层的服务端逻辑扩展。 对于同一个业务模型,为了适应不同的终端,需要开发不同的界面模型,当前界面模型有两类: UI(针对 PC 终端)和 mobileUI(针对 MOBILE 终端)。两类界面模型的框架都是基于 Window 组件, 同时针对终端 UI 展现和操作各自的特点提供了不同的组件。 1.2.2 .W 文件 界面模型中的核心是.W 文件(扩展名为“.w”),它既负责描述一个具体的页面,也同时是功能 页面的入口。它可以是由平台提供的 window 组件框架构成的页面,也可以是标准的 xhtml 页面,同 时也支持由第三方组件体系构成。 基于 window 组件框架构成的.W 文件的根节点是 window 组件 (/UI/system/components/window.xbl.xml#window)。Window 组件下包含 model 数据部分、resource 资 源部分、view 部分、layout 布局部分。关于.W 文件的具体可以参考第三章 .W。 1.2.3 .J 文件 .J 是 UIServer 的重要组成部分,是 UIServer 扩展能力的 Java 手段,是 UI 模型上提供的 servlet 能力(注:.J 不是 servlet,它提供了类似于 servlet 的能力)。.J 相对.W 更灵活,能力更强,但是.J 同 时增加了代码量(需要用 Java 代码实现),目前在 UI 上.J 主要有两种用途:代码逻辑处理和页面(或 者页面片段)生成。关于.J 文件的具体可以参考第四章 .J。 X5 高级开发手册 2011 Justep Corp. 第 85 页 共 273 页 起 步 科 技 1.2.4 JS 文件 JavaScript 代码文件,提供对 w 的控制和操作。JavaScript 是一种广泛用于客户端 Web 开发的脚 本语言,常用来给网页添加动态功能,比如响应用户的各种操作。JavaScript 是客户端脚本语言,也 就是说 JavaScript 是在用户的浏览器上运行。在界面模型中通常情况下一个.W 文件会有一个与它对 应同名的 JS 文件。 在.W 中对 JS 文件的引入描述: 结构如下图: 图 1.1 JS 示例 1.2.5 CSS 文件 层叠样式表(英文:Cascading Style Sheets,简写为 CSS),又称串样式列表,由 W3C 定义和维 护的标准,一种用来为结构化文档(如 HTML 文档或 XML 应用)添加样式(字体、间距和颜色等) 的计算机语言。 CSS 的语法很简单,它使用一组英语词来表示不同的样式和特征。 一个样式表由一组规则组成。每个规则由一个“选择器”(selector)和一个定义部分组成。每个 定义部分包含一组由半角分号(;)分离的定义。这组定义放在一对大括号({ })之间。每个定义由 一个特性,一个半角冒号(:)和一个值组成。 X5 高级开发手册 2011 Justep Corp. 第 86 页 共 273 页 起 步 科 技 选择器(Selector) 通常为档中的元素(element),如 HTML 中的,

等标签,多个选择器可以 半角逗号(,)隔开。 属性(property) CSS1、CSS2、CSS3 规定了许多的属性,目的在控制选择器的样式。 值(value) 指属性接受的设置值,可由各种关键字(keyword)组成,多个关键字时大都以空格隔开。 例子: p{ font-size: 110%; font-family: garamond, sans-serif; } h2{ color: red; background: white; } .highlight{ color: red; background: yellow; font-weight: bold; } 在这个例子中有三个选择器:p、h2 和.highlight,color: red 是一个定义,其中 color 是属性,red 是 color 的值。 在这里 HTML 中的结构 P(段落)和 H2(2 级标题)获得了不同的样式。每个段落的字体的大 小比包含这个段落的结构的字体的大小要大 10%,其字形是 Garamond,假如 Garamond 没有的话那 么使用一般的 sans-serif 字形。2 级标题的字用红色,底面是黄色的。这个例子中的第三个规则规定 了一个 class 的样式。通过 class 属性每个 HTML 结构都可以被指定为这个 class,例如:

这个段落将被显示为黄底黑色粗体。

显示为: 这个段落将被显示为黄底红字粗体。 CSS 档内也可以包含注释,注释以/*开始,以*/结尾,例如: /*注释*/ 在.W 中对样式的引入有 3 中形式 1、 开发者通过 resource 引入,描述如下: 2、 由组件隐式带入的样式(具体参考 xbl 组件章节) 3、 .W 默认引入的样式,如:“/UI/system/config/user.css” “/MobileUI/system/config/user.css” 是留给开发者修改系统级定义的样式。 在.W 文件中样式的优先级(高->低)如下: Resource ->“/UI/system/config/user.css” ->组件样式->系统样式 X5 高级开发手册 2011 Justep Corp. 第 87 页 共 273 页 起 步 科 技 1.2.6 布局文件 在.W 文件中,布局支持两种写法:在.W 文件中内嵌布局(通过 view 元素下 layout 来表示布局) 和独立于.W 文件之外的 Excel 布局文件进行布局。 1.3 运行机制 UI 请求过程如下: 1、浏览器发送请求到 UIServer 2、UIServer 响应请求,这里主要是两类:.J 和.W(包括其他资源.js、.css 等) 1) .J 通过.J 引擎直接编译运行.J 对应的 java 代码响应请求。 2) .W 根据路径加载.W 资源,调度 XBL 引擎进行组件模板解析生成页面整体框架,数据准 备 freeMarker 数据模板处理,返回页面给浏览器,浏览器端进行 XBL 引擎初始化,到此 完成整个.W 的加载。平台为了性能优化增加了缓存机制,也就是在“数据准备 freeMarker 数据模板处理”前生成的页面进行了缓存,缓存在同目录的 cache 目录下,生成缓存的 过程称之为“UI 模型编译”。其他资源则是直接返回把文件流返回给浏览器。 1.4 与业务模型的关系 对于每一个业务过程模块都能有与之对应的界面模型模块,它们之间通过目录关系对应(Biz 和 UI 之间目录一一对应);对于每一个业务过程模型的环节,也都可以找到相应的界面模型.W(不需 要界面的环节除外),它们之间的对应规则是:环节标识.w。例如: 业务模型下有一个过程模型“/SA/taskCenter”,它里面只有一个环节 mainActivity,如图 图 1.2 BIZ 模型 X5 高级开发手册 2011 Justep Corp. 第 88 页 共 273 页 起 步 科 技 界面模型对应为“/SA/taskCenter”,环节 mainActivity 对应的.W 文件为“mainActivity.w”,如图 图 1.3 UI 模型 1.4.1 Action 调用 UI 层提供了完整的 Biz Action 调用方式接口,在前端调用和返回支持 xml 和 json 两种格式,biz action 调用原则,所有 action 调用必须指定三个参数,分别是 process、activity、action,这三个参数 决定了 action 的权限(功能/数据权限),三个参数都是 String 类型, 例如: process=”/demo/misc/process/simpleAction/simpleActionProcess”, activity=”mainActivity”, action=”demoparaAction”; UI 端支持三种 biz action 请求方式(post、get、form 提交),下面逐一介绍各种调用方式: A、使用最多的 http post 请求方式,在.w上默认引入了 base.js,其中包含“justep.Request” 单元,这个单元中封装了在页面中通过 ajax post 方式请求 biz action 的方法, 主要包括: 方法: justep.Request.convertURL(url, isResource);url 转换 justep.Request.sendRequest2 (options);action 请求, options 参数说明 action:string required 执行的 action; contentType: string 发 送 请 求 的 格 式 , 缺 省 'application/xml' 取值范围: ['application/xml','application/json'] dataType: string 返 回 数 据 的 格 式 , 缺 省 'application/xml' 取 值 范 围 : ['application/xml','application/json'] parameters:justep.Request.ActionParam required Action 参数对象 translateParam:justep.Request.TranslateParam Action 数据格式转换参数对象 callback:function 请求完成后的回调,给出参数 RequestCallbackData directExecute:boolean 在批事务中是否立即执行 X5 高级开发手册 2011 Justep Corp. 第 89 页 共 273 页 起 步 科 技 process:string 缺省取当前环境的; activity:string 缺省取当前环境的; executor: 执行者,缺省取当前环境里的 executeContext: 执行环境,缺省取环境里的 justep.Request.beginBatch();启动批请求 justep.Request.endBatch();提交批请求 justep.Request.cancelBatch();中断批请求 justep.Request.isSuccess(XMLHttpRequest);请求成功判断,只是判断 http 请求是否成功 justep.Request.isBizSuccess(XMLHttpRequest, dataType);判断 biz action 的业务请求是否成功, 当 biz 层的 action 抛出异常认为请求业务失败,否则成功。 对象: justep.Request.ActionParam;action 请求的参数对象 justep.Request.TranslateParam;action 请求返回转换参数对象 justep.Request.SimpleParam;简单数据类型参数 justep.Request.ListParam;List 参数 justep.Request.MapParam;Map 参数 justep.Request.XMLParam;XML 参数 justep.Request.TableParam;Table 参数 使用案例: var options = {}; var param = new justep.Request.ActionParam(); param.setString('para_string', ''); param.setInteger('para_integer', 11); param.setFloat('para_float', 1.345); param.setDateTime('para_datetime', new Data()); var process = "/demo/misc/process/simpleAction/simpleActionProcess"; var activity = "mainActivity"; options.contentType = 'application/json'; options.process = process; options.activity = activity; options.dataType = "json"; options.parameters = param; options.action = "demoparaAction"; options.callback = function(data){ ... }; var result = justep.Request.sendBizRequest2(options); 批 biz action 请求说明: UI 层的批 biz action 请求是指把多个 biz action 调用进行一次 action 调用,从而保证所有数 据库操作在一个事务(在 biz 层有原则:一次 action 请求中的数据库操作在一次事务中)。 也就是说在调用 justep.Request.beginBatch()后进入批请求状态,在批请求状态中执行的 X5 高级开发手册 2011 Justep Corp. 第 90 页 共 273 页 起 步 科 技 justep.Request.sendRequest2 并 没 有 真 正 发 送 到 biz server ( 这 里 可 以 通 过 options.directExecute=true 指定当前请求不在批内执行),而是在 UI server 中进行集中,当 justep.Request.endBatch() 后统一提交到 biz server (批请求支持嵌套,调用 justep.Request.beginBatch()和 justep.Request.endBatch()次数必须保证一致)。 前后台参数对象和返回对象转换说明: Action 请求参数提供了相互转换的对象支持(justep.Request.ActionParam,具体见 xdoc 帮助 说明),同时为了使用方便提供了 justep.Request.ActionParam.setParam( name, value)函数,这个函 数会根据 js 的数据类型自动转换成 Action 的参数对象。 表 1.1 Biz action 参数和 Js 请求参数对应表 Biz 对象 Js 参数对象 简单数据类型(String, Integer, Long, Float, Double Date, Time, DateTime, Boolean, Decimal) justep.Request.SimpleParam java.util.Map justep.Request.MapParam java.util.List justep.Request.ListParam org.dom4j.Document justep.Request.XMLParam com.justep.system.data.Table justep.Request.TableParam Action 请求的返回支持 xml 和 json 两种格式,json 这里不再说明参考相关文档,返回的 xml 格式数据 justep.Request.transform(xml)转换成相关的 js 对象。 B、get 方式请求 biz action,也就是通过 url 来请求 biz action,action 的参数通过 url 的参数形式给出 (目前只支持 String 类型的参数),请求的 url 是“/UI/system/service/common/bizAction.j”, process、 activity、action 参数是必须的,这种方式多用于页面中获取多媒体流(图像,声音,视频)。 C、form 提交方式请求 biz action,通过 form 的 submit()进行请求,form 中提交的数据 name 对应 action 的参数名,这种方式主要用于提交文件流到 biz,当是提交文件流时,biz action 的参数可以直接定义 成 InputStream(这就是提交的文件流)。 案例: 页面定义: Biz action的function定义: void update(String dataModel, String concept, String relation, String id, InputStream blobData) X5 高级开发手册 2011 Justep Corp. 第 91 页 共 273 页 起 步 科 技 第2章 多终端类型支持 2.1 概述 界面模型中可以支持对应同一个业务过程环节实现不同终端的.W,目前的界面模型包括 UI 和 MobileUI 两部分,UI 下的.W 可以针对 PC、PAD,MobileUI 下的.W 主要针对手机等手持终端。两套 UI 模型通过两套组件来支撑和实现。如下图 X5 高级开发手册 2011 Justep Corp. 第 92 页 共 273 页 起 步 科 技 图 2.1 UI、mobileUI 结构 2.2 UI 和 MobileUI UI 模型和 MobileUI 分别由两套组件支持,在两个模型下的.W 在 studio 中编辑时会加载相关的 组件和设计器,如下图 2.2、2.3: 图 2.2 UI 设计界面 X5 高级开发手册 2011 Justep Corp. 第 93 页 共 273 页 起 步 科 技 图 2.3 MobileUI 设计界面 第3章 .W 3.1 概述 界面模型中的核心是.W 文件(扩展名为“.w”),它既负责描述一个具体的页面,也同时是功能 页面的入口。它可以是由平台提供的 window 组件框架构成的页面,也可以是标准的 xhtml 页面,同 时也支持由第三方组件体系构成。 3.2 组件 3.2.1 概述 组件是对 XBL 组件的简称,组件是 UI 模型的重要组成部分,是组成 UI 的基础。平台中提供了 基于 PC 和基于 Mobile 的两套组件(关于组件的实现请参考组件开发)。XBL 是 XML Binding Language 的 简写,是跨平台的表现组件,主要是表示和扩展文档的表现能力。 3.2.2 运行机制 XBL 是一种组件技术,它为组件的行为和表现提供一种绑定机制;平台中实现的 XBL 引擎,使 X5 高级开发手册 2011 Justep Corp. 第 94 页 共 273 页 起 步 科 技 组件的服务端模板与客户端的行为(JavaScript)更好的结合。 XBL 组件运行包括两部分逻辑, 1、服务端模板逻辑,也就是 UIServer 端生成组件标签和相关资源的逻辑,这部分逻辑提供了 java 代码和 xslt 模板实现,平台推荐使用 java 代码方式。 2、浏览器端的行为逻辑,这部分主要是 JavaScript 的能力。每个 XBL 组件在页面上都会产生一 个与它对应的对象(注:通过 justep.xbl(组件 id)方法可以获取这个对象),通过这个对象可以调用组件 提供的 API 函数。 组件运行过程如下: 1、 UIServer xbl 引擎进行服务端模板处理; 2、 浏览器端 xbl 引擎初始化组件对象,主要包括三个步骤: 1) 创建 xbl 对象 2) 执行 xbl 对象的 initXBL 方法 3) 执行 xbl 对象的 initXBL2 方法(所有 xbl 对象已经创建,可以通过 justep.xbl(组件 id)获取 所有的组件对象) 3.2.3 结构 平台的组件统一放在对应模型下/system/components(如:/UI/system/components),每个组件 包含设计时和运行时,对应组成有.xbl.xml 文件和组件命相同的目录,目录内包含组件的设计时和相 关资源(.js,.css,.java 等)。下图为 data 组件目录 图 3.1 组件结构 3.2.4 组件开发 一个完整的组件包括运行时和设计时两部分,下面介绍组件运行时的开发,关于设计时的开发 请参考“Studio”相关章节。 组件运行时包括组件定义描述文件(.xbl.xml)和组件相关的资源。 组件定义描述文件包括: 资源引入:,表示在同一个定义文件内的组件都引用的资源。 组件绑定:,每一个 binding 就是一个组件的描述,也就是说同一个定义描述文 件内可以定义多个组件。如下图 X5 高级开发手册 2011 Justep Corp. 第 95 页 共 273 页 起 步 科 技 图 3.2 inputQ 组件和 secretQ 组件定义 组件绑定部分主要包括: 服务端模板:,组件服务端处理的逻辑,通常包括两种方式 xslt 和 java 方式, 通过属性 template-type 属性指定(建议使用 java 模板方式)。xslt 请参阅相关语法说明文档。Java 方式必须实现接口“com.justep.xbl.JavaTemplate”,同时在属性 src 说明组件的 java 模板,接口定义 如下: 图 3.3 com.justep.xbl.JavaTemplate 接口定义 X5 高级开发手册 2011 Justep Corp. 第 96 页 共 273 页 起 步 科 技 图 3.4 tabs 组件定义 资源引用:,指定组件引入的 JS 和 CSS 资源。 JS 逻辑:,定义组件 JS 对象的方法和域变量,其中有两个特殊的 initXBL、 initXBL2 方法分别在组件初始化的时候调用,具体他们的差异在“运行机制”一节做过说明。 其他语法说明请参考“XBL 组件开发规范”文档。 组件操作介绍和实现 操作(operation)是组件的特性之一,操作是组件行为描述,通过这种描述可以使组件的使用 者在开发应用时得到便利。通过使用操作可以减少代码的编写工作从而使开发更容易。 例如 mobile 的 bizData 拥有 save 操作,它是 saveData 方法的操作描述。在设计器中组件的使 用者可以通过属性来配置操作的特性,如显示的图标, 提示信息等(如下图)。 X5 高级开发手册 2011 Justep Corp. 第 97 页 共 273 页 起 步 科 技 图 3.5 save 的显示图标和属性 为按钮设置操作, 通过选择 operation-owner 和 operation。 图 3.6 operation-owner 和 operation 属性 X5 高级开发手册 2011 Justep Corp. 第 98 页 共 273 页 起 步 科 技 X5 产品为组件的开发者开发组件的操作提供基础库,主要包括 (1) justep.OperationControl 实现感知操作组件的基础类 (2) justep.Operations 组件运行时支持操作特性的主要类,通过 justep.supportOperation 方法,任何对象都可以 具有 Operations 相关的方法. (3) justep.supportOperation justep.supportOperation 方法, 可以为对象添加操作(Operations)相关特性, 使对象可以 具有操作(Operations)的方法. (4) justep.supportCustomOperation 为 XBL 对 象 获 取 operations 参 数 的 的 方 法 , 执行 justep.supportCustomOperation(xblObject)后, xblObject.getOperations()返回 operation 信息。 更详细的信息可以参考 X5 API 文档。 为组件设计时提供操作支持,需要在组件设计时描述文件中,增加 operations 描述段落。 例如 BizData 组件的操作描述了四个操作(如下图) 图 3.7 operations 描述段落 3.2.5 组件使用 组件主要是在.W 中使用,组件通过它的 URI 进行引用,如:bizData 组件的引用: 图 3.8 bizData 组件使用 “/UI/system/components/data.xbl.xml#bizData”就是bizData的唯一定位URI。 组件初始化后可以通过 justep.xbl(组件 Id)获取组件的 JS 对象,从而调用组件提供的相关函数和 访问相关的域。如调用上面 bizData 的保存方法:justep.xbl(‘bizData1’).saveData(); 注:在 Model 组件的 onXBLLoaded 事件中组件才完整初始化,即在这个事件中或者之后的事件 才能获得组件对象。 3.3 布局 在.W 文件中,布局是通过 view 元素下 layout 节点来表示的,支持两种形式的布局(具体属性 参考 3.5 节)。 X5 高级开发手册 2011 Justep Corp. 第 99 页 共 273 页 起 步 科 技 1、layout 下直接描述,在 layout 下可以直接使用布局组件和 html 组件,其他组件通过 place 元 素进行引用,如下图: 图 3.9 直接布局 2、外部布局文件描述(Excel 方式布局),如下图: 图 3.10 Excel 布局 3.4 继承 Window 的继承是基于 XML 的继承,当前支持两种语法:window 继承语言和 XUpdate。在使用 Window 继承的时候,不仅可以使用两种语法中一种,还允许同时使用两种语法来实现,当出现两 种语法的时候,先执行 window 继承语言,再执行 XUpdate。 以 下 将 详 细 介 绍 window 继 承 语 言 , 关 于 XUpdate 语 法 , 可 以 参 考 http://xmldb-org.sourceforge.net/xupdate/xupdate-wd.html。 3.4.1 继承语法 Window 继承语言是一种属性标记语言,即通过属性标记的方式来表示需要执行的操作。它通 过两个属性来表示:id(表示对父 window 中的哪个节点进行操作)和 update-model(表示进行什么 样的操作)。Window 继承语言有以下的规则: 1.属性标记的属性名称为“update-mode”,属性的名空间为“http://www.justep.com/xui”; 2.子 window 中通过 id 来引用父 window 中相应的节点; 3.在子 window 里,window 的第一级子节点(“xu:modifications”节点除外)上必须有 “update-mode”属性和 id 属性;对于非第一级子节点上的“update-mode”属性,不处理; 4.“ update-mode”属性的取值范围是:delete、replace、merge、insert、merge-and-append、 merge-and-replace、merge-and-delete、replace-and-append、replace-and-replace、replace-and-delete, 下表是这些值的含义说明: 表 3.1 update-mode 的取值范围 X5 高级开发手册 2011 Justep Corp. 第 100 页 共 273 页 起 步 科 技 update-mode 的值 含义 delete 删除节点 replace 替换属性 merge 合并属性 insert 插入子 merge-and-append 合并属性,并且添加子 merge-and-replace 合并属性,并且替换子 merge-and-delete 合并属性,并且删除子 replace-and-append 替换属性,并且添加子 replace-and-replace 替换属性,并且替换子 replace-and-delete 替换属性,并且删除子 上表中用到的一名词的含义: 1. “删除节点”:删除父 window 中 id 相同的节点,包括该节点下的所有子节点; 2. “替换属性”:用当前节点的属性替换父 window 中 id 相同的节点的属性,替换规则:将 父 window 中 id 相同的节点上的所有属性删除,用当前节点的属性替换; 3. “插入子”:将当前节点插入到父 window 中的指定位置,位置信息通过以下规则来定位: a) xui:parent 属性,它引用父 window 中的某个控件,表示插入到哪个节点下;当 xui:update-mode 的值是 insert 时,xui:parent 必须指定; b) xui:before 属性,它引用父 window 中某个控件,表示插入到哪个节点之前;这个属 性是可选的,如果没有指定时,表示插入到 xui:parent 指定节点的最后一个子节点后, 有的话,表示插入到 xui:before 指定节点的前面; 4. “添加子”:将当前节点的子节点插入到父 window 中 id 相同的节点内,插入的位置通过 以下规则指定:如果指定了 xui:index 属性(它的值必须是个整数),表示插入到父 window 中 id 相同节点的子节点的第几个位置,否则插入到最后一个子节点后。 5. “替换子”:将父 window 中 id 相同的节点的所有子节点删除,用当前节点的子节点替换; 6. “删除子”:将父 window 中 id 相同的节点的所有子节点删除; 案例: 父 window 的定义: 测试"删除节点" 测试"插入了" 测试"替换属性" 测试"合并属性" 子 window 的定义: 插入到最后 插入到指定节点的前面 测试"合并属性" 子 window 的继承后的结果: 插入到指定节点的前面 测试"插入了" 插入到最后 测试"合并属性" 3.5 Window 名空间: 默认名空间是:http://www.justep.com/xui 期望的上下文: window 组件必须是根节点。 属性: id:唯一标识; component:值必须是“/system/components/window.xbl.xml#window”,标识当前节点绑 定了 window 组件。 extends:标识当前 window 文件继承自哪个 window 文件,只支持单根继承。详细的信息 请参考“window 的继承”。 期望的子节点: model:0 个或多个,定义 window 页面的数据模型; view:0 个或多个,定义 window 页面的表现; resource:0 个或多个,定义 window 页面引用的资源,如 Javascript 或 Style; 其它 XBL 组件:0 个或多个; 3.5.1 view 期望的上下文: window 属性: id:唯一标识; auto-load:标识当前 view 是否自动加载,取值范围{true, false},默认值是 true,当值为 false 时,表示延迟加载; class:标准的 CSS 声明 class; 期望的子节点: 标准的 XHTML 控件:0 或多个,定义 view 的表现;为了能被 layout 引用,必须声明 id 属 性; 标准的 XForms 控件:0 或多个,定义 view 的表现;为了能被 layout 引用,必须声明 id 属 性; XBL 表现组件:0 或多个,定义 view 的表现,为了能被 layout 引用,必须声明 id 属性; view:0 或多个,一个 view 可以包含若干个子 view;为了能被 layout 引用,必须声明 id 属性 layout:0 或一个,定义 view 的布局,它通过 place 引用 view 中的表现控件(标准的 XHTML 控件、标准的 XForms 控件、XBL 表现组件和子 view);当某个 view 没有定义 layout 时,会使 用默认布局; X5 高级开发手册 2011 Justep Corp. 第 103 页 共 273 页 起 步 科 技 说明:在 view 中,将表现控件与布局分离。布局时,只能引用当前 view 的直接包含的表现控 件,不允许引用其它地方的表现控件(如子 view、父 view 或兄弟 view)。 3.5.2 layout 期望的上下文: view 属性: id:唯一标识; src:引用外部文件;它的值是一个标准的 URL,可以使用相对路径,绝对路径以/UI 或 /mobileUI 开头;有 src 时,以 src 优先,否则使用内嵌的布局; class:标准的 CSS 声明 class; style:标准的 CSS 声明 style; 期望的子节点: 标准的 XHTML 控件:0 个或多个; 标准的 XForms 控件:0 个或多个; XBL 组件:0 个或多个; place:0 个或多个,用来引用 view 下的表现控件,place 可以出现在 view 的非第一级子节 点; 说明: 布局支持三种模式:excel 布局和 form 布局(通过 layout 引用的布局文件来区分),对于 form 布局,又可以分为两种:流式布局和绝对布局(通过标准的 style 来区分)。 对于 view 下的每个表现控件,只允许被布局一次。 3.5.3 place 期望的上下文: layout 内,作为 layout 的子孙节点; 属性: id:唯一标识; control:引用当前 view 中的表现控件,它的值是某个表现控件的 id; control-label:引用当前 view 中表现控件上的 label,它的值是引用某个表现控件的 id; style:标准的 CSS 声明 style; 期望的子节点: 无 说明: 同一个表现控件,通过 control 只能引用一次,通过 control-label 可以引用多次。 control-label 引用的表现控件上的 label。表现控件上的 label 的有特殊的计算规则,优先级 从高到低如下: 1、 使用 place 自身上的 label 属性; 2、 使用被引用的表现控件上 label 属性; X5 高级开发手册 2011 Justep Corp. 第 104 页 共 273 页 起 步 科 技 3、 使用被引用的表现控件上的 ref 属性指向的 relation 的 label 属性; 3.5.4 resource 期望的上下文: window 属性: id:唯一标识; 期望的子节点: style:标准的 XHTML 中的 style 节点; script:标准的 XHTML 中的 script 节点; link:标准的 XHTML 中的 link 节点; 说明:Window 使用 resource 来引用页面需要使用的资源,如 css,javascript 等等。 3.6 Model 期望的上下文: window 属性: id:唯一标识; 期望的子节点: data:一个或多个,定义数据集,使用 data 相关的组件定义,详细信息请参考组件 API 文 档中关于 data 组件的内容。 说明: xforms:model 是标准的 XForms 元素,详细信息请参考 XForms 规范。 对于 PC 的界面模型,一般都会使用 xforms:model,而对于 MOBILE 的界面模型,取而代之 的是 model 组件(/mobileUI/system/components/mobile/model.xbl.xml),详细信息请参考组件 API 文档中关于 model 组件的内容。 3.7 Data Data 组件是.W 中的数据核心,它负责数据的加载,修改,保存并且通知表现组件进行展现更新, data 组件分为 bizData,bizDataQ,data,dataQ,下面将详细对几个组件进行说明。 3.7.1 bizData 组件 bizData 组件和业务层绑定的 data,通过指定的 reader、writer、creator 来进行相关的加载、保 存、新增逻辑,同时支持主从数据的同事务保存,树形数据的延迟加载。 属性 表 3.2 bizData 的常用属性 属性 说明 X5 高级开发手册 2011 Justep Corp. 第 105 页 共 273 页 起 步 科 技 规则 bizData 上提供了数据规则,规则表达式采用 xpath 进行描述,并且数据规则是按当前行计算, 也就是说数据规则的执行环境是当前行,当行发生变化时会触发规则的重新计算。数据规则同时会 在展现组件上表现。 规则相关属性说明如下: 规则控制范围: concept 概念,表明规则对整个 data 生效,可用规则类型:readonly、relevant。 relation 关系,表明规则只对 relation 生效,规则类型全部可用。 规则控制类型: readonly 只读,控制组件的只读,当计算结果为 true 时,所有的关联展现组件都不能操作, 如 input 不能输入,trigger 不能点击;但是这只是展现层的通过 API 还是可以修改相关的值。 relevant 相关性,控制展现组件的隐藏和显示 calculate 计算,使用表达式计算的结果给绑定列 required 必填 constraint 约束 alert 提示信息 required、constraint 规则当不满足时在进行 save 时将会提示 alert 指定的提示信息(注:默认, 行修改数据才会有 save 前的规则提示,开发者可以通过 data 对象的 validOnlyChangeData 控制是否 所有数据都提示),同时关联的展现组件也会进行相关错误提示。 示例: 主从 concept Data 操作的概念 reader 加载数据 Action writer 写数据 Action creator 新增数据 Action relations Data 操作的关系,为空时取全部列(对应 action 的 select 参数) filter-relations 允许过滤的关系,即通用过滤条中能使用的关系 limit 分页取数据的页记录数,为-1 时使用后台 action 的定义;默认:20 order-by 查询数据的排序格式:关系 排序,多个之间用,分隔 update-mode 数据提交模式,取值范围:whereVersion(基于版本的更新模式,需要有 version 关 系),whereAll(使用数据的旧值做条件的更新模式);默认:whereVersion direct-delete 直接删除;默认:false confirm-delete 删除确认提示;默认:true confirm-delete-text 删除提示文本 confirm-refresh 刷新提示,数据修改后刷新数据进行提示 confirm-refresh-text 刷新提示文本 auto-load 自动加载数据,和 auto-new 属性互斥 auto-new 自动新增数据,和 auto-load 属性互斥 store-type 数据存贮类型;取值范围:grid(数据在 grid 组件上,需要和 grid 组件进行绑定),simple (内存数据对象);默认:grid is-tree 是否树型数据 X5 高级开发手册 2011 Justep Corp. 第 106 页 共 273 页 起 步 科 技 bizData 提供主从关联能力,数据保存进行同事务保存,从数据自动根据主数据自动过滤展现。 当从 data 属性 auto-load=’false’时需要开发者主动调用 loadDataByMaster(注:只载入关联的从数据) 或者 refreshData(注:重新载入数据)方法进行数据加载。 相关属性说明如下: data 关联的主 Data relation 关联主 Data 关系 示例: 树 bizData 支持树形数据的载入和修改保存,可以一次载入全部数据,也可以按节点分步载入展开, 加载树形节点数据可以使用 boolean loadTreeData( parentId, callback)函数,重新载入数据使用 refreshData 方法,属性 is-tree=’true’时表明是树形数据,同时 data 上还有关于 tree 的属性 tree-option。 相关属性说明如下: parent-relation 指出构成父子树的父关系,必须的 virtual-root 虚根名称 root-filter 根过滤条件,当此属性不为空时数据按节点分步载入 node-kind-relation 节点类型关系(自动维护关系的值),当数据为’nkLeaf’时表明是叶子节 点 node-level-relation 节点层次关系(自动维护关系的值) 示例: 事件 bizData 通过事件机制来让开发者控制相关逻辑,事件说明如下: onAfterDelete( event) [回调型事件]业务数据删除后 Parameters: event 它的结构如下: {"source":组件的 js 对象,"deleteIDList":删除的行 Id 数组} onAfterNew( event) [回调型事件]业务数据新增后 Parameters: event 它的结构如下: {"source":组件的 js 对象,"id":新增的行 Id} onAfterRefresh( event) [回调型事件]业务数据刷新后 Parameters: event X5 高级开发手册 2011 Justep Corp. 第 107 页 共 273 页 起 步 科 技 它的结构如下: {"source":组件的 js 对象} onAfterRefreshPage( event) [回调型事件]业务数据页刷新后 Parameters: event 它的结构如下: {"source":组件的 js 对象 onAfterRefreshTree( event) [回调型事件]树形业务数据刷新成功后 Parameters: event 它的结构如下: {"source":组件的 js 对象,"parent":当前刷新数据的父 id} onAfterSave( event) [回调型事件]业务数据保存后 Parameters: event 它的结构如下: {"source":组件的 js 对象} onBeforeDelete( event) [回调型事件]业务数据删除前 Parameters: event 它的结构如下: {"source":组件的 js 对象,"cancel":可修改,设置为 true 后中断当前 new 动作} onBeforeNew( event) [回调型事件]业务数据新增前 Parameters: event 它的结构如下: {"source":组件的 js 对象,"cancel":可修改,设置为 true 后中断当前 new 动作} onBeforeRefresh( event) [回调型事件]业务数据刷新前 Parameters: event 它的结构如下: {"source":组件的 js 对象,"cancel":可修改,设置为 true 后中断当前刷新动作} X5 高级开发手册 2011 Justep Corp. 第 108 页 共 273 页 起 步 科 技 onBeforeRefreshPage( event) [回调型事件]业务数据页刷新前 Parameters: event 它的结构如下: {"source":组件的 js 对象,"cancel":可修改,设置为 true 后中断当前刷新动作} onBeforeRefreshTree( event) [回调型事件]树形业务数据刷新前 Parameters: event 它的结构如下: {"source":组件的 js 对象,"cancel":可修改,设置为 true 后中断当前刷新动作,"parent":当前刷 新数据的父 id} onBeforeSave( event) [回调型事件]业务数据保存前 Parameters: event 它的结构如下: {"source":组件的 js 对象,"cancel":可修改,设置为 true 后中断当前保存动作} onCreate( event) [回调型事件]组件创建时 Parameters: event 它的结构如下: {"source":组件的 js 对象} onCustomNew( event) [回调型事件]业务数据新增接管,完全接管 new 动作 Parameters: event 它的结构如下: {"source":组件的 js 对象,"data":行数据对象{id,version,state,colValues},由接管函数负责赋值} onCustomRefresh( event) [回调型事件]业务数据刷新接管,完全接管刷新动作 Parameters: event 它的结构如下: {"source":组件的 js 对象, "cancel":可修改,设置为 true 后中断当前刷新动作, "limit":页大小, "offset":偏移} onCustomRefreshTree( event) [回调型事件]树形业务数据刷新接管,完全接管树形刷新动作 X5 高级开发手册 2011 Justep Corp. 第 109 页 共 273 页 起 步 科 技 Parameters: event 它的结构如下: {"source":组件的 js 对象} onCustomSave( event) [回调型事件]业务数据保存接管,完全接管保存动作 Parameters: event 它的结构如下: {"source":组件的 js 对象, "cancel":可修改,设置为 true 后中断当前保存动作} onDeleteError( event) [回调型事件]直接删除数据失败 Parameters: event 它的结构如下: {"source":组件的js对象,"errorType":'server',"errorNode":错误信息XML,"httpError":http请求失 败(true/false),"httpState":http 请求返回码} onIndexChanged( event) [回调型事件]行记录变化 Parameters: event 它的结构如下: {"source":组件的 js 对象,"rowID":行 Id,"rowIndex":行索引} onIndexChanging( event) [回调型事件]行记录变化中 Parameters: event 它的结构如下: {"source":组件的 js 对象,"rowID":行 Id,"rowIndex":行索引,"originalRowID":原行 Id,"originalRowIndex":原行索引} onLoadSlave( event) [回调型事件]data 加载从数据 Parameters: event 它的结构如下: {"source":组件的 js 对象} onNewCreateParam( event) [回调型事件]业务新增数据创建新增参数事件,可以增加和修改用户自定义的参数 Parameters: X5 高级开发手册 2011 Justep Corp. 第 110 页 共 273 页 起 步 科 技 event 它的结构如下: {"source":组件的 js 对象,"param":新增参数对象} onNewError( event) [回调型事件]新增数据失败 Parameters: event 它的结构如下: {"source":组件的js对象,"errorType":'server',"errorNode":错误信息XML,"httpError":http请求失 败(true/false),"httpState":http 请求返回码} onRefreshCreateParam( event) [回调型事件]业务新增数据创建新增参数事件,可以增加和修改用户自定义的参数 Parameters: event 它的结构如下: {"source":组件的 js 对象,"param":新增参数对象} onRefreshError( event) [回调型事件]刷新数据失败 Parameters: event 它的结构如下: {"source":组件的js对象,"errorType":'server',"errorNode":错误信息XML,"httpError":http请求失 败(true/false),"httpState":http 请求返回码} onSaveCommit( event) [回调型事件]业务数据保存事务提交后 Parameters: event 它的结构如下: {"source":组件的 js 对象} onSaveCreateParam( event) [回调型事件]业务数据保存创建保存参数事件,可以增加和修改用户自定义的参数 Parameters: event 它的结构如下: {"source":组件的 js 对象,"param":保存参数对象} onSaveError( event) [回调型事件]保存数据失败 Parameters: event X5 高级开发手册 2011 Justep Corp. 第 111 页 共 273 页 起 步 科 技 它的结构如下: {"source":组件的js对象,"errorType":'server',"errorNode":错误信息XML,"httpError":http请求失 败(true/false),"httpState":http 请求返回码} onValueChanged( event) [回调型事件]数据变化 Parameters: event 它的结构如下: {"source":组件的 js 对象,"column":关系,"rowIndex":行索引,"value":新值,"originalValue":旧值} 3.7.2 data 组件 Data 组件是.W 上通用的数据组件,相对于 bizData 组件没有绑定相关的业务 action,数据的新 增、加载、保存需要开发者通过接管事件来实现。 属性 表 3.3 data 的常用属性 规则 基本和 bizData 数据规则一致 规则相关属性说明如下: 规则控制范围: column 列,表明规则只对 column 生效,规则类型全部可用。 规则控制类型: type 数据类型,通知展现组件感知数据类型,并做类型校验 readonly 只读,控制组件的只读,当计算结果为 true 时,所有的关联展现组件都不能操作, 如 input 不能输入,trigger 不能点击;但是这只是展现层的通过 API 还是可以修改相关的值。 relevant 相关性,控制展现组件的隐藏和显示 calculate 计算,使用表达式计算的结果给绑定列 属性 说明 columns Data 操作的列,必须的属性,如:'sName,sAge' direct-delete 直接删除;默认:false confirm-delete 删除确认提示;默认:true confirm-delete-text 删除提示文本 confirm-refresh 刷新提示,数据修改后刷新数据进行提示 confirm-refresh-text 刷新提示文本 auto-load 自动加载数据,和 auto-new 属性互斥 auto-new 自动新增数据,和 auto-load 属性互斥 store-type 数据存贮类型;取值范围:grid(数据在 grid 组件上,需要和 grid 组件进行绑 定),simple(内存数据对象);默认:grid src 加载数据的 URL X5 高级开发手册 2011 Justep Corp. 第 112 页 共 273 页 起 步 科 技 required 必填 constraint 约束 alert 提示信息 具体可以参考 bizData 规则说明。 示例: 事件 事件同 bizData,请参考 bizData 事件说明。 3.8 Grid Grid 组件是 UI 中主要的表现组件之一,grid 基于 dhtmlX grid 扩展而来,有着很强的表现能力和 数据操作能力。在 grid 的基础上扩展了 treeGrid 和 tree 组件,也就是说 treeGrid 和 Tree 的用法和 API 和 grid 基本一致。下面逐一介绍这些组件: 3.8.1 Grid 组件 Grid 组件是具有较强能力的重量级组件,基础是 dhtmlX grid 组件,在此基础上增加了列的类型, 增加了相关的回调事件,增强了数据加载的能力(注:直接使用 grid 时可以参考 dhtmlX grid 的 API)。 同时 grid 还是 data 的数据源,也就是说 data(store-type=’grid’)的数据是存放在 grid 上的。 Grid 主要属性 表 3.4 grid 的常用属性 Grid 的列 通过不同的列类型实现不同的操作和展现,通过 type 属性定义,目前提供的列类型有: ro:只读文本显示 ed:普通的 input 编辑 属性 说明 data Grid 绑定的 Data(store-type=’grid’) multi-selection 多选;默认:false direct-edit 直接编辑模式,当为 true 时单击 cell 进入编辑状态;默认:false fixed-column-size 固定列数(前多少列是固定列) row-height 行高 move-column 是否可以拖动列 appearance 展现方式,当为 tree 时按树形展现 cascade 级联选择 dragable 允许拖拽 delay 当为 tree 时,数据延迟加载(第一次展开节点时加载数据),默认:false smart-render 智能渲染行数,行渲染的数,可以优化 grid 大数据量展现的渲染,当需要显示行时 才进行行渲染 X5 高级开发手册 2011 Justep Corp. 第 113 页 共 273 页 起 步 科 技 ch:checkbox 编辑,选中和不选中的值由 checked-value 和 unchecked-value 确定,没有设置时为 0、 1 html:通用的 grid 列扩展机制,可以通过接管 onRender 事件进行 cell 的展现重画和动作控制 tree:当是 tree 和 treeGrid 时必须 txt:编辑时弹出文本框进行编辑 textarea:在 cell 上出现文本编辑框 date,dateTime:提供时间选择框 inputbtn:展现形式是 input + 按钮,提供 onButtonClick 事件(点击按钮)、onEditDone 事件(输 入框值改变时编辑完成事件) select:可以绑定 gridSelect 类的组件,编辑时通过 select 组件进行(editor 属性绑定组件 ID) attachment:grid 上的附件,直接在 grid 上展现附件操作按钮。(editor 属性绑定组件 ID) attachment2:grid 上的附件,进入编辑状态后出现附件操作按钮。(editor 属性绑定组件 ID) 列的主要属性: 表 3.5 grid 列的常用属性 事件 onAfterIndexChanged( event) 当前行改变结束后触发 Parameters: event 事件属性: {"source":XFGrid 对象, "instance":instance,"grid":dhtmlxGrid 对象,"rowID":选中行的 ID,"oldRowID":行改变前的 rowID} onAfterRowDrag( event) 鼠标拖动树节点完成后触发 Parameters: event 事件属性: {"source":XFGrid 对象, "instance":instance,"grid":dhtmlxGrid 对象,"srcRowID":被拖动节点 ID,"srcParentRowID":原始父节点 ID,"targetRowID":目标父节点 ID} {boolean} onBeforeIndexChanged( event) 当前行改变之前触发,通过 return 判断是否可以改变行 Parameters: event 属性 说明 ref 对应 data 的 relation filter-editor 列出现过滤栏(前端过滤),取值范围:#text_filter(文本输入过滤),#select_filter(下拉选 择过滤),具体可以参考 dhtmlx grid 的原生说明 sort-datatype 数据排序类型(前端排序),当为空时当前列没有排序能力,取值范围:str,int show-index 显示行号 editor 当 type 为 select、attachment、attachment2 时有效,绑定相关组件的 id X5 高级开发手册 2011 Justep Corp. 第 114 页 共 273 页 起 步 科 技 事件属性: {"source":XFGrid 对象, "instance":instance,"grid":dhtmlxGrid 对象,"rowID":准备选中行的 ID} Returns: {boolean} true: 允许行改变;false:禁止行改变; {boolean} onBeforeRowDrag( event) 鼠标拖动树节点前触发 Parameters: event 事件属性: {"source":XFGrid 对象, "instance":instance,"grid":dhtmlxGrid 对象,"srcRowId":被拖动节点 ID,"srcParentRowId":原始父节点 ID,"targetRowId":目标父节点 ID} Returns: {boolean} true:允许拖动到该节点下;false:不允许拖动到该节点下 {string} onCellHint( event) 鼠标移动到单元格上后,显示 hint 回调 Parameters: event 事件属性: {grid:dhtmlxGrid 对象,"rowID":单元格所在行 ID, columnId:单元格所在列 ID, value:单元格值} Returns: {string} hint 文本内容 onInit( event) 表格初始化时 Parameters: event 事件属性: {"source":XFGrid 对象,"grid":dhtmlxGrid 对象} onLastEditorPressEnter( event) 编辑模式(direct-edit=true)时,在最后一行的最后一个单元格回车触发。通常用来添加新行。 Parameters: event 事件属性: {"source":XFGrid 对象} {boolean} onRowAllowCheck( event) 多选时,某一行是否可选触发 Parameters: event 事件属性: {"source":XFGrid 对象, "instance":instance,"grid":dhtmlxGrid 对象,"rowID":节点 ID} Returns: X5 高级开发手册 2011 Justep Corp. 第 115 页 共 273 页 起 步 科 技 {boolean} true:可选;false:不可选 onRowChecked( event) 当有 column 的类型为 checkbox 时候,选择触发 Parameters: event 事件属性: {"source":XFGrid 对象, "instance":instance,"grid":dhtmlxGrid 对象,"rowID":行 ID,"checked":是否 选中} onRowCheckedAll( event) 点击表头全选触发 Parameters: event 事件属性: {"source":XFGrid 对象, "instance":instance,"grid":dhtmlxGrid 对象,"checked":是否选中} onRowClick( event) 行单击事件 Parameters: event 事件属性: {"source":XFGrid 对象, "instance":instance,"grid":dhtmlxGrid 对象,"rowID":行 ID} onRowDblclick( event) 行双击事件 Parameters: event 事件属性: {"source":XFGrid 对象, "instance":instance,"grid":dhtmlxGrid 对象,"rowID":行 ID} onRowExpand( event) 树节点展开时触发 Parameters: event 事件属性: {"source":XFGrid 对象, "instance":instance,"grid":dhtmlxGrid 对象,"delay":是否处于延迟状态} onRowRightClick( event) 鼠标右键单击行时触发 Parameters: event 事件属性: {"source":XFGrid 对象, "instance":instance,"grid":dhtmlxGrid 对象,"rowID":行 ID} X5 高级开发手册 2011 Justep Corp. 第 116 页 共 273 页 起 步 科 技 onRowValueChanged( event) 行级值改变后触发。加载数据时,每渲染完一行后触发。非加载数据时,单元格值改变后触发。 Parameters: event 事件属性: {"source":XFGrid 对象, "instance":instance,"grid":dhtmlxGrid 对象,"rowID":行 ID} onShowNodeImg( event) 树节点图标回调 Parameters: event 事件属性: {"source":XFGrid 对象, "instance":instance,"grid":dhtmlxGrid 对象,"rowID":行 ID} Returns: 图片路径 关于 grid、treeGrid、tree treeGrid 和 Grid 的差异,treeGrid 绑定的 data 是树形的数据(is-tree=’true’);treeGrid 必须有一 列是 tree 类型; tree 和 treeGrid 的差异,tree 的属性 appearance 为 tree;它们的展现如下图: 图 3.11 Grid 图 3.12 treeGrid X5 高级开发手册 2011 Justep Corp. 第 117 页 共 273 页 起 步 科 技 图 3.13 tree 3.9 其他常用组件 3.9.1 Input Input 组件是 UI 中经常使用的录入组件,input 组件能自动感知 ref 绑定的 relation 数据类型, 当 relation 为 datetime 时会自动出现时间选择按钮,如下图: 图 3.14 input 日期选择 Input 属性和事件如下(具体可以参考 API 手册): 图 3.15 input 属性 X5 高级开发手册 2011 Justep Corp. 第 118 页 共 273 页 起 步 科 技 图 3.16 input 事件 3.9.2 Select Select 组件主要包括 gridSelect、treeSelect、simpleSelect、checkbox、radio。 图 3.17 select select 组件必须绑定 data 使用(ref 属性必须设置),itemset 也不能根据 data 进行动态变化,但 是 gridSelect 和 treeSelect 的展现能力要更强一些。 3.9.3 dialog、windowDialog、windowReceiver 等 dialog 是通用的对话框组件,它提供了基本的对话框框架。通过 open 和 close 方法打开和关闭 对话框,同时提供 onInit、onOpen、onClose 事件。对话框的展现内容通过属性 content 进行设置, 为标准的 xhtml 语法,如:姓名。 windowDialog 组件是在 dialog 基础上进行了针对.w 页面的封装,windowDialog 是基于.W 的对话 框,也就是说对话框展现的是.W。windowDialog 和 windowReceiver 之间封装了数据交换的能力,也 就是说基于 windowDialog 和 windowReceiver 的两个.W 可以进行数据传递。通常的使用模式是在主 窗口.W 中放入 windowDialog 组件,通过 open 方法或者 onSend 事件准备需要传递的数据;在对话 框.W 中放入 windowReceiver 组件,通过 onReceiver 事件进行数据接收(每次对话框打开都会触发), 对话框.W 通过windowReceiver 组件的windowEnsure方法回传数据,同时主窗口.W 中的windowDialog 组件 onReceiver 能接收到回传的数据,这里所有的事件中都是通过 event.data 来获取传递的数据。 和 windowDialog 组件类似的组件还有 windowFrame(页面嵌入 iframe)和 windowRunner(打开 新的功能页)组件,它们同样可以和 windowReceiver 组件配合使用,方法逻辑基本一致此处不再赘 述。具体方法和属性请查阅 API 文档。 X5 高级开发手册 2011 Justep Corp. 第 119 页 共 273 页 起 步 科 技 第4章 .J 4.1 概述 .J 是 UIServer 的重要组成部分,是 UIServer 扩展能力的 Java 手段,是 UI 模型上提供的 servlet 能力。.J 相对.W 更灵活,能力更强,目前在 UI 上.J 主要有两种用途: 1、 代码逻辑处理,如:调用 BizAction 的“/UI/system/service/common/bizAction.j”; 2、 页面或者页面片段生成,如:“/UI/system/service/report/reportBrowse.j”生成报表的页面片 段 4.2 组成及使用 组成 由.J 文件和动态 Java 文件组成,.J 是调用的入口 URL,java 是.J 的代码实现部分,java 的类是和.J 同名的并且首字母大写,同时类必须实现接口“ com.justep.ui.JProcessor ” 或 者 继 承 类 “com.justep.ui.impl.JProcessorImpl”。 接口“com.justep.ui.JProcessor”定义如下: 图 4.1 JProcessor 代码 通常情况下只需要继承类“com.justep.ui.impl.JProcessorImpl”,通过重载实现 doGet 和 doPost 方法就可以了,doGet 处理 http get 请求,doPost 处理 http post 请求。 类“com.justep.ui.impl.JProcessorImpl”的 doGet 和 doPost 定义如下: 图 4.2 doGet 和 doPost 代码 X5 高级开发手册 2011 Justep Corp. 第 120 页 共 273 页 起 步 科 技 例子(/UI/system/service/common/bizAction.j): 图 4.3 bizAction.j 代码 使用 1、 浏览器端 JS 调用,首先需要在页面上引入“/base/request.js”,如果使用的是.W 则不需要显 示引入;然后使用函数 justep.Request.sendHttpRequest 进行调用(当然也可以使用其他的 ajax 方式调用,如$.ajax)。 例如: 图 4.4 sendHttpRequest 调用代码 justep.Request.sendHttpRequest 参数说明: Parameters: url {string} [required]URL param [required]向服务端 post 的数据 contentType 参考 http 请求的相关说明,缺省:"application/xml" process 缺省取环境里的 activity 缺省取环境里的 executor 执行者,缺省取环境里的 executeContext 执行环境,缺省取环境里的 async {boolean} 是否异步执行,默认同步执行 Returns: {XMLHttpRequest} 2、 Java 代码中可以使用 org.apache.commons.httpclient.HttpClient 进行正常调用,HttpClient 的 使用这里就不再赘述,请查阅相关文档)。 X5 高级开发手册 2011 Justep Corp. 第 121 页 共 273 页 起 步 科 技 第5章 Portal 5.1 概述 X5 门户是一个基于 web 的门户系统,它属于 UI 模型的一部分。位于 UI 模型中,文件位于 model/UI/portal 路径下。它是基于 xhtml、css 和 js 开发的,同时采具有 X5 UI 模型的特性。 X5 门户的特点是集成 X5 业务逻辑,同时具有 widget 等经典门户能力,可以灵活配置和二次开 发,并具有多功能同时打开的能力。 关于 X5 门户的使用可以查看用户使用手册中相关章节。下面主要介绍门户定制开发相关特性。 X5平台在2000版本之后, 推出了新的门户, 新门户主要的特点是对于平板电脑更友好,界面更时 尚并且容易定制。新门是给予组件的思路开发,样式和代码分离更清楚易于修改或定制开发。同时 新门户是完全给予 X5 界面模型开发的,采用.w 和.j 来实现,所有代码开发者都可以得到代码,更便 于掌握和修改。 我们把已经早先版本中的门户称为经典门户,它和新的门户是可以同时使用的,在 UI 模型资源 的目录分别是: /UI/portal /UI/portal2/process/portal 下边介绍的是经典门户,第 6 章介绍新的门户。 5.2 config.js 文件配置说明 通过修改 config.js 文件,开发人员可以很容易对门户进行定制和修改。config.js 文件位于 model/UI/portal/x5/js 目录下。 5.2.1 布局的配置 门户中的布局是指 widget 在门户 tab 页中的排列展示方式。 布局定义 说明 :定义一个布局信息(由a1 a2 a3 a4四个布局区域area,对内容显示区进行布局),系 统已经创建大量的布局模板(如:采用三个区域的l3_2) 定义位置:ortalConfig.layouts 定义格式 portalConfig.layouts ={ id:{ a1:'' a2:'', a3:'', a4:'', background:'', X5 高级开发手册 2011 Justep Corp. 第 122 页 共 273 页 起 步 科 技 }, } 属性 表 5.1 布局属性 属性名 描述 Id 布局的 id a1、a2、a3、a4 四个布局模块(area)的属性,空格分隔(33%百分比 last 换行/right 右浮动/left 左浮动 hide 隐藏) background 背景切换样式的 class(可选配置) 实例 portalConfig.layouts ={ l3_2:{ a1:'50%', a2:'50% last', a3:'100% last', a4:'hide', background:'normal'} } 布局工具栏配置 说明 :义布局工具栏中显示的布局,其中已经加入系统配置的布局信息。 定义位置:ortalConfig.layoutsToolbar 定义格式 portalConfig.layoutsToolbar={ id:{ category:"", layoutIDs:["",……] } }; 属性 表 5.2 布局工具栏配置 属性名 描述 Id 类别的 id category 类别名称 layoutIDs 布局信息 id 的数组 实例 portalConfig.layoutsToolbar = { m1 : { category : "4", layoutIDs : [ "l4_0", "l4_1", "l4_2", "l4_3", "l4_4", "l4_5", "l4_6" ] } X5 高级开发手册 2011 Justep Corp. 第 123 页 共 273 页 起 步 科 技 }; 5.2.2 默认页面配置 说明:认的显示页面 定义位置:ortalConfig.defaultTabs 定义格式 portalConfig.defaultTabs={ id:{ itle:'', layoutID:'', widgets:['widgetID area color model',……], authority:{ ab:{removeable:true/false} idget:{addable:true/false,removeable:true/false,sortable:true/false} }, refresh:true/false hideTree:true/false }, } 属性 表 5.3 默认布局配置 属性名 描述 id 页面的 id title tab 的名称 layoutID 布局方式的 id refresh 整个内容是否刷新优先级别大于 widget 刷新 (可选值:true false) hideTree 打开页面是否隐藏功能树 widgets widgets 中包括的属性(以空格分隔) widgetID widget 信息的 id area 布局模块 id color 选择非默认模板时候的 title 的颜色 model widget 模板(默认无,B,C) authority 页面的控制权限 tab 包括 tab 的属性 removeable tab 是否能关闭 widget addable 页面中的 widget 是否添加 removeable 页面中的 widget 是否能删除 sortable 页面中的 widget 是否能拖动 实例 portalConfig.defaultTabs={ t001:{ X5 高级开发手册 2011 Justep Corp. 第 124 页 共 273 页 起 步 科 技 tle:'首页', layoutID:'l4_0', widgets:['TaskWaiting a1 greed C', 'TaskSubmit a1'], authority:{ tab:{removeable:true} widget:{addable:true,removeable:true,sortable:true} }, refresh:true, ideTree:true }; 如果要设置功能为默认页面,可以如下配置: t002:{title:'功能树', isFunc:true, hideTree:true, url:"/portal/functree.w", process:"/SA/OPM/system/systemProcess", activity:"mainActivity"} 5.2.3 功能树快捷方式 说明:功能树快捷方式栏默认配置 定义位置:ortalConfig.shortcuts 定义格式:ortalConfig.shortcuts = [{title:'', url:'', openType:''}, ...] 属性 表 5.4 功能树快捷方式 属性名 描述 title 功能名 url 连接 openType 打开方式 可选值: lank(新窗口) ialog(弹出窗口)可以由height 以及width urrent (当前窗口连接跳转) 实例 portalConfig.shortcuts = [ { title : '新闻', url : 'http://…', openType : 'dialog' } ]; 5.2.4 提示区域配置 说明:右下角提示区域 X5 高级开发手册 2011 Justep Corp. 第 125 页 共 273 页 起 步 科 技 定义位置:ortalConfig.reminds 定义格式 portalConfig.reminds = { id:{ url':'', process':'', activity':'', params':'', interval':'' }, }; 属性 表 5.5 提醒区域配置 属性名 描述 id 提示块的 ID url 提示块请求内容的地址 process 业务模型中定义的 process activity 业务模型中定义的 activity params 打开页面所需要的参数 interval 请求间隔时间(单位分钟) width 请求块宽度 (默认为 100px) 实例 portalConfig.reminds = { reminds_r0 : { 'url' : '/SA/theme/themeDefine/test.p', 'process' : '', 'activity' : '', 'params' : '', 'interval' : '5' } }; 5.2.5 主题配置 说明 :义主题切换中的主题 定义位置:ortalConfig.themes 定义格式 portalConfig.themes={ id:{ title:"", tooltip:"", icon:"" }, // 其它 X5 高级开发手册 2011 Justep Corp. 第 126 页 共 273 页 起 步 科 技 }; 属性 表 5.6 主题配置 属性名 描述 Id 模板的 ID title 标题 tooltip 图片的 tooltip icon 展示的缩略图 实例 portalConfig.themes={ defaultTheme:{ title:"默认", tooltip:"系统默认风格", icon:"x5/css/d/settings/templet/m1.jpg" } }; 5.3 自定义主题 5.4 部件(widget)的开发 说明 widget 的开发包括内容的开发,发布以及授权。 widget 的内容可以由多种形式来实现,.w 文件,html 文件或内容片段。采用 w 文件形式最为普 遍,和开发一般的.w 文件没有什么区别。也就是说任何的.w 文件都可以发布成 widget。 widget 的发布(或者说是 widget 定义)是描述在 UI 里模块中的 config 文件夹下,命名的规则为 xx.widget.xml 中(xx 为自定义的名称) 在同目录下的 xx.function.xml 中定义相应的权限(process 和 activity) 定义和授权都可以通过 studio 可视化来实现,下面把代码结构介绍以下。 实例1 1、 在 sys.function.xml 中定义权限文件 2、 在同一目录下的 sys.widget.xml 中定义 widget X5 高级开发手册 2011 Justep Corp. 第 127 页 共 273 页 起 步 科 技 实例2 1、 在demo.function.xml中定义权限文件 2、 在同一目录下的demo.widget.xml中定义widget 参数说明 Root下第一级子节点为widget的类别 如: X5 高级开发手册 2011 Justep Corp. 第 128 页 共 273 页 起 步 科 技 表 5.7 部件发布 属性名 描述 label 类别标题 id widget 的 id type widget 的类别(func:打开的功能,link:打开的链接,path:打开的代码段) *必须 定义属性 title widget 的标题 height widget 高度 thumbnail 在工具栏显示的缩略图 refresh 页面是否刷新 url widget 读取内容的 url process 跟权限相对应的 process activity 跟权限相对应的 activity params 打开页面所需要的参数 more 节点 widget 上配置“更多"功能的参数 title 打开页面的 tab 名称 url 打开页面的 url process 跟权限相对应的 process activity 跟权限相对应的 activity params 打开页面所需要的参数 refresh 控制页面是否刷新 效果 图 5.1 示例图 图 5.2 示例图 X5 高级开发手册 2011 Justep Corp. 第 129 页 共 273 页 起 步 科 技 5.5 与第三方集成 5.5.1 第三方直接登陆 X5 的门户 可以通过 url 带参数的形式直接登陆 X5 门户,具体方法是 URL: http://{服务器 ip 和端口}/{服务名称}/portal/directLogin.w 参数: username={用户名}&password={MD5 格式的密码} (完整的案例可以参考 model\UI\portal\demo4openPortal.html) 5.5.2 第三方直接打开 X5 的功能 需要三个步骤,先要通过 api 登录 x5 系统,成功后获得业务 session Id(bsessionid),最后打开 功能,具体操作如下: 首先需要登录,获取业务session id (bsessionid) 说明:调用的 URL 和参数 URL : http://{服务器 ip 和端口}/{服务名称} /portal/controller/system/User/login 方法: post 参数: js 对象,结构{username:””, password=””} (密码要求是 MD5 的) 案例:基于 jquery.js,md5.js function login(){ var username = $("#username").val(); var pw = hex_md5($("#pw").val()); var data = {username:username, password:pw}; $.post("/x5/portal/controller/system/User/login", data, onLogin); } 通过返回值,判断是否成功以及bsessionid function onLogin(data){ data = window["eval"]("(" + data + ")"); if($.isArray(data)){ var result = data[0]; if(result.status === "SUCCESS"){ data = window["eval"]("(" + result.data + ")") $("#bid").val(data.bsessionID); } } } 通过功能的URL(及相关参数,包括bSessionId)就可以打开X5功能了 如: Window.open(http://localhost:8080/x5/SA/task/workRecord/mainActivity.w?bsessionid= + data.bsessionID) 说明:如果功能有 process 和 activity 那么需要作为参数带上 X5 高级开发手册 2011 Justep Corp. 第 130 页 共 273 页 起 步 科 技 (完整的案例可以参考 model\UI\portal\demo4openFunc.html) 第6章 新 Portal 6.1 概述 X5 平台在 2000 版本之后, 推出了新的门户, 新门户主要的特点是对于平板电脑更友好,界面更 时尚并且容易定制。新门是给予组件的思路开发,样式和代码分离更清楚易于修改或定制开发。同 时新门户是完全给予 X5 界面模型开发的,采用.w 和.j 来实现,所有代码开发者都可以得到代码,更 便于掌握和修改。 新门户的代码资源在 /UI/portal2/process/portal 目录下。 6.2 目录结构和文件介绍 新门户的代码资源在 /UI/portal2/process/portal 目录下。 6.2.1 .w 文件 登录界面 /UI/portal2/process/portal/login.w 门户主界面 /UI/portal2/process/portal/index.w 6.2.2 .j 文件 登录操作 /UI/portal2/process/portal/DoLogin.j 参数: username 用户名 password 密码,MD5 编码格式 language 语言, 默认值 ”zh_CN” X5 高级开发手册 2011 Justep Corp. 第 131 页 共 273 页 起 步 科 技 返回数据: 数据格式为 JSON flag 操作成功为 true,否则为 false message 操作返回的提示信息 bsessionid 业务 session ID 案例: http://localhost:8080/x5/portal2/process/portal/DoLogin.j?username=system&password=C4CA4238A0B923820 DCC509A6F75849B&language=zh_CN 注销操作 /UI/portal2/process/portal/DoLogout.j 参数: bsessionid 业务 session ID, 需要和登录时返回的 id 一致 返回数据: 数据格式为 JSON flag 操作成功为 true,否则为 false message 操作返回的提示信息 案例: http://localhost:8080/x5/portal2/process/portal/DoLogout.j?bsessionid=16D33124252E366C37788CB3D7D86CA2 修改密码操作 /UI/portal2/process/portal/ChangePassword.j 参数: username 用户名 password 密码,MD5 编码格式 new_password 新密码,MD5 编码格式 bsessionid 业务 session ID, 需要和登录时返回的 id 一致 返回数据: 数据格式为 JSON flag 操作成功为 true,否则为 false message 操作返回的提示信息 案例: http://localhost:8080/x5/portal2/process/portal/ChangePassword.j?username=system&password=C4CA4238A0 B923820DCC509A6F75849B&new_password=C4CA4238A0B923820DCC509A6F7512AC&bsessionid=16D33124252E36 6C37788CB3D7D86CA2 X5 高级开发手册 2011 Justep Corp. 第 132 页 共 273 页 起 步 科 技 直接登录操作 /UI/portal2/process/portal/DirectLogin.j 参数: username 用户名 password 密码,MD5 编码格式 返回数据: 数据格式为 JSON flag 操作成功为 true,否则为 false message 操作返回的提示信息 案例: http://localhost:8080/x5/portal2/process/portal/DirectLogin.j?username=system&password=C4CA4238A0B923820DC C509A6F75849B 6.3 组件说明 新门户的组件设计思路是数据和表现分离, 样式和代码分离。通过这样的设计以便于开发者修 改,因为在实际项目中,没有哪种门户能完全满足用户的需求,二次修改开发是难以避免的。 6.3.1 数据状态组件 用户状态持久化组件 Customizer 描述:这个类负责门户状态的持久化,如布局,常用功能,还可定制存储。 文件:/UI/portal2/process/portal/components/customizer.js 方法: save ( key, data ) 描述:保存数据到数据库,开发者可以调用这个方法保存自定义的数据 参数: key 关键字 data 数值,可 JSON 序列化的数据 get ( key ) 描述:返回 key 所对应的数据 参数:key 关键字 返回:JSON 数据 功能树数据状态组件 FuncManager X5 高级开发手册 2011 Justep Corp. 第 133 页 共 273 页 起 步 科 技 描述:这个类主要负责和功能树,功能操作,常用功能,打开功能相关数据状态管理 属性: data 功能树的数据 数据结构描述: id 基于 url process activity params 生成的标示 label 标签 url 功能路径 params query 字符串 activity 功能环节 process 功能过程 icon 图标 childNodes 子节点数组 事件: run-func 描述:当新打开一个功能时触发 参数:是功能节点的 data active-func 描述:当打开一个已打开的功能时触发 参数:是功能节点的 data close-func 描述:当关闭一个功能时触发 参数:是功能节点的 data add-shortcut 描述:增加常用功能时候触发 remove-shortcut 描述:删除常用功能时候触发 方法: each ( cb ) 描述:迭代功能树的节点 参数: cb 回调方法,回调方法接收的参数 item 和 parent。item 是节点数据,结构如 data。Parent 是它的父节点。当返回为 ture 的时候终止迭代。 getExecutor 描述放回当前执行者 X5 高级开发手册 2011 Justep Corp. 第 134 页 共 273 页 起 步 科 技 runFunc ( id, executor ) 描述:运行功能 参数: id 功能的 id,如 data 的 id,或者 data executor 执行者的 fid, 默认是当前用户 closeFunc ( id ) 描述:关闭功能 参数:id 功能的 id, 或者 data, 默认是关闭当前功能 addShortcu ( id ) 描述:增加常用功能 参数:id 功能的 id removeShortcut ( id ) 描述:删除常用功能 参数:id 功能的 id moveShortcut ( index id ) 描述:排序常用共能 参数:index 以 0 开始的排序位置,id 功能的 id eachShortcut ( cb ) 描述:遍历常用功能 参数:cb 回调方法,参数 item 功能节点,如 data isShortcut( id ) 描述:判断功能是否是常用功能 参数:id 功能的 id isRuned( id ) 描述:判断功能是否是已经运行 参数:id 功能的 id getRunedCount () 描述返回正在运行的功能个数 Save () 描述:保存当前功能相关的状态,如常用功能 getAgentCount 描述:返回代理人的个数 eachAgent ( cb ) X5 高级开发手册 2011 Justep Corp. 第 135 页 共 273 页 起 步 科 技 描述:遍历代理人 参数:cb 回调方法,参数是代理人的 fid openAgentPage ( agentId ) 描述:打开代理人的门户页面 参数:agentId 为代理人的 fid cloasAllAgentPage () 描述:关闭所有打开的代理人页面 门户数据状态组件 PortalManager 描述:这个类主要负责和门户相关的操作及相关数据状态的管理 属性: 事件: add-widget 描述:当向门户添加 widget 时触发 remove-widget 描述:当删除 widget 时触发 refresh-widget 描述:当刷新 widget 时触发 layout-change 描述:当修改布局结构的时候触发 dock-changed 描述:当修改 widget 的位置时触发 方法: addWidget ( id ) 描述:向门户添加 widget 参数:id 为 widget 的 id removeWidgte ( id ) 描述:门户删除 widget 参数:id 为 widget 的 id setLayout ( id ) X5 高级开发手册 2011 Justep Corp. 第 136 页 共 273 页 起 步 科 技 描述:设置布局结构 参数:id 为 布局的 id setWidgteDock ( id, dockIndex, position) 描述:设置 widget 在布局结构中的位置 参数:id 为 widget 的 id dockIndex 为区域块的编号 position 为在区域块内的位置 setWidgetAttr ( id, name, value ) 描述:设置 widget 的属性 参数:id 为 widget 的 id name 为属性名 value 为属性值 getWidgetDefById ( id ) 描述:通过 id 获取 widget 定义 参数:id 为 widget 的 id eachLayout ( cb ) 描述:遍历布局的定义 eachWidgetDef ( cb ) 描述:遍历 widget 的定义 save ( ) 描述:保存门户的状态到数据库 refresh ( ) 描述:刷新 widget 6.3.2 表现组件 X5 高级开发手册 2011 Justep Corp. 第 137 页 共 273 页 起 步 科 技 第7章 高级特性 7.1 扩展空间 7.1.1 使用场景 期望修改某个模块(目录)中的部分内容 ,但由于某种原因不能直接修改相应的模块(目录), 这时就可以使用扩展空间来实现。 7.1.2 规则 原始空间与扩展空间之间的映射规则:将 UI(或 BIZ 或 mobileUI)下的第一级目录后添加“_X”, 即为相应目录的扩展空间。例如: “/UI/SA”对应的扩展空间是“/UI/SA_X”; “/UI/SA/task”对应的扩展空间是“/UI/SA_X/task”; “/UI/portal/x5”对应的扩展空间是“/UI/portal_X/x5”; 在扩展空间下,操作的基本单位是文件;扩展空间支持两种操作 :覆盖文件和添加文件。覆盖 文件是指针对原始空间中的某个文件,在扩展空间一个同名文件,从而达到文件覆盖的能力;添加 文件是指在扩展空间中添加原始空间不存在的文件。 7.1.3 实现原理 扩展空间的本质就是将扩展空间的内容覆盖原始空间的内容,在运行时,查找某个文件时,先 从扩展空间查找,如果扩展空间没有时,再从原始空间查找。 7.1.4 限制 扩展空间不支持 java 相关的文件:如 java,jar 等等。 X5 高级开发手册 2011 Justep Corp. 第 138 页 共 273 页 起 步 科 技 第三篇 报表模型 第1章 概述 在任何一款应用系统中,报表都是最重要的一部分。 X5report 报表工具是一个功能完善、性能强健、成熟的商业智能软件产品。使用者可以通过报 表设计器设计符合各种复杂需求的报表。并且包括支持多维饼图,折线图,柱图,仪表盘等二十几 种统计图样式。X5report 报表工具拥有强大的报表展现能力;灵活的部署机制;而且无须在浏览器 安装任何插件;特有的 PDF 打印控件实现了所见即所得的套打,分栏,分页等精确的报表打印。为 企业的统计分析、数据中心、商业智能前端展现提供高性能,高效率的报表系统解决方案。 X5report 采用 JAVA 开发,主要包含报表设计器与报表服务器两个部分。X5report 报表可以与起 步的 X5 平台一起使用,也可以单独进行部署使用。采用 Excel 作为报表设计器,非常简单,易于上 手。 为了方便用户正确的使用 X5report 报表工具,我们编写了该用户手册。帮助用户更好的使用该 工具进行报表设计与管理。 X5report 报表工具主要包含两个部分:报表设计器、报表服务器 报表设计器:设计编辑报表,采用类 EXCEL 方式,继承了 EXCEL 的所有属性, 自带报表运算引 擎,连接数据库后可预览打印报表,并可生成其它格式保存。 报表服务器:在后台提供统计报表运算的服务,开放各层次的 API 接口调用,由程序员调用生 成报表。 图 1.1 报表功能树图 X5 高级开发手册 2011 Justep Corp. 第 139 页 共 273 页 起 步 科 技 第2章 开发指南 2.1 扩展函数 2.1.1 扩展的概念 报表工具与电子表格工具的最基本差异就是支持数据扩展。电子表格工具只能在每个单元格中 填好需要的内容,并不能根据数据进行自动扩展。 以一个典型单行扩展的网格报表为例: 图 2.1 网格报表设计图 可以看到运行结果为: 图 2.2 网格报表运行结果图 我们可以看到,在 excel 设计的第五行(R5),数据集 p1 中的数据,通过 select()函数进行纵向 单行扩展,将一行扩展为四行。 但有时我们的一条数据可能并不全在一行显示,如下图显示,一条数据需要显示在多行上,这 种类型的报表我们称之为卡片报表。 X5 高级开发手册 2011 Justep Corp. 第 140 页 共 273 页 起 步 科 技 图 2.3 卡片报表运行结果图 如何才能简单灵活的指定报表的扩展方式?x5 报表工具通过 excel 中的合并行的概念解决了这 个问题。 图 2.4 卡片报表设计图 在卡片报表的设计时,将 4-8 行进行合并,这样报表工具会自动把 4-8 行当成一行进行处理,扩 展将以这 5 行为一个单位进行。 如果我们这里不进行合并行的处理,会出现什么情况? X5 高级开发手册 2011 Justep Corp. 第 141 页 共 273 页 起 步 科 技 图 2.5 卡片报表运行结果图 可以看到报表工具就会按照单行扩展的原理进行处理,这是错误的。 以上两个例子分别展现了单行与多行两种扩展方式,但它们表达的概念其实是一样的。即是报 表工具有别于表格工具的最基本区别——扩展。 当然除了常见的纵向扩展外,也可以进行横向扩展,控制它们的方式就是使用接下来介绍的扩 展函数。 2.1.2 select()、selecth()函数 函数说明 从数据集的当前行集中选取符合条件的记录。 select()表示纵向扩展,selecth()表示横向扩展。 语法: datasetName.select(select_exp,filter_exp,sort_exp) datasetName.selecth(select_exp,filter_exp,sort_exp) 参数说明 select_exp 选择的关系、字段、列名 filter_exp 数据过滤表达式,如果不需数据过滤,则此参数可省略,仅用’’占位。 sort_exp 数据排序表达式。格式如 field:RELATION;order:ascending;type:number。 field 表示排序关系,order 表示升(ascending)降(descending)序,type 表 示关系类型(text、number)。 返回值 一组数据集合,数据由 select_exp 的运算结果决定。 示例 ds1.select(ds1. RPRODUCTID) 从数据源 ds1 中选取 RPRODUCTID 字段列的所有值。 X5 高级开发手册 2011 Justep Corp. 第 142 页 共 273 页 起 步 科 技 ds2.select(ds2.RORDERID,'ds2.RORDERID=ds1.RORDERID') 从数据源ds2 中选取 RORDERID字段列的值,条件是ds2 的RORDERID值必须等于ds1 的RORDERID 的值。 ds1.select(ds1.RPRODUCTID,'','field:RUNITPRICE;order:ascending;type:number') 从数据源 ds1 中选取 RPRODUCTID 字段列的所有值,并将结果按照 RUNITPRICE 的值进行升序排 序。 2.1.3 group()、grouph()函数 函数说明 从数据集中选取符合条件的记录,并按照指定关系(列)进行分组。 语法 datasetName.group(select_exp,filter_exp,sort_exp,condition_exp,display_exp) datasetName.grouph(select_exp,filter_exp,sort_exp,condition_exp,display_exp) 参数说明 select_exp 选择的关系、字段、列名 filter_exp 数据过滤表达式,如果不需数据过滤,则此参数可省略,仅用’’占位。 sort_exp 数据排序表达式。格式如 field:RELATION;order:ascending;type:number。 Field 表示排序关系,order 表示升(ascending)降(descending)序,type 表示关系类型(text、number)。 condition_exp 条件序列,根据条件转换显示值,与显示序列配合使用, 且条件个数必须与显示序列相同。 display_exp 显示序列,根据条件转换显示值,与条件序列配合使 用,且个数必须与条件序列相同。 返回值 一组数据集合,数据由 select_exp 的运算结果决定。 示例 ds1.group(ds1.RCATEGORYNAME) 把数据源 ds1 中的所有数据按照 RCATEGORYNAME(产品类别)进行分组。 ds1.group(ds1. RCATEGORYNAME,' RUNITPRICE>10 and RUNITPRICE<20 ') 把数据源 ds1 中的所有 RUNITPRICE(单价)大于 10 并且小于 20 数据按照 RCATEGORYNAME(产 品类别)进行分组。 ds1.group(ds1. RCATEGORYNAME,'','field:RUNITPRICE;order:ascending;type:number') 把数据源 ds1 中的所有数据按照 RCATEGORYNAME(产品类别)进行分组,并将结果按照 注意:使用条件序列和显示序列时,select_exp 为虚拟列,并不是真实列。 X5 高级开发手册 2011 Justep Corp. 第 143 页 共 273 页 起 步 科 技 RUNITPRICE 的值进行升序排序。 ds1.group(ds1.RUNITPRICE_V ,'','','RUNITPRICE > 10, RUNITPRICE = 10, 10 > RUNITPRICE', '大于 10, 等于 10, 小于 10') 把数据源 ds1 的数据按照 RUNITPRICE > 10, RUNITPRICE = 10, 10 > RUNITPRICE 的条件进行筛选, 且将符合条件的数据分别显示为大于 10, 等于 10, 小于 10。 2.2 运算函数 2.2.1 sum()函数 函数说明 对扩展后的单元格数据进行求和。 语法 sum(cell) 参数说明 cell 指定单元格 返回值 实数类型的数据。 示例 sum(A1) 求出 A1 单元格扩展后所有数据的和。 2.2.2 avg()函数 函数说明 对扩展后的单元格数据求平均值。 语法 avg(cell) 参数说明 cell 指定单元格 返回值 实数类型的数据。 示例 avg(A1) 求 A1 单元格扩展后所有数据的平均值。 X5 高级开发手册 2011 Justep Corp. 第 144 页 共 273 页 起 步 科 技 2.2.3 max()函数 函数说明 找出扩展后单元格数据中的最大值。 语法 max(cell) 参数说明 cell 指定单元格 返回值 实数类型的数据。 示例 max(A1) 求出 A1 单元格扩展后所有数据的最大值。 2.2.4 min()函数 函数说明 找出扩展后单元格数据中的最小值。 语法 min(cell) 参数说明 cell 指定单元格 返回值 实数类型的数据。 示例 min(A1) 求出 A1 单元格扩展后所有数据的最小值。 2.2.5 count()函数 函数说明 对扩展后的单元格数据量进行计算。 语法 count(cell) 参数说明 X5 高级开发手册 2011 Justep Corp. 第 145 页 共 273 页 起 步 科 技 cell 指定单元格 返回值 实数类型的数据。 示例 count(A1) 求出 A1 单元格扩展后所有数据总量。 2.2.6 运算区域的设置 以上介绍的五个运算函数都是作用在一个数据集合上的,这样就产生了运算区域的概念。根据 不同的需求,运算区域不尽相同。接下来我们介绍如何才能灵活的指定运算函数的运算区域。 下面这个例子: 在分组报表设计中,需要计算两种合计。一个是第六行(R6)的供应商库存合计,一个是第七行(R7) 的库存总合计。SUM 中的 cell 参数指定的都是 G5 单元格,但最后运算结果并不相同,原因就是它 们的运算区域不同。 图 2.6 分组报表运行结果图 图 2.7 分组报表设计图 报表工具会根据运算函数所在的行自动匹配一个运算区域,我们可以通过报表设计时的缓存文 件看到。 在缓存文件中,可以看到结构化的报表定义,摘录有关运算合计的单元格如下: 提示:报表设计时的缓存文件在页面文件所在目录同级的.cache 目录下(注意:该目录默认情况下不显示),文 件名为页面文件名.report。 X5 高级开发手册 2011 Justep Corp. 第 146 页 共 273 页 起 步 科 技 id=”R6C7”代表报表设计时中第六行第七个单元格,正是计算供应商合计的单元格。相应的, id="R7C7"代表计算总合计的单元格。可以发现,两个单元格中只有 v-group 属性是不同的,同时还 有一个类似的 h-group 属性,这两个属性即指定了运算函数 SUM 的运算区域。 R6C7 单元格的 v-group 属性为$PR5C2,这是由报表工具自动计算得出的,代表在纵向上以第五 行第二列单元格扩展后的区域进行计算,其中 P 代表一个决定如何扩展的单元格通常其中含有扩展 函数(我们称之为 repeat), R 代表行,C 代表列。 那么如何设置运算函数的区间呢?可以通过设置 v-group 和 h-group 属性(批注)来实现。 我们通过一个主从报表来说明设置运算区域的作用,如下图: 图 2.8 主从报表运行结果图 图 2.9 主从报表设计图 上图所示序号是分别按照每个子表数据条数进行计算的,如果我们需要按照全部数据计算的话, 可以在设计报表时为计算单元格添加 v-group 属性(批注),设置属性值为$ALL。 X5 高级开发手册 2011 Justep Corp. 第 147 页 共 273 页 起 步 科 技 图 2.10 主从报表运行结果图 2.2.7 表达式 x5 报表工具提供了加减乘除四种表达式。 加法符号——“+” 减法符号——“-” 乘法符号——“*” 除法呼号——“div” 我们先来看一个乘法的例子: 图 2.11 网格报表设计图 如图,在 G5 单元格将单价与库存数量做乘法计算每个产品的库存成本。 运行结果如下: 图 2.12 网格报表运行结果图 可以看到扩展后,报表工具将每行的单价都乘以库存数量得到成本值。 X5 高级开发手册 2011 Justep Corp. 第 148 页 共 273 页 起 步 科 技 再通过一个占比的例子来说明表达式的用法: 图 2.13 占比运算报表设计图 如图,在 D4 和 G4 单元格,我们将产品数量与总数量进行了除法,得到的就是每个产品数据占 总数量的比重。 图 2.14 占比运算报表运行结果图 通过上面两个例子可以发现,在写表达式时,不仅可以通过数据关系(列名)进行计算,也可 以通过指定单元格来完成。 2.3 属性(批注) x5 报表工具中属性的设置是通过 excel 的批注方式来实现的。 我们将属性划分为四大类:全局属性、行属性、列属性、单元格属性。 详细的属性列表可参考 6.1 节。 2.3.1 全局属性 作用在整个报表上的属性称之为全局属性。全局属性需要在报表设计时的第一行第一列单元格 设置。 我们以 auto-height(自动列高)属性为例,如果报表单元格中的内容过多时,可能会造成下图 这种情况: X5 高级开发手册 2011 Justep Corp. 第 149 页 共 273 页 起 步 科 技 图 2.15 卡片报表运行结果图 遇到这种情况我们需要设置全局属性 auto-height:true,代表报表的行高度根据内容自适应。在 报表设计工具中设置 auto-height 属性后,属性值会生成在 excel 的第一行一列的单元格上。 图 2.16 全局属性示例图 再看一下这个页面的运行效果就可以发现,单元格的高度根据内容高度自动撑开了。 图 2.17 应用属性后运行结果图 2.3.2 行属性 作用在报表一行上的属性称之为行属性。行属性需要设置在作用行的第一列上。 当我们需要隐藏报表上的一行时,可以使用行属性 v-visible,如下图,当在第四行的第一列设置 了 v-visible:false 后,在运行时第四行整行都会被隐藏。 X5 高级开发手册 2011 Justep Corp. 第 150 页 共 273 页 起 步 科 技 图 2.18 行属性示例图 2.3.3 列属性 作用在报表每列上的属性称之为列属性。列属性需要设置在作用列的第一行上。 当我们需要隐藏报表上的一列时,可以使用列属性 h-visible,如下图,当在 F 行的第一列设置了 h-visible:false 后,在运行时 F 列整列都会被隐藏。 X5 高级开发手册 2011 Justep Corp. 第 151 页 共 273 页 起 步 科 技 图 2.19 列属性示例图 2.3.4 格属性 只作用在报表单元格上的属性称之为格属性。 在 2.2.6 节我们使用的 v-group 就是一个格属性,这里不在赘述格属性的设置方法。 2.4 显示 2.4.1 显示格式、边框、对齐、字体 x5 报表工具对于报表显示格式的设置,都是基于 excel 上的单元格格式而来。也就是说,在 excel 中定义的格式,最终会作为报表运行时的格式显示。 X5 高级开发手册 2011 Justep Corp. 第 152 页 共 273 页 起 步 科 技 图 2.20 excel 单元格设置图 除了单元格格式外,报表工具也读取了 excel 的页面设置作为报表的默认打印设置。 图 2.21 excel 页面设置图 2.4.2 显示扩展 如图所示的交叉报表,是一个具有横向扩展的报表,如果我们按照这样进行报表设计的话: 图 2.22 交叉报表设计图 运行结果就会这样,标题会按照数据进行横向扩展,这不是我们需要的。 X5 高级开发手册 2011 Justep Corp. 第 153 页 共 273 页 起 步 科 技 图 2.23 交叉报表运行结果图 因此我们就需要使用到显示扩展功能,如下图所示。colspan 是列合并属性,$ALL.PR4C3 表示按 照第四行第三列定义的扩展函数的所有数据进行扩展,并在最后扩展结果上加上 1 列(指 B 列)。 图 2.24 显示扩展设计图 通过在 B2 列添加 colspan 属性,使得标题可以按照函数扩展的列进行自适应居中,运行效果如 下: X5 高级开发手册 2011 Justep Corp. 第 154 页 共 273 页 起 步 科 技 图 2.25 显示扩展运行结果图 2.5 组件 UI 层与报表相关的组件包括:数据组件(reportData)、报表组件(report)、图表组件(chart)、 报表工具栏组件(printBar 和 exportBar)。 2.5.1 数据组件 数据组件(reportData),为报表组件和图表组件提供数据支持。每一个报表或图表组件都可以 对应一个或多个数据组件。 数据组件含有三个属性: 图 2.26 reportData 属性示例图 id:组件的唯一标识,报表或图表中引用数据时都以该标识为准。 source:数据来源,定义为 action 和 ksqlAction。 X5 高级开发手册 2011 Justep Corp. 第 155 页 共 273 页 起 步 科 技 2.5.2 报表组件 报表组件(report),报表样式的展现组件。含有下列属性: 图 2.27 report 组件属性示例图 id:组件唯一标识。 report-name:报表名称,导出文件采用该名称保存。 src:报表定义 excel 的路径。 data-list:报表引用数据集,对应数据组件(reportData)的 id(非必填项)。 auto-load:报表是否在页面打开时自动加载。 Excel 报表设计: 如果指定了 src 中的 excel 设计文件,则可以通过鼠标右键点击 report 组件选择 “切换到报表 设计”进入 excel 报表设计界面。 图 2.28 report 切换到报表设计示例图 excel 报表设计模式中的属性列表: 全局属性:作用到报表整体的参数,以批注方式定义到 excel 第一行第一列单元格内。 行属性:作用到报表单独一行,以批注方式定义到指定行第一列单元格内。 列属性:作用到报表单独一列,以批注方式定义到指定列第一行单元格内。 格属性:以批注方式定义到指定单元格中。 (具体属性作用请参考第 6 章附录) X5 高级开发手册 2011 Justep Corp. 第 156 页 共 273 页 起 步 科 技 图 2.29 报表属性设计示例图 2.5.3 图表组件 图表组件(chart),图表样式的展现组件。 图 2.30 chart 组件属性示例图 id:组件唯一标识。 chart-name:图表名称,导出文件采用该名称保存。 data-list:图表引用数据集,对应数据组件(reportData)的 id。 auto-load:图表是否在页面打开时自动加载。 chart 组件为图表容器,需要通过鼠标右键点击 chart 组件后选择“添加子图表”,实现具体图表 设计。 X5 高级开发手册 2011 Justep Corp. 第 157 页 共 273 页 起 步 科 技 图 2.31 chart 组件结构图 子图表设计: data 属性:图表数据来源。 图 2.32 data 属性编辑器 config 属性:图表样式配置。 图表样式参数分两种,公共参数与私有参数。公共参数指所有图表类型中共有的样式,如标题。 私有参数值每个图表各自的样式。详情参考 6.3、6.4 节。 提示:数据源指与图表关联的数据组件标识(id),根据图表类型不同数据轴也不相同,以饼图为例,分类轴指每 个扇区的描述,数据轴决定每个扇区的大小。 t。 X5 高级开发手册 2011 Justep Corp. 第 158 页 共 273 页 起 步 科 技 图 2.33 config 属性编辑器 2.5.4 报表工具栏组件 报表工具栏组件提供报表图表的打印、预览、导出功能,包含两个组件:printBar、exportBar。 图 2.34 printBar、exportBar 组件属性示例图 id:组件唯一标识。 report:关联的报表或图表组件标识(id)。 printBar 和 exportBar 可以在结构树中,通过右键 设置项,对工具栏中的按钮进行显示调整。 X5 高级开发手册 2011 Justep Corp. 第 159 页 共 273 页 起 步 科 技 图 2.35 printBar 组件设置项示例图 2.6 服务器配置 2.6.1 服务器映射 从第 1 章中的介绍中,可以知道报表工具包含报表设计工具(UI)与报表服务器(ReportServer) 两部分,同时报表服务器(ReportServer)还需要从业务服务器(BusinessServer)获取数据,这样就 形成了如下链接关系。 图 2.36 示例图 2.6.2 服务器日志 报表服务器日志配置文件为:runtime\ReportServer\WEB-INF\justep.log.properties 如果需要更改报表服务器运行日志,可以将以下参数: log4j.rootLogger=ERROR,CONSOLE,X5,HTML_FILE 修改为 log4j.rootLogger=DEBUG,CONSOLE,X5,HTML_FILE 注意:详细配置方式请参见 x5 配置部署手册。 UIServer ReportServer BusinessServer X5 高级开发手册 2011 Justep Corp. 第 160 页 共 273 页 起 步 科 技 第3章 报表示例 3.1 网格报表 网格报表是我们最常见的报表之一,一般情况下,网格报表会根据数据集纵向扩展,我们将这 样的网格报表称之为普通的网格报表;在实际的业务需求中,横向扩展的网格报表也会经常被应用 到,下面我们对这两类网格报表做一下介绍。 3.1.1 普通网格报表 设计时: 图 3.1 网格报表设计图 合并单元格 B2、C2、D2、E2、F2、G2、H2,输入标题名称,并居中显示 选择 B4----H5 为报表区域,设置报表边框 在 B4、C4、D4、E4、F4、G4、H4 中输入业务字段的名称,并将背景色设置为蓝色 在 B5 中,输入表达式 p1.select(p1.RPRODUCTID),表示引用产品 ID(RPRODUCTID)的全部 数据。 在 C5 中,输入表达式 p1.RCATEGORYNAME,其他单元格输入的表达式与 C5 类似。 运行时: X5 高级开发手册 2011 Justep Corp. 第 161 页 共 273 页 起 步 科 技 图 3.2 网格报表运行结果图 3.1.2 横向扩展网格报表 图 3.3 横向扩展网格报表设计图 图 3.4 横向扩展网格报表标题扩展属性设置图 X5 高级开发手册 2011 Justep Corp. 第 162 页 共 273 页 起 步 科 技 B2 输入标题名,为了使标题居中,添加批注 clospan:$ALL.PR4C3+3,意思为根据第四 行第三列的表达式 selecth 进行全列扩展, B4-B10 添加表头。 C4-C10 添加业务字段。 C4 输入表达式 p1.selecth(p1.RPRODUCTNAME),表示引用 RPRODUCTNAME 的全部数据 进行横向扩展。 运行时: 图 3.5 横向扩展网格报表运行结果图 3.2 分组报表 3.2.1 一级分组报表 设计时: 图 3.6 一级分组报表设计图 在 B4、C4、D4、E4、F4、G4 中输入需要显示的业务字段名称 在 B5 中输入 p1.group(p1. RCATEGORYNAME),表示数据根据产品类别(RCATEGORYNAME) 进行分组显示。 在 C5 中输入 p1.select(p1. RPRODUCTNAME),意思是引用产品名称(RPRODUCTNAME)的全 部数据。 在 D5 中输入 p1. RCOMPANYNAME, E5-G5 输入与 D5 类似。 运行时: X5 高级开发手册 2011 Justep Corp. 第 163 页 共 273 页 起 步 科 技 图 3.7 一级分组报表运行结果图 3.2.2 二级分组报表 设计时: 图 3.8 二级分组报表设计图 在 B4、C4、D4、E4、F4、G4 中输入需要显示的业务字段名称 在 B5 中输入 p1.group(p1.RCOMPANYNAME),意思是对字段 RCOMPANYNAME 的数据进行分 组。 在 C5 中输入 p1.group(p1.RCATEGORYNAME),意思是对字段 RCATEGORYNAME 的数据进行分 组。 在 D5 中输入 p1.select(p1.RPRODUCTNAME),意思是引用 RPRODUCTNAME 的数据。 在 E5 中输入 p1. RCOMPANYNAME, E5-G5 输入与 D5 类似。 运行时: X5 高级开发手册 2011 Justep Corp. 第 164 页 共 273 页 起 步 科 技 图 3.9 二级分组报表运行结果图 3.2.3 二级分组报表(行统计) 设计时: 图 3.10 二级分组报表设计图 合并 B5、B6,输入表达式 p1.group(p1.RCOMPANYNAME),表示以供货商(RCOMPANYNAME) 的数据进行分组。 在 C5 中,输入表达式 p1.group(p1. RCATEGORYNAME),表示以产品类别(RCATEGORYNAME) 的数据进行分组。 在 D5 中,输入表达式 p1.select(p1. RPRODUCTNAME),表示引用产品名称(RPRODUCTNAME) 的全部数据。 在 E5-G5 中,分别输入表达式 p1.RQUANTITYPERUNIT(单位数量)、p1.RUNITPRICE(单价)、 p1.RUNITSINSTOCK(库存数量),表示这里引用的哪个关系的数据。 在 F6 中,输入表达式=SUM(F5),表示每个供货商(RCOMPANYNAME)中每个产品类别 (RCATEGORYNAME)的各产品(RPRODUCTNAME)的单价(RUNITPRICE)之和。 在 F7 中,输入表达式=SUM(F5),表示为每种供货商(RCOMPANYNAME)的单价(RUNITPRICE) 之和。 同理,在 G6、G7 中输入的表达式=SUM(G5),表示计算每个分组中库存数量(RUNITSINSTOCK) 的合计。 X5 高级开发手册 2011 Justep Corp. 第 165 页 共 273 页 起 步 科 技 运行时: 图 3.11 二级分组报表运行结果图 3.2.4 二级分组报表(行列统计) 设计时: 图 3.12 二级分组报表设计图 合并 B5、B6,输入表达式 p1.group(p1.RCATEGORYNAME),表示以产品类别(RCATEGORYNAME) 的进行分组。 在 C5 中,输入表达式 p1.group(p1.RPRODUCTNAME),表示以产品名称(RPRODUCTNAME) 的数据进行分组。 在 D5 中,输入表达式 p1.select(p1.RCOMPANYNAME),表示引用供货商(RCOMPANYNAME) 的全部数据。 在 E5-G5 中,分别输入表达式 p1.RQUANTITYPERUNIT(单位数量)、p1.RUNITPRICE(单价)、 p1.RUNITSINSTOCK(库存数量),表示引用的关系数据。 在 H5 中 , 输 入 表 达 式=F5*G6,表示该单元格的值为单价 x 数 量 (RUNITPRICE * RUNITSINSTOCK)。 在 F6 中,输入表达式=SUM(F5),表示每个产品类别(RCATEGORYNAME)中每个产品 (RPRODUCTNAME)的各供货商(RCOMPANYNAME)的单价(RUNITPRICE)之和。 在 F7 中,输入表达式=SUM(F6),表示为每种产品类别(RCATEGORYNAME)的单价 (RUNITPRICE)之和。 X5 高级开发手册 2011 Justep Corp. 第 166 页 共 273 页 起 步 科 技 同理,在 G6、G7 中输入的表达式=SUM(G5),表示计算每个分组中库存数量(RUNITSINSTOCK) 的合计。 在 H6、H7 中输入的表达式=SUM(H5),表示计算每个分组中单价 x 数量(RUNITPRICE * RUNITSINSTOCK)的合计。 运行时: 图 3.13 二级分组报表运行结果图 3.2.5 二级分组报表(分组统计) 设计时: 图 3.14 二级分组报表设计图 合并 B5 、 B6 、 B7 , 输 入 表 达 式 p1.group(p1.RCOMPANYNAME), 表 示 以 供 货 商 (RCOMPANYNAME)的数据进行分组。 合并 C5 、 C6 中 , 输 入 表 达 式 p1.group(p1. RCATEGORYNAME) , 表 示 以 产 品 类 别 (RCATEGORYNAME)的数据进行分组。 在 D5 中,输入表达式 p1.select(p1. RPRODUCTNAME),表示引用产品名称(RPRODUCTNAME) 的全部数据。 在 E5-G5 中,分别输入表达式 p1.RQUANTITYPERUNIT(单位数量)、p1.RUNITPRICE(单价)、 p1.RUNITSINSTOCK(库存数量),表示这里引用的哪个关系的数据。 在 F6 中,输入表达式=SUM(F5),表示每个供货商(RCOMPANYNAME)中每个产品类别 (RCATEGORYNAME)的各产品(RPRODUCTNAME)的单价(RUNITPRICE)之和。 在 F7 中,输入表达式=SUM(F5),表示为每种供货商(RCOMPANYNAME)的单价(RUNITPRICE) 之和。 在 F8 中,输入表达式=SUM(F5),表示为所有数据单价(RUNITPRICE)总合计。 X5 高级开发手册 2011 Justep Corp. 第 167 页 共 273 页 起 步 科 技 同理,在 G5、G6、G7 中输入的表达式=SUM(G5),表示计算每个分组中库存数量 (RUNITSINSTOCK)的合计。 在 H5、H6、H7 中输入的表达式=SUM(H5),表示计算每个分组中单价 x 数量(RUNITPRICE * RUNITSINSTOCK)的合计。 运行时: 图 3.15 二级分组报表运行结果图 3.3 交叉报表 3.3.1 二维交叉报表 图 3.16 二维交叉报表设计图 在 B5 中,输入 p1.group(p1.RPRODUCTNAME),表示纵向以产品(RPRODUCTNAME)进行分组。 在 C4 中,输入 p1.grouph(p1.RCOMPANYNAME),表示横向以供应商(RCOMPANYNAME)进行分 组。 在 C5 中,输入=SUM(p1.RUNITPRICE*p1.RUNITSINSTOCK),表示该单元格的值为对应的单价 x 库 存数量(RUNITPRICE * RUNITSINSTOCK)。 在 B2 中,输入标题,添加批注 colspan:$ALL.PR4C3+1,表示标题根据第四行第三列的数据进行 X5 高级开发手册 2011 Justep Corp. 第 168 页 共 273 页 起 步 科 技 扩展,并在最终结果上加一列(因为计算居中时要包含 B 列)。 在 B4 中,添加批注 display-type:slant-line,表示该单元格显示斜线。 在 C5 中,添加批注 default-value:0,表示单元格默认值为 0。 运行时: 图 3.17 二维交叉报表运行结果图 3.3.2 多维交叉报表 设计时: 图 3.18 多维交叉报表设计图 在 B6 中,输入 p1.group(p1.RCATEGORYNAME),表示以产品类别(RCATEGORYNAME)进行分组。 在 C6 中,输入 p1.group(p1.RPRODUCTNAME),表示纵向以产品(RPRODUCTNAME)进行分组。 在 D4 中,输入 p1.grouph(p1. RREGION),表示以区域(RREGION)进行分组。 在 D5 中,输入 p1.grouph(p1. RCOMPANYNAME),表示横向以供应商(RCOMPANYNAME)进行 分组。 在 D6 中,输入=SUM(p1.RUNITPRICE*p1.RUNITSINSTOCK),表示该单元格的值为对应的单价 x 库 存数量(RUNITPRICE * RUNITSINSTOCK)。 在 B2 中,输入标题,添加批注 colspan:$ALL.PR4C4+2,表示标题根据第四行第三列的数据进行 扩展,并在最终结果上加两列(因为计算居中时要包含 B 和 C 列)。 X5 高级开发手册 2011 Justep Corp. 第 169 页 共 273 页 起 步 科 技 合并 B4、B5、C4、C5 中,添加批注 display-type:slant-line,表示该单元格显示斜线。 在 D6 中,添加批注 default-value:0,表示单元格默认值为 0。 运行时: 图 3.19 多维交叉报表运行结果图 3.3.3 二维交叉报表(行列统计) 设计时: 图 3.20 二维交叉报表设计图 在 B5 中,输入 p1.group(p1.RPRODUCTNAME),表示纵向以产品(RPRODUCTNAME)进行分组。 在 C4 中,输入 p1.grouph(p1.RCOMPANYNAME),表示横向以供应商(RCOMPANYNAME)进行分 组。 在 C5 中,输入=SUM(p1.RUNITPRICE*p1.RUNITSINSTOCK),表示该单元格的值为对应的单价 x 库 存数量(RUNITPRICE * RUNITSINSTOCK)。 在 C6 中,输入=SUM(C5),表示计算每个供应商(RCOMPANYNAME)所有产品(RPRODUCTNAME) 的采购成本(RUNITPRICE * RUNITSINSTOCK)合计。 在 D5 中,输入=SUM(C5),表示计算所有供应商(RCOMPANYNAME)的每个产品(RPRODUCTNAME) 的采购成本(RUNITPRICE * RUNITSINSTOCK)合计。 在 D6 中,输入=SUM(D5),表示计算全部供应商产品的总成本。 X5 高级开发手册 2011 Justep Corp. 第 170 页 共 273 页 起 步 科 技 在 B2 中,输入标题,添加批注 colspan:$ALL.PR4C3+1,表示标题根据第四行第三列的数据进行 扩展,并在最终结果上加一列(因为计算居中时要包含 B)。 在 B4 中,添加批注 display-type:slant-line,表示该单元格显示斜线。 在 C5 中,添加批注 default-value:0,表示单元格默认值为 0。 运行时: 图 3.21 二维交叉报表运行结果图 3.3.4 多维交叉报表(行统计) 设计时: 图 3.22 多维交叉报表设计图 合并 B6、B7、B8,输入 p1.group(p1.RCATEGORYNAME),表示以产品类别(RCATEGORYNAME)进 行分组。 合并 C6、C7,输入 p1.group(p1.RPRODUCTNAME),表示纵向以产品(RPRODUCTNAME)进行分组。 在 D4 中,输入 p1.grouph(p1. RREGION),表示以区域(RREGION)进行分组。 在 D5 中,输入 p1.grouph(p1. RCOMPANYNAME),表示横向以供应商(RCOMPANYNAME)进行 分组。 在 D6 中,输入=SUM(p1.RUNITPRICE*p1.RUNITSINSTOCK),表示该单元格的值为对应的单价 x 库 存数量(RUNITPRICE * RUNITSINSTOCK)。 在 E6 中,输入=SUM(D6),表示所有供应商中,每个产品的采购成本合计。 X5 高级开发手册 2011 Justep Corp. 第 171 页 共 273 页 起 步 科 技 在 D7-D9 中,分别输入=SUM(D6),表示按照单元格所在行、列对应的分组数据,分别计算各分 组的采购成本。 在 E7-E9 中,分别输入=SUM(E6),表示按照单元格所在行对应的分组数据,分别计算各分组的 采购成本。 在 B2 中,输入标题,添加批注 colspan:$ALL.PR4C4+2,表示标题根据第四行第三列的数据进行 扩展,并在最终结果上加两列(因为计算居中时要包含 B 和 C 列)。 合并 B4、B5、C4、C5 中,添加批注 display-type:slant-line,表示该单元格显示斜线。 在 D6 中,添加批注 default-value:0,表示单元格默认值为 0。 运行时: 图 3.23 多维交叉报表运行结果图 3.3.5 多维交叉报表(行列统计) 设计时: X5 高级开发手册 2011 Justep Corp. 第 172 页 共 273 页 起 步 科 技 图 3.24 多维交叉报表设计图 合并 B6、B7,输入 p1.group(p1.RCATEGORYNAME),表示以产品类别(RCATEGORYNAME)进行 分组。 在 C6 中,输入 p1.group(p1.RPRODUCTNAME),表示纵向以产品(RPRODUCTNAME)进行分组。 合并 D4、E4,输入 p1.grouph(p1. RREGION),表示以区域(RREGION)进行分组。 在 D5 中,输入 p1.grouph(p1. RCOMPANYNAME),表示横向以供应商(RCOMPANYNAME)进行 分组。 在 D6 中,输入=SUM(p1.RUNITPRICE*p1.RUNITSINSTOCK),表示该单元格的值为对应的单价 x 库 存数量(RUNITPRICE * RUNITSINSTOCK)。 在 E6 中,输入=SUM(D6),表示所有供应商中,每个产品的采购成本合计。 在 D7-D8 中,分别输入=SUM(D6),表示按照单元格所在行、列对应的分组数据,分别计算各分 组的采购成本。 在 E7-E8 中,分别输入=SUM(E6),表示按照单元格所在行对应的分组数据,分别计算各分组的 采购成本。 在 F6-F7 中,分别输入=SUM(E6)、=SUM(E7)、=SUM(E8),表示分别计算各分组数据上列的合计。 在 B2 中,输入标题,添加批注 colspan:$ALL.PR4C4+2,表示标题根据第四行第三列的数据进行 扩展,并在最终结果上加两列(因为计算居中时要包含 B 和 C 列)。 合并 B4、B5、C4、C5 中,添加批注 display-type:slant-line,表示该单元格显示斜线。 在 D6 中,添加批注 default-value:0,表示单元格默认值为 0。 运行时: X5 高级开发手册 2011 Justep Corp. 第 173 页 共 273 页 起 步 科 技 图 3.25 多维交叉报表运行结果图 3.4 卡片报表 卡片式报表在其他报表工具中,有称其为“自由报表”,它是将数据库表中的每一条数据都以 一个卡片的形式展现,在这一节,我们讲解一下卡片报表在 X5report 中的设计。 设计时: 图 3.26 卡片报表设计图 合并单元格 A4、A5、A6、A7、A8 ,对于卡片报表,合并第一列的单元格目的是将该部分 作为一个整体进行显示。该方法也适用于“主从报表”的制作。 合并单元格 B2、C2、D2、E2、F2、G2,输入标题名称,并居中显示 在 C4 中输入 e1.select(e1. REMPLOYEEID), 在 E4 中输入 e1.EMPLOYEENAME, C5、C6、C7、C8、E5、E6 输入方式与 E4 类似。 运行时: X5 高级开发手册 2011 Justep Corp. 第 174 页 共 273 页 起 步 科 技 图 3.27 卡片报表运行结果图 3.5 主从报表 3.5.1 普通主从报表 设计时: 图 3.28 主从报表设计图 合并 B1-G1,输入标题,并居中显示。 在 B3-G6 区域中,输入主表字段标题与引用业务字段。 在 B7-G8 区域中,输入从表字段标题与引用业务字段。 在 C3 中,输入 p1.select(p1.RORDERID),表示主表引用 p1 数据集的数据。 在 C3 中,添加批注 is-master-dataset:true,表示 p1 数据集为主表。 在 C3 中,添加批注 individual-table:true,表示该区域独立成一张表。 在 C8 中,输入 e1.select(e1.RORDERID,'RORDERID=p1.RORDERID'),表示从表引用 e1 数据集的数 据,并使用订单 ID(RORDERID)作为外键关联主表。 在 C8 中,添加批注 master-dataset:p1,表示 e1 数据集的主表是 p1。 在 C8 中,添加批注 page-record:1,表示打印时,每页显示一张主从报表。 在 B8 中,输入=COUNT(C8),并添加批注 v-acc:true、v-group:$PR3C3,表示该列单元格按照 e1 数据集的数据进行序号递增。 合并 A3-A9,表示 A3-A9 所在的行作为一个整体显示。 运行时: X5 高级开发手册 2011 Justep Corp. 第 175 页 共 273 页 起 步 科 技 图 3.29 主从报表运行结果图 3.5.2 分组主从报表 设计时: 图 3.30 分组主从报表设计图 合并 B1-G1,输入标题,并居中显示。 在 B3-G6 区域中,输入主表字段标题与引用业务字段。 在 B7-G8 区域中,输入从表字段标题与引用业务字段。 在 C3 中,输入 p1.select(p1.RORDERID),表示主表引用 p1 数据集的数据。 在 C3 中,添加批注 is-master-dataset:true,表示 p1 数据集为主表。 在 C3 中,添加批注 individual-table:true,表示该区域独立成一张表。 在 B8 中,输入 e1.group(e1.RORDERID,'','RORDERID=p1.RORDERID'),表示引用 e1 数据集的数据 并根据订单 ID(RORDERID)进行分组。使用自身的订单 ID(RORDERID)作为外键关联主表。 在 B8 中,添加批注 master-dataset:p1,表示 e1 数据集的主表是 p1。 X5 高级开发手册 2011 Justep Corp. 第 176 页 共 273 页 起 步 科 技 在 B8 中,添加批注 page-record:1,表示打印时,每页显示一张主从报表。 在 C8 中,输入 e1.select(e1.RPRODUCTNAME),表示引用 e1 数据集的全部数据。 合并 A3-A9,表示 A3-A9 所在的行作为一个整体显示。 运行时: 图 3.31 分组主从报表运行结果图 3.6 多源关联分片报表 3.6.1 多源交叉报表 设计时: 图 3.32 多源交叉报表设计图 在 B2 中,输入标题,添加批注 colspan:$ALL.PR4C3+1,表示标题会以第四行第三列的数据进行 X5 高级开发手册 2011 Justep Corp. 第 177 页 共 273 页 起 步 科 技 扩展,并最终结果+1 列(因为计算居中时要包含 B 列)。 在 B5 中,输入 s1.group(s1.RPRODUCTNAME),表示纵向使用 s1 数据集进行扩展,并对产品名称 (RPRODUCTNAME)进行分组。 在 C4 中,输入 s2.grouph(s2.RCOMPANYNAME),表示横向根据 s2 数据集进行扩展,并对供货商 (RCOMPANYNAME)进行分组。 在 C5 中,输入=SUM(s1.RUNITPRICE*s1.RUNITSINSTOCK),表示该单元格的值为单价乘以库存数 量(RUNITPRICE* RUNITSINSTOCK)。 在 C5 中,添加批注 conditionv:s2.RSUPPLIERID=s1.RSUPPLIERID,表示以供应商 ID(RSUPPLIERID) 作为 s1 和 s2 数据集的关联关系。 运行时: 图 3.33 多源交叉报表运行结果图 3.6.2 多源纵向分片报表 设计时: 图 3.34 多源纵向分片报表设计图 在 B6 中,输入 p1.group(p1.RCATEGORYNAME),表示以产品类别(RCATEGORYNAME)进行分组。 X5 高级开发手册 2011 Justep Corp. 第 178 页 共 273 页 起 步 科 技 在 C6 中,输入 p1.group(p1.RPRODUCTNAME),表示纵向以产品(RPRODUCTNAME)进行分组。 在 D4 中,输入 p1.grouph(p1. RREGION),表示以区域(RREGION)进行分组。 在 D5 中,输入 p1.grouph(p1. RCOMPANYNAME),表示横向以供应商(RCOMPANYNAME)进行 分组。 在 D6 中,输入=SUM(p1.RUNITPRICE*p1.RUNITSINSTOCK),表示该单元格的值为对应的单价 x 库 存数量(RUNITPRICE * RUNITSINSTOCK)。 在 B2 中,输入标题,添加批注 colspan:$ALL.PR4C4+2,表示标题根据第四行第四列的数据进行 扩展,并在最终结果上加两列(因为计算居中时要包含 B、C 列)。 在 B4 中,添加批注 display-type:slant-line,表示该单元格显示斜线。 类似的,在 B7-D7 的区域,输入对应的 s2 数据集的表达式。 在 D7 中,添加批注 main-dataset:s1,conditionv:s2.RSUPPLIERID=s1.RSUPPLIERID,表示 s2 以 s1 数据集为主表,通过供应商 ID(RSUPPLIERID)相关联。 运行时: 图 3.35 多源纵向分片报表运行结果图 3.6.3 多源横向分片报表 设计时: 图 3.36 多源横向分片报表设计图 X5 高级开发手册 2011 Justep Corp. 第 179 页 共 273 页 起 步 科 技 在 B6 中,输入 p1.group(p1.RCATEGORYNAME),表示以产品类别(RCATEGORYNAME)进行分组。 在 C6 中,输入 p1.group(p1.RPRODUCTNAME),表示以产品名称(RPRODUCTNAME)进行分组。 在 D4 中,输入 p1.grouph(p1. RREGION),表示以区域(RREGION)进行分组。 在 D5 中,输入 p1.grouph(p1. RCOMPANYNAME),表示横向以供应商(RCOMPANYNAME)进行 分组。 在 D6 中,输入=SUM(p1.RUNITPRICE*p1.RUNITSINSTOCK),表示该单元格的值为对应的单价 x 库 存数量(RUNITPRICE * RUNITSINSTOCK)。 在 B2 中,输入标题,添加批注 colspan:$ALL.PR4C4+2,表示标题根据第四行第四列的数据进行 扩展,并在最终结果上加两列(因为计算居中时要包含 B、C 列)。 合并 B4、B6、C4、C5,添加批注 display-type:slant-line,表示该单元格显示斜线。 类似的,在 E4-E6 的区域,输入对应的 s2 数据集的表达式。 在 E6 中,添加批注 conditionh:s2.RPRODUCTID=s1.RPRODUCTID,表示 s2 和 s1 数据集通过供应 商 ID(RSUPPLIERID)相关联。 运行时: 图 3.37 多源横向分片报表运行结果图 3.6.4 多源双向分片报表 设计时: 图 3.38 多源双向分片报表设计图 X5 高级开发手册 2011 Justep Corp. 第 180 页 共 273 页 起 步 科 技 在 B6 中,输入 s1.group(s1. RORDERDATE_YEAR),表示以销售日期的年份(RORDERDATE_YEAR 为别名)进行分组。 在 C6 中 , 输 入 s1.group(s1. RORDERDATE_MOUNTH) ,表示以销售日期的月份 (RORDERDATE_MOUNTH)进行分组。 在 D4 中,输入 s1.grouph(s1. RREGION),表示以区域(RREGION)进行分组。 在 D5 中,输入 s1.grouph(s1. RCITY),表示以市(RCITY)进行分组。 在 D6 中,输入=SUM(s1.RUNITPRICE*s1. RQUANTITY),表示该单元格的值为对应的单价 x 数量单 位(RUNITPRICE * RQUANTITY)。 在 B2 中,输入标题,添加批注 colspan:$ALL.PR4C4+2,表示标题根据第四行第四列的数据进行 扩展,并在最终结果上加两列(因为计算居中时要包含 B、C 列)。 合并 B4、B6、C4、C5,添加批注 display-type:slant-line,表示该单元格显示斜线。 在 B7 中,输入 s2.group(s2.RTITLE),表示以雇员职务(RTITLE)进行分组。 在 C7 中,输入 s2.group(s2.RFULLNAME),表示以雇员姓名(RFULLNAME)进行分组。 在 D7 中,添加批注 main-dataset:s1 和 conditionv:s2.REMPLOYEEID=s1.REMPLOYEEID,表示 s2 和 s1 数据集通过雇员 ID(REMPLOYEEID)相关联。 在 E4 中,输入产品类别。 在 E5 中,输入 s3.grouph(s3.RCATEGORYNAME),表示以产品类别(RCATEGORYNAME)进行分组。 在 E6 中,添加批注 main-dataset:s1 和 conditionh:s3.RPRODUCTID=s1.RPRODUCTID,表示 s3 和 s1 数据集通过产品 ID(RPRODUCTID)相关联。 在 E7 中 , 添 加 批 注 main-dataset:s1 和 conditionh:s3.RPRODUCTID=s1.RPRODUCTID 和 conditionv:s2.REMPLOYEEID=s1.REMPLOYEEID,表示该单元格计算的数据必须符合批注里给定的 两个关联条件。 运行时: 图 3.39 多源横向分片报表运行结果图 3.6.5 报表图表混合表 设计时: X5 高级开发手册 2011 Justep Corp. 第 181 页 共 273 页 起 步 科 技 图 3.40 报表图表混合报表设计图 在 C4 中,输入 p1.grouph(p1.RPRODUCTNAME),表示横向以产品(RPRODUCTNAME)进行分组。 在 B5 中,输入 p1.group(p1.RCOMPANYNAME),表示纵向以供应商(RCOMPANYNAME)进行分 组。 在 C5 中,输入=SUM(p1.RUNITPRICE*p1.RUNITSINSTOCK),表示该单元格的值为对应的单价 x 库 存数量(RUNITPRICE * RUNITSINSTOCK)。 在 B2 中,输入标题,添加批注 colspan:$ALL.PR4C3+1,表示标题根据第四行第三列的数据进行 扩展,并在最终结果上加一列(B 列)。 在 B8 中,添加批注 object:chartA,colspan:$ALL.PR4C3+1,表示单元格引用对象 chartA(图表组 件 id),并且根据第四行第三列的数据进行扩展,并在最终结果上加一列(B 列)。 运行时: 注意:混合报表中的图表组件,auto-load 属性要设置为 false,而且不需要再调用图表组件的 refresh()方法 X5 高级开发手册 2011 Justep Corp. 第 182 页 共 273 页 起 步 科 技 图 3.41 报表图表混合报表运行结果图 3.7 报表特性 3.7.1 递增序号 以普通网格报表为例。设计时: 图 3.42 递增序号报表设计图 添加新列(B 列)。 在 B4 中,输入文字“序号”。 在 B5 中,输入=COUNT(C5),并添加批注 v-acc:true、v-group:$ALL,表示根据 C5 单元格的全部 数据进行序号递增。 X5 高级开发手册 2011 Justep Corp. 第 183 页 共 273 页 起 步 科 技 图 3.43 递增序号属性设置图 运行时: 图 3.44 递增序号报表运行结果图 3.7.2 单元格扩展 对于列会自动扩展,即使用表达式 selecth、grouph 的报表。为了保证标题可以在列扩展之后仍 可以居中显示。我们使用批注 colspan 和 rowspan 进行设置。 设计时: 图 3.45 单元格扩展属性示例图 在 B2 中,插入批注 colspan:$ALL.PR4C3。 colspan:$ALL:固定值,列的扩展。 PR3C3+1:表示标题按照第三行,第三列进行显示。由于 B 列并没有在 C4 的计算之中,所以最 后要加上这一列。 X5 高级开发手册 2011 Justep Corp. 第 184 页 共 273 页 起 步 科 技 3.7.3 行列隐藏 在使用报表时,常常会遇到这样的情况:例如,用户希望某些数据不显示,或希望只显示某些 数据。根据该需求,我们提供了行、列、指定值或条件隐藏的方法来设计报表。 行隐藏: 图 3.46 行隐藏属性示例图 在 A4 中,添加 v-visible:false,表示第四行在报表中不显示。 注意:v-visible:false 为行属性,所以需要添加在行的第一个单元格。 图 3.47 行隐藏属性运行结果图 列隐藏: 图 3.48 列隐藏属性示例图 在 F1 中,添加 h-visible:false,表示第 F 列在报表中不显示。 注意:h-visible:false 为列属性,所以需要添加在列的第一个单元格。 X5 高级开发手册 2011 Justep Corp. 第 185 页 共 273 页 起 步 科 技 图 3.49 列隐藏属性运行结果图 条件隐藏: 图 3.50 条件隐藏属性示例图 在 A1 中,添加批注 v-visible:(RPRODUCTID = '1' or RPRODUCTID = '3') and RCATEGORYNAME ='调味 品',表示显示符合给定条件的数据。 注意:v-visible:false 为行属性,所以需要添加在行的第一个单元格。 图 3.51 条件隐藏属性运行结果图 X5 高级开发手册 2011 Justep Corp. 第 186 页 共 273 页 起 步 科 技 3.7.4 排序与条件过滤 语法: group/grouph(分组字段, 过滤条件, 排序方式) select/selecth(关键字段, 过滤条件, 排序方式) 排序方式:field:排序字段;order:{ ascending|descending };type:{ text|number } 说明: field:需要排序的字段 order:顺序,ascending 表示升序,descending 表示降序。默认为升序。 type:字段类型,text 为文本类型,number 为数字类型。 如:产品信息表需要按照产品单价排序,那么我们要在单元格内写: p1.select(p1.ProductName,'','field:UnitPrice;order:ascending;type:number') (第二个参数过滤条件为空,需要写一个’’来占位) 表 示 按 照 字 段 UnitPrice 升 序 排 序 , 字 段 类 型 为 number 型 。 也 可 以 写 成 p1.select(p1.ProductName,'','field:UnitPrice')。 过滤条件: 如:主从报表的从表定义,e1.group(e1.RORDERID,'','RORDERID=p1.RORDERID') 表示自身 RORDERID 关系要关联 p1 数据集的 RORDERID 关系。 3.7.5 报表链接 设计时: 图 3.52 报表链接属性设置图 在 C5 中,插入批注:html: 表示弹出标题为产品明细-{$RPRODUCTNAME}的对话框(model=’dialog’),并传入参数 Company-Name,product-name。 说明:model 为打开链接模式,包括 dialog(对话框),replace(替换自身),window(portal) X5 高级开发手册 2011 Justep Corp. 第 187 页 共 273 页 起 步 科 技 运行时: 图 3.53 报表链接属性运行结果图 3.7.6 图片链接 设计时: 图 3.54 图片属性设置图 在 G1 中,插入批注 image:/UI/demo/report/process/simple/images/logo.gif,表示该单元格链接 到位于/UI/demo/report/process/simple/images/logo.gif 的图片资源。 运行时: 图 3.55 图片属性运行结果图 X5 高级开发手册 2011 Justep Corp. 第 188 页 共 273 页 起 步 科 技 3.7.7 条形码 设计时: 图 3.56 条形码属性设置图 在 C3 中,插入批注 display-type:barcode、barcode-type:code93,表示该单元格的信息将转换成 条形码显示,转换码制为 code93。 其它相关批注: barcode-config:{height:’’,mw:’’,wf:’’,qz:’’,hrp:’’,hrfont:’’….} 运行时: 图 3.57 条形码属性运行结果图 3.8 报表运算 3.8.1 合计值 请参考网格报表、分组报表、交叉报表中都进行了计算合计的演示。 3.8.2 平均值 我们以二级分组报表(行统计为例) 设计时: 提示:barcode-config 参数为 json 格式,内容根据 barcode-type 的不同而变化,请参考 UI 下 barcode 组件 X5 高级开发手册 2011 Justep Corp. 第 189 页 共 273 页 起 步 科 技 图 3.58 平均值运算示例图 将 F6 单元格中的内容修改为=avg(F5),表示计算各个类别产品单价的平均值。 运行时: „„ 图 3.59 平均值运算运行结果图 3.8.3 占比 设计时: 图 3.60 占比运算示例图 X5 高级开发手册 2011 Justep Corp. 第 190 页 共 273 页 起 步 科 技 添加一列 H。 在 H5 中,输入=G5 div G7,表示该单元格的值为 G5 除以 G7 的值,即该产品的库存占总库存的 百分比。 在 H6 中,输入=G6 div G7,表示该单元格的值为 G6 除以 G7 的值,即该类产品的库存占总库存 的百分比。 运行时: 图 3.61 占比运算运行结果图 第4章 图表示例 4.1 饼图 饼图显示一个数据集中各项的大小与各项总和的比例。饼图中的扇区显示为整个饼图的百分比。 设计饼图时要注意: 饼图只支持一个数据集。 要绘制的数据不能有负值,而且最好不要有零值。 分组类别不要过多。 饼图包括普通饼图和 3D 饼图。 表 4.1 示例数据集: 序号 产品类别(RCATEGORYNAME) 库存成本(RSUMPRICE) 1 饮料 12480.25 2 特制品 3549.35 3 调味品 12023.55 4 点心 10392.2 5 谷类/麦片 5594.5 6 肉/家禽 5729.45 7 海鲜 13010.35 8 日用品 11271.2 X5 高级开发手册 2011 Justep Corp. 第 191 页 共 273 页 起 步 科 技 图 4.1 data 属性设计图 运行结果: 图 4.2 饼图运行结果图 4.2 垂直柱图 柱图一般用于显示各项目间的比较情况。 设计柱图时要注意: 数据轴过长,会造成数据对比不清晰。 垂直柱图中还包含 3D 垂直柱图、堆叠式垂直柱图、3D 堆叠式垂直柱图、垂直圆柱图、3D 垂直 圆柱图。 X5 高级开发手册 2011 Justep Corp. 第 192 页 共 273 页 起 步 科 技 表 4.2 示例数据集: 序号 供应商(RCOMPANYNAME) 产品类别(RCATEGORYNAME) 成本(RCB) 1 佳佳乐 调味品 130 2 康富食品 调味品 2833.8 3 为全 海鲜 961 4 妙生 特制品 450 5 为全 肉/家禽 2813 6 佳佳乐 饮料 1025 7 妙生 调味品 3240 8 为全 特制品 40 按照如图所示设置垂直柱图 data 属性。 其中“自动根据数据进行分组显示”的概念可参考在 4.10.1 节的累积对比分析示例。 柱图与饼图 data 属性的区别是多了“分组条件”设置。“分组条件”表示在绘制柱图时,会以 RCOMPANYNAME 字段进行二次分组。 图 4.3 data 属性设计图 运行结果: 提示:勾选“自动根据数据进行分组显示”时,由于柱形数量与数据有关,所以无法调整柱形图颜色。因此,如 果需要修改柱形图颜色,请参考 4.10.1 节 data 属性的设置方法。 X5 高级开发手册 2011 Justep Corp. 第 193 页 共 273 页 起 步 科 技 图 4.4 垂直柱图运行结果图 4.3 水平柱图 参考 4.2 节,垂直柱图的介绍。 水平柱图中还包含 3D 水平柱图、堆叠式水平柱图、3D 堆叠式水平柱图、水平圆柱图、3D 水平 圆柱图。 表 4.3 示例数据集: 序号 供应商 产品类别 成本 1 佳佳乐 调味品 130 2 康富食品 调味品 2833.8 3 为全 海鲜 961 4 妙生 特制品 450 5 为全 肉/家禽 2813 6 佳佳乐 饮料 1025 7 妙生 调味品 3240 8 为全 特制品 40 运行结果: X5 高级开发手册 2011 Justep Corp. 第 194 页 共 273 页 起 步 科 技 图 4.5 水平柱图运行结果图 4.4 折线图 折线图设计与柱图类似,参考 4.2 节。 折线图包括垂直线图、3D 垂直线图、水平线图、3D 水平线图、垂直 xy 线图、水平 xy 线图。 表 4.4 示例数据集: 序号 年份 月份 销售额 1 1997 01 5434.7300689079 2 1998 01 6633.40961678816 3 1997 02 2723.5650543837 4 1998 02 5146.66255168285 5 1997 03 1432.6800288068 6 1998 03 4971.2950603527 7 1997 04 2666.4375722937 8 1998 04 10831.877579127 9 1997 05 3042.410068616 10 1998 05 1565.02953355545 11 1997 06 2725.19755250255 12 1996 07 2330.2050447756 13 1997 07 4444.07255009875 X5 高级开发手册 2011 Justep Corp. 第 195 页 共 273 页 起 步 科 技 图 4.6 data 属性设计图 运行结果: 图 4.7 折线图运行结果图 4.5 面积图 面积图强调部分与整体的关系,通过显示所绘制的值的总和,引起人们对总值趋势的注意。 面积图与柱图类似,都可以引用一个或多个数据集。 面积图包括垂直面积图和水平面积图。 表 4.5 示例数据集: 序号 供应商 产品类别 成本 1 佳佳乐 调味品 130 2 康富食品 调味品 2833.8 X5 高级开发手册 2011 Justep Corp. 第 196 页 共 273 页 起 步 科 技 3 为全 海鲜 961 4 妙生 特制品 450 5 为全 肉/家禽 2813 6 佳佳乐 饮料 1025 7 妙生 调味品 3240 8 为全 特制品 40 图 4.8 data 属性设计图 运行结果: 图 4.9 面积图运行结果图 4.6 时序图 时序图可用于统计、分析数据随时间变化的发展情况。 表 4.6 示例数据集: X5 高级开发手册 2011 Justep Corp. 第 197 页 共 273 页 起 步 科 技 序号 雇员名称 日期 销售额 1 范西平 2008-01-05 6823 2 范西平 2008-03-05 6598 3 范西平 2008-04-05 5983 4 范西平 2008-06-05 3246 示例中将日期作为分类轴,销售额作为数据轴。 图 4.10 data 属性设计图 运行结果: 图 4.11 时序图运行结果图 X5 高级开发手册 2011 Justep Corp. 第 198 页 共 273 页 起 步 科 技 4.7 仪表盘 仪表盘包括简单仪表盘、刻度盘、弧度仪表盘、温度计、混合刻度盘。 表 4.7 示例数据集: 序号 数据 1 15 运行结果: 图 4.12 仪表盘运行结果图 4.8 甘特图 甘特图是一种按照时间进度标出工作活动,常用于项目管理的图表。它通过活动列表和时间刻 度在图示中形象的表现出任何特定项目的活动顺序与持续时间。 甘特图的横轴表示时间,纵轴表示要安排的活动 表 4.8 示例数据集: 示例引用了一个数据集,关联了两组数据项,一组表示计划时间,另一组表示实际时间。 运行结果: 序号 项目 类型 开始时间 结束时间 计划开始 计划结束 1 主题选定 计划任务 2008/10/1 2008/11/2 2008/10/1 2008/11/15 2 现状把握 计划任务 2008/11/3 2008/11/30 2008/10/25 2008/12/1 3 目标设定 计划任务 2008/12/1 2009/1/15 2008/12/1 2009/1/20 4 对策实施 计划任务 2009/1/16 2009/3/1 2009/1/16 2009/3/5 5 效果确认 计划任务 2009/3/2 2009/4/5 2009/3/2 2009/4/10 6 标准化 计划任务 2009/5/15 2009/5/30 2009/5/15 2009/5/30 7 验收 计划任务 2009/4/6 2009/5/30 2009/4/6 2009/5/30 X5 高级开发手册 2011 Justep Corp. 第 199 页 共 273 页 起 步 科 技 图 4.13 甘特图运行结果图 4.9 雷达图 表 4.9 示例数据集: 序号 项目 分数 1 外观 5 2 性能 9 3 功能 6 4 易用性 3 5 灵活性 6 6 性价比 8 X5 高级开发手册 2011 Justep Corp. 第 200 页 共 273 页 起 步 科 技 图 4.14 data 属性设计图 运行结果: 图 4.15 雷达图运行结果图 4.10 图表特性 4.10.1 累计对比分析 图表中进行累积对比分析的方法是,在数据轴中使用求和函数对其中一个字段计算合计,再将 合计值和分组值分别作为图表中的两个数据集显示。 下图是一个在柱图中实现累积对比分析的 data 属性编辑界面: 图 4.16 data 属性设计图 表 4.10 示例数据集: 序号 产品类别(RCATEGORYNAME) 库存(ALL_CB) X5 高级开发手册 2011 Justep Corp. 第 201 页 共 273 页 起 步 科 技 1 饮料 12480.25 2 特制品 3549.35 3 调味品 12023.55 4 点心 10392.2 5 谷类/麦片 5594.5 6 肉/家禽 5729.45 7 海鲜 13010.35 8 日用品 11271.2 在设置柱图的 data 属性时,去掉属性编辑器左上角“自动根据数据进行分组显示”。代表数据 集根据分类轴字段进行分组,且每个分组只表现为一个柱形图展现。 从上面的例子可以看到,分组数据项有两个,都以 s1 作为数据集,分类轴都是 RCATEGORYNAME (分组字段),数据轴一个是 ALL_CB、一个是 SUM(ALL_CB),表示库存和库存总和。 运行结果: 图 4.17 图表累积分析运行结果图 4.10.2 图表链接 图表链接,是在图表不同区域建立链接的方式,用于需要根据图表区域中的数据关联出更详细 的内容的需求。 在图表的 data 属性中,我们可以定义需要的链接路径。如下图: X5 高级开发手册 2011 Justep Corp. 第 202 页 共 273 页 起 步 科 技 图 4.18 图表链接属性设计图 链接地址,形如: /demo/report/process/links/chartLinks.w?category='RCATEGORYNAME'&number=$RCAT EGORYNAME&process='/demo/report/process/links/linksProcess'&activity='chartLinksAc tivity' 表示链接到 chartLinks.w 页面,并传入参数 category、number,其中 number 为业务字段 RCATEGORYNAME 的值。 链接方式为 dialog,链接页面标题为明细+“引用业务字段 RCATEGORYNAME 的值”。 运行结果如下,点击饼图的红色区域(产品类别为饮料)时,以对话框的方式链接到页面,并 且显示出类别为饮料的所有产品数据。 图 4.19 dialog 模式运行结果图 图表链接还包含另外两种模式: replace 模式,链接页面会替换当前图表页面后打开。 X5 高级开发手册 2011 Justep Corp. 第 203 页 共 273 页 起 步 科 技 图 4.20 replace 模式运行结果图 Window 模式,链接页面会在一个新的功能页中打开。 图 4.21 window 模式运行结果图 X5 高级开发手册 2011 Justep Corp. 第 204 页 共 273 页 起 步 科 技 第5章 导出与打印 5.1 导出方式 报表支持三种导出方式:PDF、EXCEL、WORD。 使用方法: 在.w 页面上放一个 toolbars 组件 在 toolbars 组件里放一个 exportBar 组件 图 5.1 导出工具栏设计图 图 5.2 导出工具栏运行结果图 除了使用组件也可以使用 javascript 调用接口: API(js): 导出 pdf :justep.xbl(‘reportid’).exportPDF(); 导出 word :justep.xbl(‘reportid’).exportWord(); 导出 excel :justep.xbl(‘reportid’).exportExcel(); 5.2 打印设置 报表的打印与预览功能,需要使用到 adobe reader 的浏览器插件,所以在使用前请先正确安装 adobe reader。可以从 Adobe 官方网站或者平台提供的软件更新功能中进行下载。 X5 高级开发手册 2011 Justep Corp. 第 205 页 共 273 页 起 步 科 技 图 5.3 打印第三方控件下载图 要实现报表的打印、预览、页面设置功能,可以使用组件 printBar。 使用方法: 在.w 页面上放一个 toolbars 组件 在 toolbars 组件里放一个 printBar 组件 图 5.4 打印工具栏设计图 X5 高级开发手册 2011 Justep Corp. 第 206 页 共 273 页 起 步 科 技 图 5.5 打印工具栏运行结果图 在打印设置的窗口中,可以对纸张大小、边距、方向、页眉页脚大小进行设置。 图 5.6 报表页面设置示例图 除了使用组件也可以使用 javascript 调用导出接口: API(js): 打印:justep.xbl(‘reportid’).print(); 预览:justep.xbl(‘reportid’).preview(); 页面设置:justep.xbl(‘reportid’).pageSetup(); 5.3 分页打印 5.3.1 网格报表分页 设计时: 提示:在报表设计的 excel 进行页面设置有同样效果。报表服务器会读取 excel 的页面设置作为默认打印页面设置。 X5 高级开发手册 2011 Justep Corp. 第 207 页 共 273 页 起 步 科 技 图 5.7 打印分页属性设计图 在 A1、A2、A3 中,添加批注 table-header:true,表示第一、二、三行为报表表头。分页后,这 三行会作为表头在每页显示。 在 B4 中,添加批注 record-per-page:20,表示报表输出时每页显示 20 行数据,如果同时添加批 注 auto-fill-row:true 代表如果最后一页的行数不够 20 行的话,自动添加空行补充满 20 行。 运行时: 图 5.8 打印分页属性运行结果图 5.3.2 分组报表分页 设计时: 图 5.9 分组报表分页属性设计图 在 A1、A2、A3 中,添加批注 table-header:true,表示第一、二、三行为报表表头。分页后,这 三行会作为表头在每页显示。 在 B4 中,添加批注 group-break:true,表示报表输出时按照产品类别分组进行分页显示。 运行时: X5 高级开发手册 2011 Justep Corp. 第 208 页 共 273 页 起 步 科 技 图 5.10 分组报表分页属性运行结果图 5.4 分栏打印 设计时: 图 5.11 分类打印属性设计图 在 A1、A2、A3 中,添加批注 table-header:true,表示第一、二、三行为报表表头。分页后,这 三行会作为表头在每页显示。 在 A1 中,再添加批注 colcount:2,表示报表输出时在一页中分两栏同时显示报表数据。 X5 高级开发手册 2011 Justep Corp. 第 209 页 共 273 页 起 步 科 技 图 5.12 分类打印属性运行结果图 5.5 整体显示 在卡片报表预览和打印时,常常会遇到这样一个问题:当一页显示不下一张卡片报表时,该报 表的一部分会被拆分到另一页显示。 图 5.13 整体显示属性设计图 在包含 select 关键字的单元格中插入批注:keep-together:true 就可以了。 X5 高级开发手册 2011 Justep Corp. 第 210 页 共 273 页 起 步 科 技 第6章 附录 6.1 报表批注 表 6.1 报表批注 批注 用途 描述 colspan $ALL--全部 $CURRENT--默认 $PRXCX--某单元格 列合并 例如:colspan:2(横向合并两个单元格) colspan:$PR3C4(按照第三行第四列定义的数据数量合并) colspan:RUM(按照 RUM 列获得的值合并) rowspan 同上 行合并,例如同上 group-break (true/false) 按分组换页 collapse (true/false) 拆分合并的单元格,处理表头表尾设置时当前行有合并单元格。 image-layout Originalsize(始大小) autosize(默认值) 背景图片布局(默认值为:原始大小) h-group $ALL--全部 $CURRENT--默认 $PRXCX--某单元格 水平方向计算范围 v-group $ALL--全部 $CURRENT--默认 $PRXCX--某单元格 垂直方向计算范围 individual-table (true/false) 自成表,该区域独立成一张表,除此以外的区域作为表头或表尾。 alone (true/false) 独立数据集,一般用于动态表头时,把表头作为独立于其他数据 集处理。 object chartid 对象(一般用于报图混合表中指定图表 id) default-value 单元格值为空时的默认值 table-header (true/false) 设置表头 table-footer (true/false) 设置表尾 page-break (true/false) 设置换页 is-master-dataset (true/false) 是否主表 master-dataset dataid 指定主表数据集 record-per-page number 每页显示几条记录 keep-together (true/false) 和其他行显示在一页 colcount number 分栏个数 override-print 套打 image url 背景图 auto-width (true/false) 列自动宽 auto-height (true/false) 行自动高 v-visible:false (true/false) 或条件表达式 隐藏当前行,条件表达式如(ProductID > 10 and CategoryName =' 饮料') h-visible:false (true/false) 隐藏当前列,条件表达式如(ProductID > 10 and CategoryName =' X5 高级开发手册 2011 Justep Corp. 第 211 页 共 273 页 起 步 科 技 或条件表达式 饮料') v-acc (true/false) 或条件表达式 是否为纵向递增序列(需配合 count()运算函数使用) h-acc (true/false) 或条件表达式 是否为横向递增序列(需配合 count()运算函数使用) display-type 单元格显示类型,包括 image,slant-line,barcode bgColor 根据条件改变背景色 例:bgColor:(RCITY=’北京’;red;green) bgColor:if(RUNITPRICE=18) then 'red' else if(RUNITPRICE=19) then 'green' else if(RUNITPRICE=10) then 'yellow' else ''(推荐使用) 6.2 图表类型 表 6.2 图表类型 标识(chart-type) 名称 pie 饼图 pie-3d 3D 饼图 vertical-bar 垂直柱状图 vertical-bar-3d 垂直 3D 柱状图 stacked-vertical-bar 堆叠式垂直柱状图 stacked-vertical-bar-3d 堆叠式垂直 3D 柱状图 cylinder-vertical-bar 垂直圆柱图 cylinder-vertical-bar-3d 垂直 3D 圆柱图 horizontal-bar 水平柱状图 horizontal-bar-3d 水平 3D 柱状图 stacked-horizontal-bar 堆叠式水平柱图 stacked-horizontal-bar-3d 堆叠式 3D 水平柱图 cylinder-horizontal-bar 水平圆柱图 cylinder-horizontal-bar-3d 水平 3D 圆柱图 vertical-line 垂直线图 vertical-line-3d 垂直 3D 线图 horizontal-line 水平线图 horizontal-line-3d 水平 3D 线图 vertical-xy-line 垂直 XY 线图 horizontal-xy-line 水平 XY 线图 vertical-area 垂直面积图 horizontal-area 水平面积图 time-series 时序图 vertical-gantt 垂直甘特图 horizontal-gantt 水平甘特图 randar 雷达图 simple-meter 简单仪表盘 dial-meter 刻度盘 arc-dial-meter 弧度刻度盘 X5 高级开发手册 2011 Justep Corp. 第 212 页 共 273 页 起 步 科 技 thermometer-meter 温度计 6.3 图表公有参数 表 6.3 图表公有参数 标签 属性 含义 数据 类型 默认值 取值范围 chart-background-color Text() 图片整体背景色 String #FFFFFF #000000~#FFFFFF title text() 标题 String visible 是否显示 Boolean true true/false position 位置 String TOP TOP,LEFT,RIGHT,BOTT OM title-background-color 标题背景色 String #FFFFFF #000000~#FFFFFF title-vertical-alignment text() 垂直对齐 String CENTER TOP,CENTER,BOTTO M title-horizontal-alignment text() 水平对齐 String CENTER LEFT,CENTER,RIGHT title-border 标题边框 top 上边框 Double 0.0D 0.0~1.0 left 左边框 Double 0.0D 0.0~1.0 bottom 下边框 Double 0.0D 0.0~1.0 right 右边框 Double 0.0D 0.0~1.0 title-margin 标题外边距 top 上边距 Double 0.0D 0.0~1.0 left 左边距 Double 0.0D 0.0~1.0 bottom 下边距 Double 0.0D 0.0~1.0 right 右边距 Double 0.0D 0.0~1.0 title-padding 标题内边距 top 上边距 Double 0.0D 0.0~1.0 left 左边距 Double 0.0D 0.0~1.0 bottom 下边距 Double 0.0D 0.0~1.0 right 右边距 Double 0.0D 0.0~1.0 title-font 标题字体 name 字体名称 String String 黑体 style 字体样式 Int 0 0 正常 1 粗体 2 斜体 3 粗斜体 size 字号 Int 14 >0 sub-title text() 子标题 String visible 是否显示 String true true/false position 位置 String TOP TOP,LEFT,RIGHT,BOTT OM sub-title-background-color 子标题背景色 Paint #FFFFFF #000000~#FFFFFF sub-title-vertical-alignment text() 垂直对齐 String CENTER TOP,CENTER,BOTTO M X5 高级开发手册 2011 Justep Corp. 第 213 页 共 273 页 起 步 科 技 sub-title-horizontal-alignment text() 水平对齐 String CENTER LEFT,CENTER,RIGHT sub-title-border 子标题边框 top 上边框 Double 0.0D 0.0~1.0 left 左边框 Double 0.0D 0.0~1.0 bottom 下边框 Double 0.0D 0.0~1.0 right 右边框 Double 0.0D 0.0~1.0 sub-title-margin 子标题外边距 top 上边距 Double 0.0D 0.0~1.0 left 左边距 Double 0.0D 0.0~1.0 bottom 下边距 Double 0.0D 0.0~1.0 right 右边距 Double 0.0D 0.0~1.0 sub-title-padding 子标题内边距 top 上边距 Double 0.0D 0.0~1.0 left 左边距 Double 0.0D 0.0~1.0 bottom 下边距 Double 0.0D 0.0~1.0 right 右边距 Double 0.0D 0.0~1.0 sub-title-font 子标题字体 name 字体名称 String String 黑体 style 字体样式 Int 0 0 正常 1 粗体 2 斜体 3 粗斜体 size 字号 Int 14 >0 comment text() 注释说明 String visible 是否显示 Boolean true true/false position 位置 String TOP TOP,LEFT,RIGHT,BOTT OM comment-background-color 注释背景色 Paint #FFFFFF #000000~#FFFFFF comment-vertical-alignment text() 垂直对齐 String CENTER TOP,CENTER,BOTTO M comment-horizontal-alignment text() 水平对齐 String CENTER LEFT,CENTER,RIGHT comment-border 注释边框 top 上边框 Double 0.0D 0.0~1.0 left 左边框 Double 0.0D 0.0~1.0 bottom 下边框 Double 0.0D 0.0~1.0 right 右边框 Double 0.0D 0.0~1.0 comment-margin 注释外边距 top 上边距 Double 0.0D 0.0~1.0 left 左边距 Double 0.0D 0.0~1.0 bottom 下边距 Double 0.0D 0.0~1.0 right 右边距 Double 0.0D 0.0~1.0 comment-padding 注释内边距 top 上边距 Double 0.0D 0.0~1.0 left 左边距 Double 0.0D 0.0~1.0 bottom 下边距 Double 0.0D 0.0~1.0 right 右边距 Double 0.0D 0.0~1.0 comment-font 注释字体 X5 高级开发手册 2011 Justep Corp. 第 214 页 共 273 页 起 步 科 技 name 字体名称 String String 黑体 style 字体样式 Int 0 0 正常 1 粗体 2 斜体 3 粗斜体 size 字号 Int 14 >0 legend 图表图例 visible 是否显示 Boolean true true/false position 位置 String TOP TOP,LEFT,RIGHT,BOTT OM legend-background-color text() 注释背景色 Paint #FFFFFF #000000~#FFFFFF legend -vertical-alignment text() 垂直对齐 String CENTER TOP,CENTER,BOTTO M legend-horizontal-alignment text() 水平对齐 String CENTER LEFT,CENTER,RIGHT legend-border 注释边框 top 上边框 Double 0.0D 0.0~1.0 left 左边框 Double 0.0D 0.0~1.0 bottom 下边框 Double 0.0D 0.0~1.0 right 右边框 Double 0.0D 0.0~1.0 legend-margin 注释外边距 top 上边距 Double 0.0D 0.0~1.0 left 左边距 Double 0.0D 0.0~1.0 bottom 下边距 Double 0.0D 0.0~1.0 right 右边距 Double 0.0D 0.0~1.0 legend-padding 注释内边距 top 上边距 Double 0.0D 0.0~1.0 left 左边距 Double 0.0D 0.0~1.0 bottom 下边距 Double 0.0D 0.0~1.0 right 右边距 Double 0.0D 0.0~1.0 legend-item-font 注释字体 name 字体名称 String String 黑体 style 样式 Int 0 0 正常 1 粗体 2 斜体 3 粗斜体 size 字号 Int 14 >0 6.4 图表私有参数 6.4.1 饼图 表 6.4 饼图参数 标签 属性 含义 数据类型 默认值 取值范围 background-color text() 绘图区背景色 String #FFFFFF #000000-#FFFFFF background-alpha text() 绘图区背景透明度 float 0.6f 0.1f-1.0f foreground-alpha text() 绘图区前景透明度 float 0.9f 0.1f-0.9f pie-label-style text() 扇区描述信息样式 String {0}{2} {0}分类轴{1}数据{2} X5 高级开发手册 2011 Justep Corp. 第 215 页 共 273 页 起 步 科 技 百分比{3}数据总和 pie-label-number-format text() 扇区描述信息中的数值格 式 String ###### pie-label-percent-format text() 扇区描述信息中的百分比 格式 String ##.00% outline-color text() 绘图区边框线颜色 String #BEBEBE #000000-#FFFFFF label-gap text() 扇区与扇区说明信息之间 距离 double 0.05 0.01~0.1 label-font name 扇区描述信息字体名称 String 黑体 style 扇区描述信息字体样式 int 0 0 正常 1 粗体 2 斜体 3 粗斜体 size 扇区描述信息字体大小 int 12 >0 no-data-message text() 图表无数据时显示信息 String 无数据 is-circular text() 饼图是否为圆形 Boolean true true/false( 圆形/ 椭 圆形) explode-all-percent text() 所有扇区均着重显示(3D 饼图不支持) range 扇区着重显示区域索引范 围 int 100 >=0 value 扇区着重显示区域突出率 double 0.0D 0.0D-0.1D(如:0.3D 为 30%) explode-percent text() 特定扇区均着重显示(3D 饼图不支持) index 扇区着重显示区域索引范 围(按数据显示顺序,第 一个扇区 index 为 0) int 0 >=0 value 扇区着重显示区域突出率 double 0.0D 0.0D-0.1D(如:0.3D 为 30%) 表 6.5 热点链接与热点提示相关参数信息 标签 属性 含义 数据类型 默认值 取值范围 map-tool-tip-label-style text() 扇区热点提示信 息样式 String {0}:({1},{ 2}) {0}分类轴{1}数据{2}百 分比{3}数据总和 map-tool-tip-number-format text() 扇区热点提示信 息数值格式 String ###### map-tool-tip-percent-format text() 扇区热点提示信 息的百分比格式 String ##.00% href 链接(data 中设置) model 图表热点链接模式 String window/dialog/replace title 图表热点链接标 题 String X5 高级开发手册 2011 Justep Corp. 第 216 页 共 273 页 起 步 科 技 6.4.2 柱图 表 6.6 柱图参数 标签 属性 含义 数据类型 默认值 取值范围 background-color text() 绘图区背景色 String #FFFFFF #000000-#FFFFFF background-alpha text() 绘图区背景透明度 float 0.6f 0.1f-1.0f foreground-alpha text() 绘图区前景透明度 float 0.9f 0.1f-0.9f 表 6.7 分类轴相关参数配置 标签 属性 含义 数据类型 默认值 取值范围 serie double-axis 是否显示双数据轴 Boolean false true/false one-axis-location 主数据轴显示位置 Boolean TOP_OR_LEFT TOP_OR_LEFT TOP_OR_RIGHT BOTTOM_OR_LEFT BOTTOM_OR_RIG HT two-axis-location 副数据轴显示位置 Boolean BOTTOM_OR _RIGHT TOP_OR_LEFT TOP_OR_RIGHT BOTTOM_OR_LEFT BOTTOM_OR_RIG HT serie double-axis 是否显示双数据轴 Boolean false true/false one-axis-location 主数据轴显示位置 Boolean TOP_OR_LEFT TOP_OR_LEFT TOP_OR_RIGHT BOTTOM_OR_LEFT BOTTOM_OR_RIG HT two-axis-location 副数据轴显示位置 Boolean BOTTOM_OR _RIGHT TOP_OR_LEFT TOP_OR_RIGHT BOTTOM_OR_LEFT BOTTOM_OR_RIG HT serie serie-title text() 数据轴描述信息 String 数据 serie-title-color text() 数据轴描述信息字 体颜色 String #000000 #000000~#FFFFFF serie-title-font name 数据轴描述信息字 体名称 String 黑体 style 数据轴描述信息字 体样式 int 0 0 正常 1 粗体 2 斜 体 3 粗斜体 X5 高级开发手册 2011 Justep Corp. 第 217 页 共 273 页 起 步 科 技 size 数据轴描述信息字 体大小 int 12 >0 serie-upper-margin text() 数据轴图表最高数 据项距顶端距离 double 0.1 0.1~1.0 serie-number visible 数据轴是否显示 boolean true true/false auto 数据轴坐标值是否 自动设定 boolean true true/false start 数据轴坐标值起始 数值 double 0 end 数据轴坐标值终止 位置 double 1000 step 数据轴坐标值步长 double 100 serie-number-forma t text() 数据轴坐标值数据 格式 String ####.00 serie-tick-label-font name 数据轴坐标值字体 名称 String 黑体 style 数据轴坐标值字体 样式 int 0 0 正常 1 粗体 2 斜 体 3 粗斜体 size 数据轴坐标值字体 大小 int 12 >0 serie-tick-label-color text() 数据轴坐标值字体 颜色 String #000000 #000000~#FFFFFF 表 6.8 数据轴相关参数设置 标签 属性 含义 数据类型 默认值 范围 serie double-axis 是否显示双数据轴 Boolean false one-axis-locat ion 主数据轴显示位置 Boolean TOP_OR_LEFT true/false two-axis-locat ion 副数据轴显示位置 Boolean BOTTOM_OR _RIGHT TOP_OR_LEFT TOP_OR_RIGHT BOTTOM_OR_LEFT BOTTOM_OR_RIG HT serie-title text() 数据轴描述信息 String 数据 serie-title-color text() 数据轴描述信息字 体颜色 String #000000 #000000~#FFFFFF name 数据轴描述信息字 体名称 String 黑体 style 数据轴描述信息字 体样式 int 0 0 正常 1 粗体 2 斜 体 3 粗斜体 size 数据轴描述信息字 体大小 int 12 >0 serie-upper-margin text() 数据轴图表最高数 double 0.1 0.1~1.0 X5 高级开发手册 2011 Justep Corp. 第 218 页 共 273 页 起 步 科 技 据项距顶端距离 serie-number visible 数据轴是否显示 boolean true auto 数据轴坐标值是否 自动设定 boolean true true/false start 数据轴坐标值起始 数值 double 0 true/false end 数据轴坐标值终止 位置 double 1000 step 数据轴坐标值步长 double 100 serie-number-format text() 数据轴坐标值数据 格式 String ####.00 serie-tick-label-font name 数据轴坐标值字体 名称 String 黑体 style 数据轴坐标值字体 样式 int 0 size 数据轴坐标值字体 大小 int 12 0 正常 1 粗体 2 斜 体 3 粗斜体 serie-tick-label-color text() 数据轴坐标值字体 颜色 String #000000 >0 表 6.9 警戒线参数设置 标签 属性 含义 数据类型 默认值 取值范围 marker visible 警戒线是否显示 boolean false true/false lable 警戒线标签 String marker value 警戒值 double 100 color 警戒线颜色 String #EE0000 #000000~#FFFFFF marker-label-font name 警戒线描述字体名称 String 黑体 style 警戒线描述字体样式 int 0 0 正常 1 粗体 2 斜体 3 粗斜体 size 警戒线描述字体大小 int 12 >0 表 6.10 热点链接与热点提示相关参数 标签 属性 含义 数据类型 默认值 取值范围 map-tool-tip-label-style text() 热点提示信息样式 String {0}:({1},{ 2}) {0}分类轴{1}数据{2}百分 比{3}数据总和 map-tool-tip-format text() 热点提示信息数值格式 String ######.0 0 type 热点提示信息中数值数 据样式 String number number/date href 链接(在 data 中设置) model 图表热点链接模式 String window/dialog/replace title 图表热点链接标题 String X5 高级开发手册 2011 Justep Corp. 第 219 页 共 273 页 起 步 科 技 6.4.3 线图 表 6.11 线图参数 标签 属性 含义 数据类型 默认值 取值范围 background-color text() 绘图区背景色 String #FFFFFF #000000-#FFFFFF background-alpha text() 绘图区背景透明度 float 0.6f 0.1f-1.0f foreground-alpha text() 绘图区前景透明度 float 0.9f 0.1f-0.9f 表 6.12 分类轴相关参数配置 标签 属性 含义 数据类 型 默认值 取值范围 category-title text() 分类轴标题 String 类别 category-title-color text() 分类轴标题信息字体颜色 String #000000 #000000~#FFFF FF category-title-font name 分类轴描述信息字体名称 String 黑体 style 分类轴描述信息字体样式 int 0 0 正常/1 粗体/2 斜体/3 粗斜体 size 分类轴描述信息字体大小 int 12 >0 category-margin text() 分类轴中各组间间距 double 0.2 0.1~1.0 category-upper-margin text() 分类轴中首组与分类轴起 始位置(坐标点)距离 double 0.1 0.1~1.0 category-lower-margin text() 分类轴中末组与分类轴延 长线终止位的距离 double 0.1 0.1~1.0 category-label-max-width text() 分类轴各组描述信息最大 宽度 float 10 >0 category-item-margin text() 分类轴各组中各项之间的 间距 double 0.2 0.1~1.0 category-item-max-width text() 分类轴各组中各项最大宽 度 double 0.4 0.1~1.0 category-item-label-visible text() 分类轴各组中各项上是否 显示对应的数值 Boolean false true/false category-item-label-font name 分类轴各组中各项上数值 描述信息字体名称 String 黑体 style 分类轴各组中各项上数值 描述信息字体样式 int 0 0 正常/1 粗体/2 斜体/3 粗斜体 size 分类轴各组中各项上数值 描述信息字体大小 int 12 >0 category-item-label-color text() 分类轴各组各项上数值描 述信息的字体颜色 String #000000 #000000~#FFFF FF category-item-label-number-forma t text() 分类轴各组各项上数值描 述信息的数据格式 String ######.0 0 category-item-label-angle text() 分类轴刻度描述信息偏移 double 0 0~90 X5 高级开发手册 2011 Justep Corp. 第 220 页 共 273 页 起 步 科 技 度 category-tick-label-font name 分类轴刻度描述信息字体 名称 String 黑体 style 分类轴刻度描述信息字体 样式 int 0 0 正常/1 粗体/2 斜体/3 粗斜体 size 分类轴刻度描述信息字体 大小 int 12 >0 category-tick-label-color text() 分类轴刻度描述信息字体 颜色 String #000000 #000000~#FFFF FF 表 6.13 数据轴相关参数设置 标签 属性 含义 数据类型 默认值 取值范围 serie double-axis 是否显示双数据轴 Boolean false true/false one-axis-locat ion 主数据轴显示位置 Boolean TOP_OR_LE FT TOP_OR_LEFT TOP_OR_RIGHT BOTTOM_OR_LEFT BOTTOM_OR_RIGH T two-axis-locat ion 副数据轴显示位置 Boolean BOTTOM_ OR_RIGHT TOP_OR_LEFT TOP_OR_RIGHT BOTTOM_OR_LEFT BOTTOM_OR_RIGH T serie-title text() 数据轴描述信息 String 数据 serie-title-color text() 数据轴描述信息字体颜 色 String #000000 #000000~#FFFFFF serie-title-font name 数据轴描述信息字体名 称 String 黑体 style 数据轴描述信息字体样 式 int 0 0 正常 1 粗体 2 斜 体 3 粗斜体 size 数据轴描述信息字体大 小 int 12 >0 serie-upper-margin text() 数据轴图表最高数据项 距顶端距离 double 0.1 0.1~1.0 serie-number visible 数据轴是否显示 boolean true true/false auto 数据轴坐标值是否自动 设定 boolean true true/false start 数据轴坐标值起始数值 double 0 end 数据轴坐标值终止位置 double 1000 step 数据轴坐标值步长 double 100 X5 高级开发手册 2011 Justep Corp. 第 221 页 共 273 页 起 步 科 技 serie-number-format text() 数据轴坐标值数据格式 String ####.00 serie-tick-label-font name 数据轴坐标值字体名称 String 黑体 style 数据轴坐标值字体样式 int 0 0 正常 1 粗体 2 斜 体 3 粗斜体 size 数据轴坐标值字体大小 int 12 >0 serie-tick-label-color text() 数据轴坐标值字体颜色 String #000000 #000000~#FFFFFF 表 6.14 警戒线参数设置 标签 属性 含义 数据类型 默认值 取值范围 marker visible 警戒线是否显示 boolean false true/false lable 警戒线标签 String marker value 警戒值 double 100 color 警戒线颜色 String #EE0000 #000000~#FFFFFF marker-label-font name 警戒线描述字体名称 String 黑体 style 警戒线描述字体样式 int 0 0 正常 1 粗体 2 斜体 3 粗斜体 size 警戒线描述字体大小 int 12 >0 表 6.15 热点链接与热点提示相关参数 标签 属性 含义 数据类型 默认值 取值范围 map-tool-tip-label-style text() 热点提示信息样式 String {0}:({1},{2}) {0}分类轴{1}数据{2}百 分比{3}数据总和 map-tool-tip-format text() 热点提示信息数值格式 String ######.00 type 热点提示信息中数值数 据样式 String number number/date href 链接(在 data 中设置) model 图表热点链接模式 String window/dialog/replace title 图表热点链接标题 String 6.4.4 xy 线图 表 6.16 xy 线图参数 标签 属性 含义 数据类型 默认值 取值范围 background-color text() 绘图区背景色 String #FFFFFF #000000-#FFFFFF background-alpha text() 绘图区背景透明度 float 0.6f 0.1f-1.0f foreground-alpha text() 绘图区前景透明度 float 0.9f 0.1f-0.9f 表 6.17 分类轴相关参数配置 X5 高级开发手册 2011 Justep Corp. 第 222 页 共 273 页 起 步 科 技 标签 属性 含义 数据类 型 默认值 取值范围 category-title text() 分类轴标题 String 类别 category-title-color text() 分类轴标题信息字体颜色 String #000000 #000000~#FFFFFF category-title-font name 分类轴描述信息字体名称 String 黑体 style 分类轴描述信息字体样式 int 0 0 正常/1 粗体/2 斜 体/3 粗斜体 size 分类轴描述信息字体大小 int 12 >0 category-upper-margin text() 分类轴中首组与分类轴起 始位置(坐标点)距离 double 0.1 0.1~1.0 category-lower-margin text() 分类轴中末组与分类轴延 长线终止位的距离 double 0.1 0.1~1.0 category-item-label-visible text() 分类轴各组中各项上是否 显示对应的数值 Boolean false true/false category-item-label-font name 分类轴各组中各项上数值 描述信息字体名称 String 黑体 style 分类轴各组中各项上数值 描述信息字体样式 int 0 0 正常/1 粗体/2 斜 体/3 粗斜体 size 分类轴各组中各项上数值 描述信息字体大小 int 12 >0 category-item-label-color text() 分类轴各组各项上数值描 述信息的字体颜色 String #000000 #000000~#FFFFFF category-item-label-number-for mat text() 分类轴各组各项上数值描 述信息的数据格式 String ######.0 0 category-tick-label-font name 分类轴刻度描述信息字体 名称 String 黑体 style 分类轴刻度描述信息字体 样式 int 0 0 正常/1 粗体/2 斜 体/3 粗斜体 size 分类轴刻度描述信息字体 大小 int 12 >0 category-tick-label-color text() 分类轴刻度描述信息字体 颜色 String #000000 #000000~#FFFFFF category-number visible 分类轴是否显示 boolean true true/false auto 分类轴坐标值是否自动设 定 boolean true true/false start 分类轴坐标值起始数值 double 0 end 分类轴坐标值终止位置 double 1000 step 分类轴坐标值步长 double 100 category-number-format text() 分类轴坐标值数据格式 String ####.00 表 6.18 数据轴相关参数设置 X5 高级开发手册 2011 Justep Corp. 第 223 页 共 273 页 起 步 科 技 标签 属性 含义 数据类型 默认值 取值范围 serie double-axis 是否显示双数据轴 Boolean false true/false one-axis-locat ion 主数据轴显示位置 Boolean TOP_OR_LEFT TOP_OR_LEFT TOP_OR_RIGHT BOTTOM_OR_LEFT BOTTOM_OR_RIGH T two-axis-locat ion 副数据轴显示位置 Boolean BOTTOM_OR _RIGHT TOP_OR_LEFT TOP_OR_RIGHT BOTTOM_OR_LEFT BOTTOM_OR_RIGH T serie-title text() 数据轴描述信息 String 数据 serie-title-color text() 数据轴描述信息字 体颜色 String #000000 #000000~#FFFFFF serie-title-font name 数据轴描述信息字 体名称 String 黑体 style 数据轴描述信息字 体样式 int 0 0 正常 1 粗体 2 斜 体 3 粗斜体 size 数据轴描述信息字 体大小 int 12 >0 serie-upper-margin text() 数据轴图表最高数 据项距顶端距离 double 0.1 0.1~1.0 serie-number visible 数据轴是否显示 boolean true true/false auto 数据轴坐标值是否 自动设定 boolean true true/false start 数据轴坐标值起始 数值 double 0 end 数据轴坐标值终止 位置 double 1000 step 数据轴坐标值步长 double 100 serie-number-format text() 数据轴坐标值数据 格式 String ####.00 serie-tick-label-font name 数据轴坐标值字体 名称 String 黑体 style 数据轴坐标值字体 样式 int 0 0 正常 1 粗体 2 斜 体 3 粗斜体 size 数据轴坐标值字体 大小 int 12 >0 serie-tick-label-color text() 数据轴坐标值字体 颜色 String #000000 #000000~#FFFFFF X5 高级开发手册 2011 Justep Corp. 第 224 页 共 273 页 起 步 科 技 表 6.19 警戒线参数设置 标签 属性 含义 数据类型 默认值 取值范围 marker visible 警戒线是否显示 boolean false true/false lable 警戒线标签 String marker value 警戒值 double 100 color 警戒线颜色 String #EE0000 #000000~#FFFFFF marker-label-font name 警戒线描述字体名称 String 黑体 style 警戒线描述字体样式 int 0 0 正常 1 粗体 2 斜体 3 粗斜体 size 警戒线描述字体大小 int 12 >0 表 6.20 热点链接与热点提示相关参数 标签 属性 含义 数据类型 默认值 取值范围 map-tool-tip-label-style text() 热点提示信息样式 String {0}:({1},{2}) {0}分类轴{1}数据{2}百分 比{3}数据总和 map-tool-tip-format text() 热点提示信息数值格 式 String ######.00 type 热点提示信息中数值 数据样式 String number number/date href 链接(在 data 中设置) model 图表热点链接模式 String window/dialog/replace title 图表热点链接标题 String 6.4.5 面积图 表 6.21 面积图参数 标签 属性 含义 数据类型 默认值 取值范围 background-color text() 绘图区背景色 String #FFFFFF #000000-#FFFFFF background-alpha text() 绘图区背景透明度 float 0.6f 0.1f-1.0f foreground-alpha text() 绘图区前景透明度 float 0.9f 0.1f-0.9f 表 6.22 分类轴相关参数配置: 标签 属性 含义 数据类 型 默认值 取值范围 category-title text() 分类轴标题 String 类别 category-title-color text() 分类轴标题信息字体颜色 String #000000 #000000~#FFFFFF category-title-font name 分类轴描述信息字体名称 String 黑体 style 分类轴描述信息字体样式 int 0 0 正常/1 粗体/2 斜 X5 高级开发手册 2011 Justep Corp. 第 225 页 共 273 页 起 步 科 技 体/3 粗斜体 size 分类轴描述信息字体大小 int 12 >0 category-margin text() 分类轴中各组间间距 double 0.2 0.1~1.0 category-upper-margin text() 分类轴中首组与分类轴起 始位置(坐标点)距离 double 0.1 0.1~1.0 category-lower-margin text() 分类轴中末组与分类轴延 长线终止位的距离 double 0.1 0.1~1.0 category-label-max-width text() 分类轴各组描述信息最大 宽度 float 10 >0 category-item-margin text() 分类轴各组中各项之间的 间距 double 0.2 0.1~1.0 category-item-max-width text() 分类轴各组中各项最大宽 度 double 0.4 0.1~1.0 category-item-label-visible text() 分类轴各组中各项上是否 显示对应的数值 Boolean false true/false category-item-label-font name 分类轴各组中各项上数值 描述信息字体名称 String 黑体 style 分类轴各组中各项上数值 描述信息字体样式 int 0 0 正常/1 粗体/2 斜 体/3 粗斜体 size 分类轴各组中各项上数值 描述信息字体大小 int 12 >0 category-item-label-color text() 分类轴各组各项上数值描 述信息的字体颜色 String #000000 #000000~#FFFFFF category-item-label-number-for mat text() 分类轴各组各项上数值描 述信息的数据格式 String ######.0 0 category-item-label-angle text() 分类轴刻度描述信息偏移 度 double 0 0~90 category-tick-label-font name 分类轴刻度描述信息字体 名称 String 黑体 style 分类轴刻度描述信息字体 样式 int 0 0 正常/1 粗体/2 斜 体/3 粗斜体 size 分类轴刻度描述信息字体 大小 int 12 >0 category-tick-label-color text() 分类轴刻度描述信息字体 颜色 String #000000 #000000~#FFFFFF 表 6.23 数据轴相关参数设置 标签 属性 含义 数据类型 默认值 取值范围 serie double-axis 是否显示双数据轴 Boolean false true/false one-axis-locat ion 主数据轴显示位置 Boolean TOP_OR_LEFT TOP_OR_LEFT TOP_OR_RIGHT BOTTOM_OR_LEFT X5 高级开发手册 2011 Justep Corp. 第 226 页 共 273 页 起 步 科 技 BOTTOM_OR_RIGH T two-axis-locat ion 副数据轴显示位置 Boolean BOTTOM_OR _RIGHT TOP_OR_LEFT TOP_OR_RIGHT BOTTOM_OR_LEFT BOTTOM_OR_RIGH T serie-title text() 数据轴描述信息 String 数据 serie-title-color text() 数据轴描述信息字 体颜色 String #000000 #000000~#FFFFFF serie-title-font name 数据轴描述信息字 体名称 String 黑体 style 数据轴描述信息字 体样式 int 0 0 正常 1 粗体 2 斜 体 3 粗斜体 size 数据轴描述信息字 体大小 int 12 >0 serie-upper-margin text() 数据轴图表最高数 据项距顶端距离 double 0.1 0.1~1.0 serie-number visible 数据轴是否显示 boolean true true/false auto 数据轴坐标值是否 自动设定 boolean true true/false start 数据轴坐标值起始 数值 double 0 end 数据轴坐标值终止 位置 double 1000 step 数据轴坐标值步长 double 100 serie-number-format text() 数据轴坐标值数据 格式 String ####.00 serie-tick-label-font name 数据轴坐标值字体 名称 String 黑体 style 数据轴坐标值字体 样式 int 0 0 正常 1 粗体 2 斜 体 3 粗斜体 size 数据轴坐标值字体 大小 int 12 >0 serie-tick-label-color text() 数据轴坐标值字体 颜色 String #000000 #000000~#FFFFFF 表 6.24 警戒线参数设置 标签 属性 含义 数据类型 默认值 取值范围 marker visible 警戒线是否显示 boolean false true/false lable 警戒线标签 String marker X5 高级开发手册 2011 Justep Corp. 第 227 页 共 273 页 起 步 科 技 value 警戒值 double 100 color 警戒线颜色 String #EE0000 #000000~#FFFFFF marker-label-font name 警戒线描述字体名称 String 黑体 style 警戒线描述字体样式 int 0 0 正常 1 粗体 2 斜体 3 粗斜体 size 警戒线描述字体大小 int 12 >0 表 6.25 热点链接与热点提示相关参数: 标签 属性 含义 数据类型 默认值 取值范围 map-tool-tip-label-style text() 热点提示信息样式 String {0}:({1},{2}) {0}分类轴{1}数据{2}百分 比{3}数据总和 map-tool-tip-format text() 热点提示信息数值格 式 String ######.00 type 热点提示信息中数值 数据样式 String number number/date href 链接(在 data 中设置) model 图表热点链接模式 String window/dialog/replace title 图表热点链接标题 String 6.4.6 时序图 表 6.26 时序图参数 标签 属性 含义 数据类型 默认值 取值范围 background-color text() 绘图区背景色 String #FFFFFF #000000-#FFFFFF background-alpha text() 绘图区背景透明度 float 0.6f 0.1f-1.0f foreground-alpha text() 绘图区前景透明度 float 0.9f 0.1f-0.9f 表 6.27 分类轴相关参数配置 标签 属性 含义 数据类型 默认值 取值范围 category-title text() 分类轴标题 String 类别 category-title-color text() 分类轴标题信息字体 颜色 String #000000 #000000~#FFFFFF category-title-font name 分类轴描述信息字体 名称 String 黑体 style 分类轴描述信息字体 样式 int 0 0 正常/1 粗体/2 斜 体/3 粗斜体 size 分类轴描述信息字体 大小 int 12 >0 category-item-label-visible text() 分类轴各组中各项上 是否显示对应的数值 Boolean false true/false X5 高级开发手册 2011 Justep Corp. 第 228 页 共 273 页 起 步 科 技 category-item-label-font name 分类轴各组中各项上 数值描述信息字体名 称 String 黑体 style 分类轴各组中各项上 数值描述信息字体样 式 int 0 0 正常/1 粗体/2 斜 体/3 粗斜体 size 分类轴各组中各项上 数值描述信息字体大 小 int 12 >0 category-item-label-color text() 分类轴各组各项上数 值描述信息的字体颜 色 String #000000 #000000~#FFFFFF category-item-label-number-for mat text() 分类轴各组各项上数 值描述信息的数据格 式 String ######.00 category-item-label-angle text() 分类轴刻度描述信息 偏移度 double 0 0~90 category-tick-label-font name 分类轴刻度描述信息 字体名称 String 黑体 style 分类轴刻度描述信息 字体样式 int 0 0 正常/1 粗体/2 斜 体/3 粗斜体 size 分类轴刻度描述信息 字体大小 int 12 >0 category-tick-label-color text() 分类轴刻度描述信息 字体颜色 String #000000 #000000~#FFFFFF 表 6.28 数据轴相关参数设置 标签 属性 含义 数据类型 默认值 取值范围 serie double-axis 是否显示双数据轴 Boolean false true/false one-axis-locatio n 主数据轴显示位置 Boolean TOP_OR_LE FT TOP_OR_LEFT TOP_OR_RIGHT BOTTOM_OR_LEFT BOTTOM_OR_RIGH T two-axis-locatio n 副数据轴显示位置 Boolean BOTTOM_ OR_RIGHT TOP_OR_LEFT TOP_OR_RIGHT BOTTOM_OR_LEFT BOTTOM_OR_RIGH T serie-title text() 数据轴描述信息 String 数据 serie-title-color text() 数据轴描述信息字 体颜色 String #000000 #000000~#FFFFFF X5 高级开发手册 2011 Justep Corp. 第 229 页 共 273 页 起 步 科 技 serie-title-font name 数据轴描述信息字 体名称 String 黑体 style 数据轴描述信息字 体样式 int 0 0 正常 1 粗体 2 斜 体 3 粗斜体 size 数据轴描述信息字 体大小 int 12 >0 serie-upper-margin text() 数据轴图表最高数 据项距顶端距离 double 0.1 0.1~1.0 serie-number visible 数据轴是否显示 boolean true true/false auto 数据轴坐标值是否 自动设定 boolean true true/false start 数据轴坐标值起始 数值 double 0 end 数据轴坐标值终止 位置 double 1000 step 数据轴坐标值步长 double 100 serie-number-format text() 数据轴坐标值数据 格式 String ####.00 date-format text() 时序图日期格式 String yyyy-MM-d d serie-tick-label-font name 数据轴坐标值字体 名称 String 黑体 style 数据轴坐标值字体 样式 int 0 0 正常 1 粗体 2 斜 体 3 粗斜体 size 数据轴坐标值字体 大小 int 12 >0 serie-tick-label-color text() 数据轴坐标值字体 颜色 String #000000 #000000~#FFFFFF 表 6.29 警戒线参数设置 标签 属性 含义 数据类型 默认值 取值范围 marker visible 警戒线是否显示 boolean false true/false lable 警戒线标签 String marker value 警戒值 double 100 color 警戒线颜色 String #EE0000 #000000~#FFFFFF marker-label-font name 警戒线描述字体名称 String 黑体 style 警戒线描述字体样式 int 0 0 正常 1 粗体 2 斜 体 3 粗斜体 size 警戒线描述字体大小 int 12 >0 X5 高级开发手册 2011 Justep Corp. 第 230 页 共 273 页 起 步 科 技 表 6.30 热点链接与热点提示相关参数 标签 属性 含义 数据类型 默认值 取值范围 map-tool-tip-label-styl e text() 热点提示信息样式 String {0}:({1},{2}) {0}分类轴{1}数据{2}百 分比{3}数据总和 map-tool-tip-category- format text() 分类轴热点提示信息 数值格式 String ######.00 type 分类轴热点提示信息 中数值数据样式 String number number/date map-tool-tip-serie-for mat text() 数据轴热点提示信息 数值格式 String ######.00 type 数据轴热点提示信息 中数值数据样式 String number number/date href 链接(在 data 中设置) model 图表热点链接模式 String window/dialog/replace title 图表热点链接标题 String 6.4.7 甘特图 表 6.31 甘特图参数 标签 属性 含义 数据类型 默认值 取值范围 background-color text() 绘图区背景色 String #FFFFFF #000000-#FFFFFF background-alpha text() 绘图区背景透明度 float 0.6f 0.1f-1.0f foreground-alpha text() 绘图区前景透明度 float 0.9f 0.1f-0.9f date-format text() 甘特图日期格式 String yyyy-MM-dd 表 6.32 分类轴相关参数配置 标签 属性 含义 数据类 型 默认值 取值范围 category-title text() 分类轴标题 String 类别 category-title-color text() 分类轴标题信息字体颜色 String #000000 #000000~#FFFFFF category-title-font name 分类轴描述信息字体名称 String 黑体 style 分类轴描述信息字体样式 int 0 0 正常/1 粗体/2 斜 体/3 粗斜体 size 分类轴描述信息字体大小 int 12 >0 category-item-label-angle text() 分类轴刻度描述信息偏移 度 double 0 0~90 category-tick-label-font name 分类轴刻度描述信息字体 名称 String 黑体 style 分类轴刻度描述信息字体 样式 int 0 0 正常/1 粗体/2 斜 体/3 粗斜体 size 分类轴刻度描述信息字体 大小 int 12 >0 X5 高级开发手册 2011 Justep Corp. 第 231 页 共 273 页 起 步 科 技 category-tick-label-color text() 分类轴刻度描述信息字体 颜色 String #000000 #000000~#FFFFFF 表 6.33 数据轴相关参数设置 标签 属性 含义 数据类 型 默认值 取值范围 serie double-axis 是否显示双数据轴 Boolean false true/false one-axis-locat ion 主数据轴显示位置 Boolean TOP_OR_LEFT TOP_OR_LEFT TOP_OR_RIGHT BOTTOM_OR_LEFT BOTTOM_OR_RIGH T two-axis-locat ion 副数据轴显示位置 Boolean BOTTOM_OR _RIGHT TOP_OR_LEFT TOP_OR_RIGHT BOTTOM_OR_LEFT BOTTOM_OR_RIGH T serie-title text() 数据轴描述信息 String 数据 serie-title-color text() 数据轴描述信息字体 颜色 String #000000 #000000~#FFFFFF serie-title-font name 数据轴描述信息字体 名称 String 黑体 style 数据轴描述信息字体 样式 int 0 0 正常 1 粗体 2 斜 体 3 粗斜体 size 数据轴描述信息字体 大小 int 12 >0 serie-tick-label-font name 数据轴坐标值字体名 称 String 黑体 style 数据轴坐标值字体样 式 int 0 0 正常 1 粗体 2 斜 体 3 粗斜体 size 数据轴坐标值字体大 小 int 12 >0 serie-tick-label-color text() 数据轴坐标值字体颜 色 String #000000 #000000~#FFFFFF 表 6.34 热点链接与热点提示相关参数 标签 属性 含义 数据类型 默认值 取值范围 map-tool-tip-label-style text() 热点提示信息样式 String {0}:({1},{2}) {0}分类轴{1}数据{2}百分 比{3}数据总和 map-tool-tip-format text() 热点提示信息数值格 式 String ######.00 X5 高级开发手册 2011 Justep Corp. 第 232 页 共 273 页 起 步 科 技 type 热点提示信息中数值 数据样式 String number number/date href 链接(在 data 中设置) model 图表热点链接模式 String window/dialog/replace title 图表热点链接标题 String 6.4.8 雷达图 表 6.35 雷达图参数 标签 属性 含义 数据类型 默认值 取值范围 background-color text() 绘图区背景色 String #FFFFFF #000000-#FFFFFF background-alpha text() 绘图区背景透明度 float 0.6f 0.1f-1.0f foreground-alpha text() 绘图区前景透明度 float 0.9f 0.1f-0.9f ticks-count text() 刻度个数 int 5 >0 label-font name 描述信息字体名称 String 黑体 style 描述信息字体样式 int 0 0 正常 1 粗体 2 斜体 3 粗斜体 size 描述信息字体大小 int 12 >0 label-color text() 描述信息字体颜色 String #000000 #000000~#FFFFFF gap text() 刻度线与线条距离 int 10 >0 表 6.36 热点链接与热点提示相关参数 标签 属性 含义 数据类型 默认值 取值范围 map-tool-tip-label-style text() 热点提示信息样式 String {0}:({1},{2}) {0}分类轴{1}数据{2}百分 比{3}数据总和 map-tool-tip-format text() 热点提示信息数值格 式 String ######.00 type 热点提示信息中数值 数据样式 String number number/date href 链接(在 data 中设置) model 图表热点链接模式 String window/dialog/replace title 图表热点链接标题 String 6.4.9 仪表盘 表 6.37 仪表盘参数 标签 属性 含义 数据类型 默认值 取值范围 background-color text() 绘图区背景色 String #FFFFFF #000000-#FFFFFF background-alpha text() 绘图区背景透明度 float 0.6f 0.1f-1.0f foreground-alpha text() 绘图区前景透明度 float 0.9f 0.1f-0.9f X5 高级开发手册 2011 Justep Corp. 第 233 页 共 273 页 起 步 科 技 表 6.38 简单仪表盘参数 标签 属性 含义 数据类型 默认值 取值范围 simple-range lower 简单仪表盘数据区 间起始位 double 0 upper 简单仪表盘数据区 间终止位 double 100 simple-interval 简单仪表中区域划 分(可重复) label 区域描述信息 String lower 区域起始位 double upper 区域终止位 double outline-color 轮廓线颜色 String #FFFFFF #000000~#FFFFFF outline-stroke 轮廓线描边特效 float 2.0f background-color 区域背景色 String #FFFFFF #000000~#FFFFFF simple-needle-color text() 指针颜色 String #0000FF #000000~#FFFFFF simple-dial-background-color text() 仪表盘背景色 String #FFFFFF #000000~#FFFFFF simple-dial-outline-color text() 仪表盘轮廓线颜色 String #FFFFFF #000000~#FFFFFF simple-meter-angle text() 仪表盘扇区角度 int 260 simple-tick-label-visible text() 仪表盘区间大刻度 值是否显示 boolean true true/false simple-tick-label-color text() 仪表盘区间大刻度 值字体颜色 String #000000 #000000~#FFFFFF simple-tick-size text() 仪表盘区间刻度大 小 double 5.0 simple-tick-color text() 仪表盘区间刻度颜 色 String #000000 #000000~#FFFFFF simple-value-color text() 仪表盘分析数值颜 色(指针数值颜色) String #000000 #000000~#FFFFFF simple-units text() 仪表盘分析数值计 量单位 String simple-tick-label-font name 仪表盘区间大刻度 值字体名称 String 黑体 style 仪表盘区间大刻度 值字体样式 int 0 0 正常/1 粗体/2 斜 体/3 粗斜体 size 仪表盘区间大刻度 值字体大小 int 12 >0 simple-value-font name 仪表盘分析数值字 体名称 String 黑体 style 仪表盘分析数值字 体样式 int 0 0 正常/1 粗体/2 斜 体/3 粗斜体 size 仪表盘分析数值字 体大小 int 12 >0 X5 高级开发手册 2011 Justep Corp. 第 234 页 共 273 页 起 步 科 技 表 6.39 刻度盘参数 标签 属性 含义 数据类型 默认值 取值范围 dial-rangle 刻度盘区间内区域设 置(可重复) lower 刻度盘区间内区域起 始位 double 0 upper 刻度盘区间内区域终 止位 double 0 color 刻度盘区间内区域颜 色 String #FFFFFF #000000~#FFFFFF dial-rangle-inner-radius text() 刻度盘区间内区域内 半径 double 0.80D 0.0D~1.0D dial-rangle-outer-radius text() 刻度盘区间内区域外 半径 double 0.82D 0.0D~1.0D dial-dataset-index text() 刻度盘数据集索引 int 0 >0 dial-view x 刻度盘圆心位置X相对 于背景的位置 double 0.0 y 刻度盘圆心位置 Y 相对 于背景的位置 double 0.0 width 刻度盘区域宽度占背 景的百分比 double 1.0 height 刻度盘区域高度占背 景的百分比 double 1.0 dial-frame background-c olor 刻度盘框架轮廓线背 景色 String #FFFFFF #000000~#FFFFFF foreground-co lor 刻度盘框架轮廓线前 景色 String #FFFFFF #000000~#FFFFFF dial-background x-color 刻度盘背景渐变颜色 1 String #FFFFFF #000000~#FFFFFF y-color 刻度盘背景渐变颜色 2 String #FFFFFF #000000~#FFFFFF dial-annotation color 刻度盘刻度值描述信 息 String dial-annotation-font name 刻度盘刻度值描述信 息字体名称 String 黑体 style 刻度盘刻度值描述信 息字体样式 int 0 0 正常/1 粗体/2 斜 体/3 粗斜体 size 刻度盘刻度值描述信 息字体大小 int 12 >0 dial-annotation-radius text() 刻度盘描述信息半径 (指针圆心到描述之间 double 0.70 X5 高级开发手册 2011 Justep Corp. 第 235 页 共 273 页 起 步 科 技 距离) dial-annotation-angle text() 刻度盘描述信息半径 double -140 dial-value-indicator-radius text() 刻度值显示区域半径 (指针圆心到刻度值之 间距离) double 0.50 dial-value-indicator-angle text() 刻度值角度(水平过圆 心 0~180) double -103.0 dial-value-indicator-font name 刻度盘数值字体名称 String 黑体 style 刻度盘数值字体样式 int 0 0 正常/1 粗体/2 斜 体/3 粗斜体 size 刻度盘数值字体大小 int 12 >0 dial-value-indicator-color text() 刻度值颜色 String #000000 dial-value-indicator-outline-co lor text() 刻度盘数值显示区域 轮廓线颜色 String #FFFFFF #000000~#FFFFFF dial-value-indicator-backgroun d-color text() 刻度盘数值背景色 String #FFFFFF #000000~#FFFFFF dial-scale visible 刻度盘区域是否显示 boolean true true/false lower-bound 刻度盘区域起始位置 double 0 upper-bound 刻度盘区域终止位置 double 100 start-angle 起始半径 double -120 extent 半径扩展范围 double -300 major-tick-inc rement 主刻度间隔增量 double 10 minor-tick-co unt 副刻度个数 int 4 dial-scale-tick-radius text() 刻度盘半径 double 0.90 0.0~1.0 dial-scale-tick-label-offset text() 刻度盘上刻度值偏移 量(与刻度间距) double 0.15 dial-scale-major-tick-color text() 主刻度颜色 String #000000 #000000~#FFFFFF dial-scale-minor-tick-color text() 副刻度颜色 String #242424 #000000~#FFFFFF dial-scale-tick-label-font text() name 刻度盘字体名称 String 黑体 style 刻度盘字体样式 int 0 0 正常/1 粗体/2 斜 体/3 粗斜体 size 刻度盘字体大小 int 12 >0 dial-pointer-radius text() 刻度盘指针半径 double 0.9 dial-pointer-width-radius text() 刻度盘指针宽度半径 double 0.03 dial-pointer-fill-color text() 刻度盘指针填充色 String #0000FF #000000~#FFFFFF dial-pointer-outline-color text() 刻度盘指针轮廓线颜 色 String #0000FF #000000~#FFFFFF dial-cap-radius text() 刻度盘指针圆心半径 double 0.02D 表 6.40 弧度刻度盘参数 X5 高级开发手册 2011 Justep Corp. 第 236 页 共 273 页 起 步 科 技 标签 属性 含义 数据类型 默认值 取值范围 arc-dial-rangle lower 弧度刻度盘区域定义 起始位 double 0 upper 弧度刻度盘区域定义 终止位 double 0 color 弧度刻度盘区域颜色 String #FFFFFF #000000~#FFFFFF arc-dial-rangle-inner-radius text() 弧度刻度盘区域定义 内半径 double 0.85D 0.0D~1.0D arc-dial-rangle-outer-radius text() 弧度刻度盘区域定义 外半径 double 0.86D 0.0D~1.0D arc-dial-view x 弧度刻度盘圆心位置 X 相对背景的位置 double 0.21 y 弧度刻度盘圆心位置 Y 相对背景的位置 double 0.0 width 弧度刻度盘区域宽度 占背景百分比 double 0.58 height 弧度刻度盘区域高度 占背景百分比 double 0.30 arc-dial-frame start-angle 弧度刻度盘框架起始 半径 double 60.0 extent 弧度刻度盘框架弧度 扩展范围 double 60.0 arc-dial-frame-inner-radius text() 弧度刻度盘框架内部 半径 double 0.60 arc-dial-frame-outer-radius text() 弧度刻度盘框架外部 半径 double 0.90 arc-dial-frame-foreground-c olor text() 弧度刻度盘前景色 String #FFFFFF #000000~#FFFFFF arc-dial-frame-stroke text() 弧度刻度盘框架描边 特效 float 3.0f arc-dial-background x-color 弧度刻度盘背景渐变 色 1 String #FFFFFF #000000~#FFFFFF y-color 弧度刻度盘背景渐变 色 2 String #FFFFFF #000000~#FFFFFF arc-dial-dataset-index text() 弧度刻度盘数据集索 引 int 0 >0 arc-dial-scale visible 是否显示刻度盘区间 boolean true true/false lower-bound 起始位 double 0 upper-bound 终止位 double 100 start-angle 起始半径 double 115.0 X5 高级开发手册 2011 Justep Corp. 第 237 页 共 273 页 起 步 科 技 extent 扩展范围 double -50 major-tick-incre ment 主刻度间隔增量 double 10.0 >0 minor-tick-count 副刻度个数 int 4 >0 arc-dial-scale-tick-radius text() 刻度盘半径 double 0.88 0.0~1.0 arc-dial-scale-tick-label-offs et text() 刻度盘上刻度值偏移 量(与刻度距离) double 0.07 0.01~0.1 arc-dial-scale-major-tick-col or text() 主刻度颜色 String #000000 #000000~#FFFFFF arc-dial-scale-minor-tick-col or text() 副刻度颜色 String #242424 #000000~#FFFFFF arc-dial-scale-tick-label-font name 弧度刻度盘字体名称 String 黑体 style 弧度刻度盘字体样式 int 0 0 正常/1 粗体/2 斜 体/3 粗斜体 size 弧度刻度盘字体大小 int 12 >0 arc-dial-pointer-radius text() 弧度刻度盘指针半径 double 0.82 arc-dial-pointer-color text() 弧度刻度盘指针颜色 String #0000FF #000000~#FFFFFF 表 6.41 温度计参数 标签 属性 含义 数据类型 默认值 thermometer-range lower 起始温度 double 0 upper 终止温度 double 100 thermometer-units text() 单位 String X5 高级开发手册 2011 Justep Corp. 第 238 页 共 273 页 起 步 科 技 第四篇 Studio 第1章 概述 Studio 是基于 Eclipse 插件的一套建模工具,提供了集成的开发和设计环境,包括强大的业务建 模环境、业务设计和底层开发环境的无缝集成、完整的开发调试环境。用户可以在可视环境下进行 信息建模、流程建模、UI 建模等。 X5 高级开发手册 2011 Justep Corp. 第 239 页 共 273 页 起 步 科 技 第2章 Studio 配置 2.1 JS 库配置 图 2.1 js 库配置图 开发过程中需要写 JS 代码的时候,如果想输入”.”后能出现方法和变量列表辅助提示,如图: 图 2.2 js 提示 X5 高级开发手册 2011 Justep Corp. 第 240 页 共 273 页 起 步 科 技 那么就需要导入所依赖的 JS 库,JS 库主要是提供导入开发中依赖到的 js 文件的功能,如果依赖 的是一个 xbl 组件,那么就导入该 xbl 组件所对应的 xdoc 文档,导入的 xdoc 在底层会自动转换成一 个 js 库文件。 2.2 Tomcat 配置 图 2.3 Tomcat 配置 配置开发时用的 web 服务器,studio 自带的 web 服务器是 tomcat,可以通过这个界面进行配置 web 服务器的相关参数,一般情况下使用默认配置即可,不需要另外修改。 X5 高级开发手册 2011 Justep Corp. 第 241 页 共 273 页 起 步 科 技 2.3 编辑器配置 图 2.4 编辑器配置 目前只有 xui 设计器的一个配置,即默认打开 w 界面的时候默认是打开源码视图还是图形视图。 2.4 数据源配置 X5 高级开发手册 2011 Justep Corp. 第 242 页 共 273 页 起 步 科 技 图 2.5 数据源配置 配置数据库连接参数,可以添加多个,目前支持的数据库有 ORCALE 和 SQL SERVER,数据源配 置修改保存后会同时更新到以下配置文件中: 1、 apache-tomcat\conf\server.xml (web 服务器) 2、 studio\dropins\studio-app\config\dscfg.xml 2.5 服务器配置 图 2.6 服务器配置 主要配置服务器的 URL 地址,目前需要配置的有 BIZ 服务器地址,报表服务器地址,配置完后 会同时更新到 runtime\UIServer\WEB-INF\justep.xml 文件中: http://localhost:8080/BusinessServer http://localhost:8080/ReportServer/reportservice X5 高级开发手册 2011 Justep Corp. 第 243 页 共 273 页 起 步 科 技 第3章 模板向导开发 3.1 模板向导目录结构以及配置 UI 模型的每个应用模块(注:UI 模型下的顶级目录)下的/config/studio.xml 都可 配置向导的存放目录 ,如 stystem 下的 /UI/system/config/studio.xml 中配置如下: ../../templates/xuiTemplateConfig.xml 表示 /UI/system/templates 是一个模板根目录,这下面可以放多个模板。 图 3.1 示例图 xuiTemplateConfig.xml 是模板注册文件,name 是目录名称 common 目录存放公共的 jar 包和 java 文件,所有模板都可引用