BeX5中集成润乾报表

  1、客户应用中部署安全模块,JAVA版安全模块下载地址为http://pan.baidu.com/s/1mgzHxAo;在客户应用中增加相关内容,包括jar包拷贝,相关文件拷贝及web.xml的合并。 将两个方框中的文件复制到bex5的Uiserver目录中,其中mis2这个目录要复制到model\UI2中; 将方框中的两个目录复制到UIserver\WEB-INF目录中,将web.xml和UIserver\WEB-INFweb.xml进行内容的合并。   2、在报表服务应用文件搜索配置文件gezCustomPattern.xml ,配置平台密钥, <!-- enable:true表示启用密钥;false表示不启用密钥--> <encrypt enable="true" secretKey="密钥" /> 3、配置bex5中系统安全模块相关的配置文件config.properties,在\UIServer\WEB-INF\classes目录下,   url=http://127.0.0.1:8080/reportmis //报表应用的地址 privilegeInterface=com.customer.privilege.CusPrivilege userInterface=com.customer.user.CusUser encryptEnable=true     启用安全 secretKey=111111112222222233333333  密钥,必需和报表服务中的密码一样;   完成上面上步后布署就完成了   BEx5中调用,在W文件中增加iFrame组件,在JS中调用JSP文件,$(this.getElementByXid('iframe1')).src("/x5/index2.jsp");注意JSP文件要放在UIsever目录中,调用的路径是"/x5/目录/文件上名. JSP",下载的模块中带有调用代码,可以直接修改,我是用resID来调用报表,就直接给参数赋值就行了。 paramMap.put("resID","31648"); 其中index1.jsp后台调用方法,index2.jsp是前台调用方法   接下来完善的地方 1、完成传参的( 已经完成) 2、iFrame的大小自动调整 [...]

第2章 报表模型开发指南

1.1  扩展函数 1.1.1   扩展的概念 报表工具与电子表格工具的最基本差异就是支持数据扩展。电子表格工具只能在每个单元格中填好需要的内容,并不能根据数据进行自动扩展。 以一个典型单行扩展的网格报表为例: 可以看到运行结果为: 我们可以看到,在excel设计的第五行(R5),数据集p1中的数据,通过select()函数进行纵向单行扩展,将一行扩展为四行。 但有时我们的一条数据可能并不全在一行显示,如下图显示,一条数据需要显示在多行上,这种类型的报表我们称之为卡片报表。 图 2.3  卡片报表运行结果图 如何才能简单灵活的指定报表的扩展方式?x5报表工具通过excel中的合并行的概念解决了这个问题。 图 2.4  卡片报表设计图 在卡片报表的设计时,将4-8行进行合并,这样报表工具会自动把4-8行当成一行进行处理,扩展将以这5行为一个单位进行。 如果我们这里不进行合并行的处理,会出现什么情况? 图 2.5  卡片报表运行结果图 可以看到报表工具就会按照单行扩展的原理进行处理,这是错误的。 以上两个例子分别展现了单行与多行两种扩展方式,但它们表达的概念其实是一样的。即是报表工具有别于表格工具的最基本区别——扩展。 当然除了常见的纵向扩展外,也可以进行横向扩展,控制它们的方式就是使用接下来介绍的扩展函数。 1.1.2    select()、selecth()函数 函数说明 从数据集的当前行集中选取符合条件的记录。 select()表示纵向扩展,selecth()表示横向扩展。 语法 datasetName.select(select_exp,filter_exp,sort_exp) datasetName.selecth(select_exp,filter_exp,sort_exp) 参数说明 [...]

第1章 报表模型概述

