电子政务基础平台详解

上传人:第*** 文档编号:34062286 上传时间:2018-02-20 格式:DOC 页数:18 大小:221KB
返回 下载 相关 举报
电子政务基础平台详解_第1页
第1页 / 共18页
电子政务基础平台详解_第2页
第2页 / 共18页
电子政务基础平台详解_第3页
第3页 / 共18页
电子政务基础平台详解_第4页
第4页 / 共18页
电子政务基础平台详解_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《电子政务基础平台详解》由会员分享,可在线阅读,更多相关《电子政务基础平台详解(18页珍藏版)》请在金锄头文库上搜索。

1、电子政务基础平台详解第一章 基本架构1.1 编码出于集成的考虑,平台中所有需要编码的地方都采用 UTF-8 编码方式来处理数据。但有一个例外的地方,就是所有的 properties 文件都不是以 UTF-8 进行编码的。核心配置文件 src/wfc_config.properties 是 GBK 编码的,这是为了方便配置修改,对这个文件采用了本地化的编码格式。其它的 properties 文件皆以 ISO-8859-1 格式编码。1.2 配置系统主要配置文件为 src/wfc_config.properties,配置内容可以参考文件中的说明。该配置文件中的配置项可以通过 wfc.service

2、.config.Config 类来读取。1.3 Spring平台整体基于 Spring 框架,但不限于 Spring 框架。通过 Spring 的IoC、Annotation、AOP、AutoWired 等特性,可以很愉悦地构建整个平台框架。1.3.1 自动装配平台通过自动搜索的方式来进行类的装配,搜索的范围仅限于 package 以coral 开头的类,如果要自动装配其它 package 下的类,请对src/applicationContext.xml 中的 component-scan 进行修改。能被自动装配的类都具有以下 Annotation:Component、Service 、Con

3、troller、Repository。1.3.2 MVC推荐使用 Spring 的 MVC 实现,Spring 的 MVC 比较轻量级,非常灵活,并可以通过 Annotation 进行装配,避免了繁琐的配置。1.3.3 事务处理由于在平台中使用了各类数据访问层的技术,包括 JDBC、Hibernate 以及iBatis,所以在事务处理中必须使用 JTA 技术。使用 JTA 需要更改多处配置,首先需要在应用服务器中配置 Data Source(Connection Pool) ,并指定 JNDI;然后在 src/wfc_config.properties 中修改几个配置项,把 wfc.servi

4、ce.connection.mode设为 4,把 wfc.service.database.pool.jndi 设为指定的 JNDI;接着在src/applicationContext.xml 中配置 JNDI 形式的 dataSource,并配置 JTA 形式的transactionManager;最后通过在 ServiceImpl 类上用 Annotation 声明Transactional 就可以使该类的所有方法都具有事务的效果。1.3.4 缓存处理缓存处理一般使用 AOP 来实现,推荐使用 AspectJ 的 Annotation 方式来实现,具体例子可以参考 src/coral/in

5、tegration 下的类。1.3.5 WebServiceWebService 一般使用 CXF 来实现,通过对 Service 层进行 Annotation 方式的配置,可以很方便的创建 WebService。并不是所有的方法都能被声明成WebService,要注意该方法的参数和返回值是不是都是可序列化的,如果存在不能序列化的参数或返回值,那么生成的 WebService 接口在调用过程中是会报错的。具体例子可以参考 src/coral/clouddesktop/ConfigService 和ConfigServiceImpl。1.4 AppContext作为全局上下文的静态类,该类定义了

6、如下几个静态变量和静态方法,非常有用。其中 appPath 是应用的物理路径,webRootPath 是应用的 web 根路径。getBean 方法用于通过 Spring 的 id 或类名来获得类。具体参考 src/coral/base/app/AppContext。1.5 初始化操作在系统启动时会执行一系列系统初始化的操作,这些初始化操作都被写在一些初始化的类里,初始化类都实现了 src/coral/base/app/Initializer 接口,并且允许自动装配。如果需要在系统启动时执行相关的操作都可以通过这个方式来实现。具体例子可以参考 src/coral/base/app/CoralI

7、nitializer。1.6 会话在平台登录后,会话中将包含以下数据信息:session_user:当前登录用户信息,对象是一个com.wondersgroup.framework.security.bo.SecurityUser。session_org:当前登录用户所在的部门信息(数组) ,对象是一个数组,每一项为 com.wondersgroup.framework.organization.bo.OrganNode。session_ext_js_theme:当前登录用户使用的 js 模板,对象是一个coral.base.frame.customise.ExtJsTheme。session

8、_frame_theme:当前登录用户使用的界面框架,对象是一个coral.base.frame.customise.FrameTheme。session_menu_code:当前登录用户有权限访问的菜单 code 集合,对象是一个集合,每一项为 String,是菜单的编号。session_check_string:登录时记录的校验码,对象是一个 String。1.7 默认菜单生成平台通过 src/menu.xml 来生成默认的系统菜单,具体参见该文件中的说明操作。1.8 代码生成通过使用代码生成类可以由 PDM 文件或数据库生成 BO 类和 DAO 类,BO类和 DAO 类可以直接使用,访问