在任何一款应用系统中,报表都是最重要的一部分。 X5report 报表工具是一个功能完善、性能强健、成熟的商业智能软件产品。使用者可以通过报表设计器设计符合各种复杂需求的报表。并且包括支持多维饼图,折线图,柱图,仪表盘等二十几种统计图样式。X5report 报表工具拥有强大的报表展现能力;灵活的部署机制;而且无须在浏览器安装任何插件;特有的PDF打印控件实现了所见即所得的套打,分栏,分页等精确的报表打印。为企业的统计分析、数据中心、商业智能前端展现提供高性能,高效率的报表系统解决方案。 X5report采用JAVA开发,主要包含报表设计器与报表服务器两个部分。X5report报表与起步的X5平台一起使用。采用Excel作为报表设计器,非常简单,易于上手。 为了方便用户正确的使用X5report报表工具,我们编写了该用户手册。帮助用户更好的使用该工具进行报表设计与管理。 X5report报表工具主要包含两个部分:报表设计器、报表服务器 报表设计器:设计编辑报表,采用类EXCEL方式,继承了EXCEL的所有属性, 自带报表运算引擎,连接数据库后可预览打印报表,并可生成其它格式保存。 报表服务器:在后台提供统计报表运算的服务,开放各层次的 API 接口调用,由程序员调用生成报表。 图1.1  报表功能树图 本文由WeX5君整理,WeX5一款开源免费的html5开发工具,H5 App开发就用WeX5! 阅读其他app 开发相关文章:http://doc.wex5.com/?p=3443  

第6章 组织机构

1.1  概述 在企业中,组织是为了完成企业目标而形成的具有特定结构、分工协作的团队。组织模型就是用来定义企业的组织形式的模型,它以职责、权限的形式定义了企业成员、企业各个部门的作用与任务,同时提供灵活的结构以适应不同的企业或企业中不同的组织结构。 组织模型是业务模型的重要组成部分和基础,它是企业中组织机构计算机化的抽象定义,对应于一个业务模型,其组织模型是唯一的。X5平台中的组织机构模型的核心是组织(org)【注:组织(org)是一个泛化的机构概念,它可以是机构(ogn)、部门(dpt)、岗位(pos)、人员成员(psm)等形式】、人员(person)和角色(role),通过这三个核心元素就可以完备地描述组织机构,如图6.1。角色是权限的集合,角色能分配到组织(org)上。 图6.1  组织构成图 说明: 人员(person):人员分配到相关的组织后才具有相关的功能和数据权限(即角色),分配到组织下的人员称之为人员成员,一个人员可以分配到多个组织单元从而形成多个人员成员。 组织(org)只是一个泛化的抽象概念,组织单元可以从组织中继承出各种具体的组织,并扩展各个具体的属性。目前系统的组织包括:机构、部门、岗位、人员成员。 组织具有自动继承的能力,子组织自动继承父组织的所有权限。 角色只能授给组织。 企业的经营活动是由多个业务功能【业务功能:业务过程中的业务环节】组成的,业务功能首先分配到组织模型中的角色上,也就是说角色拥有了哪些业务功能,然后将角色分配给组织,从而形成业务分工即组织拥有业务功能。最后由组织模型中的人员登录业务运行平台,以人员成员的身份运行业务功能,实现企业经营活动。在这些业务功能中,有些是可以独立执行的,而大多是根据其逻辑关系串接组合在一起,形成一系列的经营过程,即业务流程,人员通过运行业务功能借以启动、执行、控制流程,最终实现企业的经营过程的运作。 图6.2  组织模型与模型体系各个部分的关系图 1.2  机构 机构(ogn)是对企业中各种单位的抽象,是组织(org)中的一种表现形式,机构是一个容器,它可以包含多个子组织。 机构可以被分配角色,机构的角色可以被它的子组织继承。 1.3  部门 部门(dpt)对应于企业的静态结构划分,由企业的实际部门设置情况来决定,是以传统的面向职能或者现在流行的面向过程与客户方式对机构进行的划分,是机构的主要组成部分。例如:某公司的行政、销售、技术等部门,以及各个科室等等,都可以认为是部门。 对应着企业的实际经营活动,部门下可以设置子部门和分配岗位。部门不能独立存在,必须从属于机构或上级部门。 1.4  岗位 岗位(pos)是组织(org)的一种特殊形式即一种组织单元。岗位具有组织的所有特性。岗位是组织中对具有特定分工组织单元的抽象,如:一个项目组,可以出现“项目经理”、“开发工程师”、“测试工程师”等岗位;在岗位下的人员同时就拥有了岗位所具备的所有功能及数据权限(即拥有了岗位的所有角色)。 1.5  人员 人员(person)--客观存在,在组织中从事具体工作的最小个体。将人员分配到组织机构中任何组织(org)下,形成一个新的组织单元,即人员成员(psm)。在组织模型中,只有成为人员成员才能使他(她)承担起相关的职责,实现他(她)的使命。人员登录业务运行平台后,只能以人员成员的身份运行系统,才能实现其特定的职责。如果登录人员承担了多个职责(对应多个人员成员),那么在处理工作上,不同的功能会根据功能的环境选择和本功能对应的人员成员。 图6.3  人员列表界面图 图6.4  人员详细信息界面图 1.6  角色和授权 角色(role)--指应用领域内一种权力和责任的语义综合体,可以是一个抽象概念,也可以是对应于实际系统中的特定语义体,比如组织内部的职务等。其本身并不能代表权限的大小,只是权限的集合,可以被用来分配给组织(org)。权限只能通过角色分配给到组织(org),不能被直接分配。 [...]

第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业务流程体系分为三部分,它们分别是业务流程定义,业务流程运行和业务流程实例(业务流程控制数据)。业务流程定义描述业务流程的整个过程和各种规则,从使用上说画的流程图和设置的流程规则就是业务流程定义。业务流程运行的核心是业务流程引擎,它解析业务流程定义,推进业务流程的运行,运行的结果就是业务流程实例。一个业务流程定义被运行一次就产生一个业务流程实例,在业务流程实例中包含若干待办任务。 5.2 业务流程定义 业务流程定义描述的是企业实现一个业务目标(业务审批)需要包含多少个环节步骤,各环节步骤间前后顺序和同步关系,各步骤由谁来处理等信息。抽象到业务模型上,步骤对应业务环节,顺序关系由连接弧定义,处理人对应执行者,处理要求对应到处理规则,所以业务流程定义是由环节,处理规则和连接弧组成。 业务过程中画在流程图上的业务环节,将以业务流程的方式使用待办任务作为入口来运行。此类业务环节需要在执行者收到待办任务以后,通过打开处理待办任务才可以运行业务环节。业务流程定义特指此类业务环节的定义,在业务过程中包含的没被画在流程图上的业务环节都是静态的业务环节,它们不包含在业务流程定义的范畴内。 5.2.1 启动规则 启动规则是在调用流程启动动作(startProcessQueryAction)时起作用,用来初始化业务流程实例的规则。启动规则不是必须设置,当它没有设置是会根据缺省的启动规则初始化业务流程。启动规则的详细描述,见5.4.1。 5.2.2 通知规则 通知规则是在调用流程结束动作(finishProcessAction)时或调用流程终止动作(abortProcessAction)时起作用的,用于给相关人产生通知待办任务的规则。通知规则不是必须设置的,当它没有设置时就表示不产生通知。通知规则的详细描述,见5.4.2。 5.3 业务流程环节 业务流程环节是业务流程里最基本最重要的组成元素,它描述业务流程中需要人为参与的处理,自动的处理和业务流程中路径的选择,分支和合并等。需要注意的是,所有业务流程环节定义的各种规则和条件都只有在业务流程执行讯问动作的时候起作用。 5.3.1 静态环节 业务流程中有两类环节:一类是非流程图上的环节,称之为静态环节;一类是流程图上的环节,称之为流程环节(后续介绍的都是流程环节)。 一般平台默认为每个业务流程生成一个mainActivity的静态环节,用来启动流程;通知规则中指向的环节,可以根据业务需求指定静态环节或流程环节。 5.3.2 开始环节 [...]