9、数据库是采用封装的 JDBC 方式。BO 类还可以在 Hibernate 下使用。具体使用方法参见 util/DaoGenerator。1.9 注意点1.9.1 Struts2 FilterCuteFramework 使用了 Struts2,Struts2 有个核心的 Filter 来预处理 request中提交的数据,这在通常情况下并不会影响其它的操作。但是在文件上传的操作中,该 Filter 会对文件流进行预处理,将文件流缓存到临时文件中,这样的话,其它代码再想从文件流中获取文件就获取不到了。所以平台提供了这样一个类src/coral/base/cuteframework/CuteStru

10、ts2Filter 来取代原生的 Struts2 Filter,这个filter 可以通过设置 excludedPath 来排除与 Struts2 无关的一级目录。如果在开发中新加了某个一级目录,一定要记得在这里进行配置,否则在文件上传处理中就会出现问题,即使没有文件上传,也会影响系统的处理速度。第二章 基础功能2.1 CuteFramework 相关功能平台底层复用了 CuteFramework 的各个相关功能,主要包括登录;统一用户管理中的用户帐号管理、用户组管理、组织机构管理;统一权限管理中的按用户授权、按群组授权、按组织授权、权限资源管理、身份认证管理;应用系统管理中的基础数据管理、门

11、户资源管理(菜单)等。2.2 页面级访问控制页面级访问控制采用了 XML 配置文件的方式来配置,配置文件为src/platform.function.xml。该文件中 function 元素与平台的菜单相对应,name属性为菜单的显示名称,permission 属性为菜单的代码。 page 元素为具体的url,该 url 属性为从根目录开始的完整路径,但不包含传递的参数。page 元素属于哪个菜单功能下,则将该 page 置于该菜单的子元素。没有出现在该 xml 文件中的 url,访问不需要权限。2.3 日志统一的日志处理接口为 src/coral/base/log/LogUtil。第三章 界

12、面框架3.1 登录新接入一个登录模块,需要做以下一些工作:1) 为新登录模块定一个编号,假设为 xxxxx。2) 定义一个 URL 为/login/xxxxx/login.do ,该 URL 负责跳转至登录的实际地址,实际地址要在/login/xxxxx/目录下。3) 登录处理提交给/login/login_process.do ,其中必须包含 username 和password 两个参数,如果要验证码,再提交 check 参数,如果要指定登录成功后的返回地址(AJAX 方式提交则无需该参数) ,则提交 view参数,view 通过 Spring MVC 来实现,所以一般情况下 view 值

13、为redirect:开头的跳转格式。3.2 框架目前框架有三种风格,Frame 风格、WebOS 风格和 Protlet 风格,这三种风格可以互为切换。框架主要处理菜单和工作台的展现形式。WebOS 风格中应用图标都在 CuteFramework 中的菜单管理中设置,可参考已设置过图标的菜单进行操作,能设置的图标请参见/WebRoot/frame/coral_widget/images/shortcuts 目录下的 PNG 文件。3.3 界面组件界面组件采用 EXTJS 作为基本框架,采用了页面渲染的方式进行实现,其中实现较为复杂,效率上也存在一定问题,一般情况下不推荐使用平台中的界面组件库。

14、如果要保持与平台界面风格一致,可以直接使用原生的 EXTJS 框架,或基于 CuteFramework 的 Widget 组件库。在平台的组件库常用的图标样式,可用于 INPUT 框,设置 icon_class 属性为 silk-XXXXX 即可,其中 XXXXX 的取值可以参见 doc/icon_class.png。第四章 工作流与表单4.1 关系概述工作流的环境中有一个数据容器,用于存放工作流运行过程中的数据,工作流的驱动过程中,在分支中将会使用这些数据作为判断条件。表单为数据容器提供业务数据。所以可以这么认为,用户通过填写表单,来驱动工作流运行,从而完成整个业务。4.2 工作流4.2.1

15、 概念4.2.1.1 流程与业务流程是定义,业务是流程的具体实例,一个流程可能有多个业务。流程在代码中一般称为 workflow,业务在代码中一般称为 business。4.2.1.2 结点与活动结点是流程的各个环节,是定义,活动是结点的具体实例。结点在代码中一般称为 node,活动在代码中一般称为 activity。4.2.1.3 活动与活动项一个活动具体分配给某个人即产生一个活动项,分配给 n 个人,则生成 n个活动项。活动项在代码中一般称为 activity item。待办的活动项与已经完成的活动项区别在于有没有完成时间。活动是否完成,取决于活动项的完成情况,默认情况仅需要一个活动项完成

16、,则活动完成,如果设置了操作条件,则判断条件是否满足,满足则活动完成。活动完成后则驱动流程。4.2.1.4 操作结点上可以定义若干操作,一个活动项只能选择其中一个操作进行处理。操作有几种类型,下表列出了几种类型操作的区别:暂存 只暂存当前表单,不作其它任何操作停留 处理完当前活动项,生成同结点新的活动项,但不驱动流程办理 处理完当前活动项并驱动流程驳回 处理完当前活动项,并退回上一结点(需要流程支持)终止 处理完当前活动项,并结束整个流程(需要流程支持)跳转 处理完当前活动项,并跳转到指定结点(需要流程支持)4.2.1.5 数据容器数据容器作为工作流中的重要组成部分,数据容器中存放了流程中产生的所有数据,格式为 XML。下面给出一个 XML 的示例。asdf2011-08-1533233av105审批产品开发市内交通费asdfsdafB1231112223334444.2.2 实现4.2.2.1 Flexibility仅含一个结点的工作流,该结点循环流转,永不终止,仅作测试用。4.2.2.2 C

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号