设计器组件属性编辑器开发案例讲解

 1. 什么是组件属性编辑器 组件属性编辑器是用来辅助开发者更友好设置属性值而提供的一种图形化的录入界面,表现如下图所示: 没有提供额外属性编辑器之前,表现为一个标准的输入框,如上图limit属性,提供额外属性编辑器后表现为下拉列表或者弹出对话框,如上图红色线条指向所示。  2. 列表类型编辑器开发案例   2.1 静态数据源方式 直接把选项数据定义在编辑器配置项中,称为静态数据源。 以组件$UI/system/components/justep/data/bizData的updateMode属性为例   步骤1:在组件配置文件的property-editors节点下定义编辑器配置文件,如: <property-editors> <property-editor name="updatemodeList" type="list" > <!--直接定义的静态数据 --> <static-data value="whereVersion,whereAll"/> </property-editor> </property-editors> updatemodeList 为编辑器的名称 ,type=“list” 表示编辑器为下拉选数据 static-data 节点 表示静态数据,value为静态数据列表   步骤2:绑定属性编辑器 <property [...]

微信支付入门教程

本文通过一个简单的微信支付案例介绍使用WeX5开发一个支持微信支付的功能的过程 注意:本文档适合3.1之前版本(包含3.1),因为3.2开始我们的插件已经支持了微信最新api和最新借口(wechat v3).所以随之js的api也有小部分变化。 1.新建一个mainActivity.w页面,添加一个按钮.用来点击调用微信支付 2.在mainActivity.w的js文件用引用微信插件 require("cordova!com.justep.cordova.plugin.weixin"); 3.在按钮click事件中添加如下事件代码 Model.prototype.weixinPayBtnClick = function(event) { var weixin = navigator.weixin; var traceID = justep.UUID.createUUID(); var traceNo = justep.UUID.createUUID(); var notifyUrl = "http://www.bex5.com"; var error = function(msg){ alert('支付异常:' [...]

第4章 业务逻辑

1.1  概述 业务逻辑模块主要用于编写业务逻辑,一般包含三个子模块:action(定义action和procedure)、code(业务逻辑的实现,一般使用java实现,有src,dsrc,lib)、fn(函数定义)。 1.2  Action定义 语法: <action name=" n" global="true" log-enabled="true" procedure=" "> <参数访问权限 name=" " type=" "/> …… </action> 说明: 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类为参数类型。 示例: <action name="startProcessAction" global="true" log-enabled="true" [...]

第3章 业务数据

1.1  概述 业务数据模块负责维护业务的数据。 主要包括本体与数据库表的映射信息(mapping)和数据库的连接配置信息。。 业务系统的持久存储层是ER数据库,业务系统需要知道如何把本体定义和数据库里的表结构相对应,这样系统就可以把业务数据的操作自动转换成相应的数据库操作,这个过程类似Hibernate实现的ORM过程,本体到物理表的映射也可以缩写为ORM,但这里的“O”是指本体(Ontology)。 1.2  数据模块定义 1.2.1   数据连接 目前支持的数据库类型主要是SQL Server、Oracle、 Sybase和DB2。默认情况下,对应的数据库是Oracle。 每一个数据模块都可以定义它自己的数据库连接配置,按照模块的继承原则子模块可以继承父模块的数据库连接配置。 语法: <config name="dataSource" value="连接参数"/> 实例: <config name="dataSource" value="java:comp/env/system" /> 说明:配置的JNDI名称和应用服务中设置的JNDI名称一致,例如 对tomcat下的Oracle数据的配置为“…\apache-tomcat\conf\server.xml”: <Resource name="system" auth="Container" type="javax.sql.DataSource" driverClassName="oracle.jdbc.driver.OracleDriver" url="jdbc:oracle:oci:@oracle73" username="sa" password="sa" maxActive="10" [...]