380 likes | 563 Views
myApps 平台系统架构. 何学迅 2009.08.19. 一个可根据企业个性化需求快速搭建应用系统的工具平台 一个跟企业共成长的平台 一个成本低廉应用广泛的平台 一个可与其他软件交互的平台 一个面向最终用户的平台. 议程. 1.myApps 平台设计规范 2.myApps 平台概要设计 3. 动态表单实现原理 4. 工作流实现原理 5. 移动方案实现原理 6. 下一步研发重点. myApps平台系统 设计规范. 基于 J2EE 和 J2ME 开发,支持 JDK 1.4 或以上版本 支持主流的关系型数据库 支持主流的应用服务器 .
E N D
myApps平台系统架构 何学迅 2009.08.19 • 一个可根据企业个性化需求快速搭建应用系统的工具平台 • 一个跟企业共成长的平台 • 一个成本低廉应用广泛的平台 • 一个可与其他软件交互的平台 • 一个面向最终用户的平台
议程 1.myApps平台设计规范 2.myApps平台概要设计 3.动态表单实现原理 4.工作流实现原理 5.移动方案实现原理 6.下一步研发重点
myApps平台系统设计规范 • 基于J2EE和J2ME开发,支持JDK 1.4或以上版本 • 支持主流的关系型数据库 • 支持主流的应用服务器. • 支持主流的CLDC(手机)和CDC(PDA、PSP)设备.
myApps平台系统设计规范 Web (Html,Ajax的方式展示和收集数据,包括手机端) Action Form (负责数据的采集,将Web层收集回来的数据传递给VO对象,并为进一步处理做好准备 ) Proxy(负责将Action/动作请求进行分发,通过这一层的处理,将Web前端处理和业务逻辑清晰的分开) Process Bean(此层实行主要的业务逻辑,通常可以选择采用EJB方式还是采用简单Bean方式) DAO代理层 (通过设置这一层,使系统具备适应不同数据库及采用不同实现方式的能力) JDBC Hibernate Oracle …… Entity Bean 六 层 的 体 系 构 架
myApps平台系统设计规范 所用到的各个方面的开源框架: Web Service: Axis 日志服务: log4j 连接池: c3p0 规则引擎: AST * XML操作类库: dom4j 调度框架: Quartz Email: jmail 项目构建: Maven 单元测试: JUNIT Word、Excel导出,导入: POI Web框架: Webwork Ajax框架: dwr 持久化技术: Hibernate AOP框架: Cglib 缓存框架: ehcache 模 板: Freemaker 报 表: JERT 动态语言: Rhino * Html解析类库: HTML Parser * PDF导出: iText
myApps平台系统设计规范 开 源 项 目 开源项目名称: OBPM 开源项目网址: http://sourceforge.net/projects/obpm/ 开发工具: Eclipse SVN地址: https://obpm.svn.sourceforge.net/svnroot/obpm/trunk/platform/ 最新版本: 2.0.1b
myApps平台概要设计 1.myApps平台设计规范 2.myApps平台概要设计 3.动态表单实现原理 4.工作流实现原理 5.移动方案实现原理 6.下一步研发重点
myApps平台概要设计 开发者 普通用户 超级管理员 域管理员 1、企业域、应用、模块 • 应 用:应用是一套完整的软件组成单位,它有1个或多个的模块组成,它有单独的角色架构、菜单、开发组件、函数库等组成。 • 模 块:模块是一套完整的功能组成,它可以有1个或多个动态表单、工作流、报表等组成。 • 企业域:企业域是前台用户的组成单位,他有单独的组织架构和用户管理。 2、前台系统、后台系统 • 定制应用、模块(画表单、工作流等) 后台系统 前台系统 • 创建用户、分配权限等 • 采购应用等 • 通过域、用户名、密码登录 • 使用软件 • 管理平台的基础信息
myApps平台概要设计 模块 应用 角色 表单 流程 视图 函数库 样式库 组件 任务 • 应用、模块的组成 • myApps平台可以支持多个应用,每个应用是一个运行时的实例。 • 一个应用包含有一个或多个模块,在应用上可以定义角色、函数、样式、组件等技术的工件,并应用于各个业务模块。 • 一个模块是一组业务功能的集合,他包括表单、工作流、视图、定时任务等。
myApps平台概要设计 Instance 2 Instance 1 Design Time TLK_表1 TLK_表1 TLK_表2 TLK_表2 表单 视图 TLK_表3 TLK_表3 TLK_表4 TLK_表4 流程 …… 报表 Authority 资源/URL/Action 部门 用户 角色 权限 • 应用的运行时、设计时的数据存储 • 设计时数据——包含Form、View、WorkFlow的设计模板,仅在系统设计时被改变和存储; • 授权类数据——包含User、Role、Dept信息,表现用户的基本信息、角色信息、组织架构,以及定义对系统各功能模块的访问权限; • 运行时数据——包含Counter、Document、WorkFlow State数据,分别存储计数器、文档、工作流状态。考虑到需要将不同的实例(一个实例对应一个应用,比如可以为不同的应用系统分别建立不同的实例)逻辑上分开,所以对于每一个不同的实例,提供不同的数据源定义 Running Time Instance 3 Instance ……
myApps平台概要设计 • iScript 简介 • 采用开源项目mozilla的Rhino工程 http://www.mozilla.org/rhino/ • 支持ECMA-262脚本语言规格 • 支持简单脚本生成 • 标准绑定常用的系统资源 • 支持函数库 • 支持交互式或者批处理执行脚本 • 支持动态编译 • 支持断点调试 • 支持单元测试 • 支持安全策略
myApps平台概要设计 • 表单、工作流、脚本的交互(例:新键单据并保存) Action: 新建表单 Action: 保存并提交 Script: 值脚本 Script: 选项脚本 Script: 校验脚本 Script: 执行前脚本 持久化到数据库 Script:流程分支脚本 工作流引擎:: 启动实例 • 表单和流程,表单和视图绑定的通过操作实现; • 简单的业务逻辑通过公式定制器实现,公式定制器生成脚本,在脚本容器中执行; • 复杂的业务逻辑通过手工脚本实现。
议程 1.myApps平台设计规范 2.myApps平台概要设计 3.动态表单实现原理 4.工作流实现原理 5.移动方案实现原理 6.下一步研发重点
动态表单实现原理 • myApps动态表单的特点 • 完全基于Web的WYSIWYG的编辑器 • 无需代码实现、打包、发布 • 支持自定义组件 • 支持宏脚本运行 • 支持Ajax • 支持多语言 • 支持短信填单、流程处理 • 支持移动终端接入
动态表单实现原理 模板 + 数据 解析器 • 表单+模板的实现原理 • 模板:通过所见即所得的编辑器,基于Html并扩展其标签库; • 数据:在表单定义过程中,建立动态的数据存储结构; • 解析器:通过模板的Html元素并扩展其标签,解析回Java对象; • 表单: 模板和数据通过解析器组成表单的Html形式。
动态表单实现原理 • 动态表单的主要结构 • Document: 代表一个实体数据。例如一份请假单就是一个document。 • Item: 代表一个实体数据中的一个属性。一个document可以有多个Item,例如姓名就是请假单document中的一个Item。 • Form: 代表一个实体的表达样式,也就是说在页面上面的表单方式。 • FormField: 代表一个实体属性的表单样式,一个Form包含多个FormField.如它是一个输入框、选择框、备注框。 • Views: 代表document的列表方式的表单展示,同时可以作为简单的报表实现,例如待审批请假单列表就是一个View。 • Action: 代表在Form或者视图中的一组动作。如新建、修改、删除、提交等按钮。
动态表单实现原理 • 动态表单实现的过程1 –显示 2. 通过Html Parser解析回FormField的集合 toHtml (documet) Html Parser 3.调用所有Field的toHtml(document)方法 1.调用Form的toHtml(document)方法 toHtml (field) 4. 隐藏脚本、只读脚本等运算
动态表单实现原理 3. 通过Html Parser解析回Document对象 • 动态表单实现的过程2 –保存 2. 通过页面得到Form对象 action.save() Html Parser 1. 调用保存前脚本、校验脚本等 DB 4. 通过Dao层将document对象持久化
动态表单实现原理 • 支持的控件 * Word组件、OCR组件、电子签章组件提供接口可以特定的组件整合。
动态表单实现原理 • 支持的动作 • 支持的脚本类型 表单:保存前脚本 字段:值脚本、选项脚本、校验脚本、隐藏脚本、只读脚本 操作:操作前脚本、操作后脚本、隐藏脚本
动态表单实现原理 • 视图的定义 • 定义显示内容 • 表单列: 直接显示表单的内容. • 脚本模式: 通过脚本对表单的内容进行计算或者转换 (如: “010”-> “北京”) • 定义显示范围 • 设计模式: 通过公式定义器的模式; • DQL模式: 查询微语言DQL(类是SQL语法),为检索提供全面的灵活性和可扩展性,基于AST的规则解析。 $formname=‘卖场数据收集系统/产品主数据/产品信息管理’and 产品分类 = ‘空调’ • SQL模式: 数据库原生的SQL语句。
动态表单实现原理 • 支持的SMS的填单 • 支持SMS格式的定制,在表单内定制短信格式 • 支持通过SMS启动流程 • 支持不同SP的绑定
议程 1.myApps平台设计规范 2.myApps平台概要设计 3.动态表单实现原理 4.工作流实现原理 5.移动方案实现原理 6.下一步研发重点
工作流实现原理 • myApps工作流的特点 • 完全基于Web的WYSIWYG的编辑器; • 无需代码实现、打包、发布; • 采用状态机的模式、侧重人和系统的交互; • 与动态表单天然整合,能在动态定义流程过程中表单的处理和权限。 • 支持服务器端的宏语言,支持复杂的流程分支判断; • 提供常用ERP接口和其它业务系统进行整合; • 支持移动设备的接入。
工作流实现原理 • myApp工作流的实现原理 • 采用状态机工作流的实现模式 State: Initial Action: T adds bug details Action: T assigns to developer D; new state = Fixing State: Fixing Action: D assigns to developer E Action: D rejects bug to T; new state = Rejected Action: D requests info; new state = Pending Info Action: D submits solution; new state = Pending Approval Action: T withdraws bug; new state = Closed State: Rejected Action: T accepts rejection; new state = Closed Action: T updates bug and assigns to developer F; new state = Fixing State: Pending Info Action: T submits info; new state = Fixing State: Pending Approval Action: T rejects solution; new state = Fixing Action: T accepts solution; new state = Closed State: Closed Original State Event New State
工作流实现原理 • myApp工作流的实现原理 • 采用Applet作为流程定制器
工作流实现原理 • 主要的类图 • BFApplet: 流程定制器的applet类 • WorkFlow: 流程定义类,他包含流程中的状态和动作等。 • Actor: 流程中的步骤、包括审批角色,审批的送出策略、进入策略、通知/催办策略; • Node: 代表流程中的状态,如开始节点、结束节点、自动节点、子流程节点; • Relation: 代表状态机中的动作,执行动作的条件和动作的实现有iScript实现 • Reminder: 流程的提醒器。
工作流实现原理 • 工作流运行时状态 • WF Runner——工作流处理的对外接口,需要用到工作流的调用均通过此对象完成; • State Machine——工作流状态机的实现,是整个工作流实现系统的核心,具体说明参见API文档; • Actor RT——当前处理者运行时状态; • Actor HIS——历史处理者处理历史纪录; • Flow StateRT——流程当前状态,比如:挂起、运行等; • NodeRT——当前节点运行时状态;一个Node可以对应多个Actor; • RelationHIS——流程路径处理历史纪录; • 其他几个类均为实现WorkFlow运行所需要的辅助功能类。
议程 1.myApps平台设计规范 2.myApps平台概要设计 3.动态表单实现原理 4.工作流实现原理 5.移动方案实现原理 6.下一步研发重点
移动方案实现原理 • myApps移动商务的特点 • 采用J2ME开发,支持所有带Java虚拟机的移动设备,包括: • 支持主流的CLDC (Connected Limited Device Configuration,如手机、饭店手持点菜设备等); • 支持主流的CDC (Connected Limited Device Configuration,如PDA 、PSP等) ; • 与平台的表单,工作流的等天然的结合;一次开发,Web和移动终端都可使用。Write once, run any devices。 • 支持国内主流的通信协议。
移动方案实现原理 移动运营商 内部管理系统 GPRS SMS Internet Dial-up WLAN 零售终端 销售队伍 服务队伍 ERP系统 终端拜访 仓储管理 Production Sales Order 分销商 批发商 Financial 运输管理 Inventory 生产管理 BW 物流配送 后勤物流管理 销售渠道管理 • myApps移动商务的场景
移动方案实现原理 • 移动应用与平台的表单,工作流的等天然的结合 • 移动应用客户终端界面显示元素和事件按钮加载均是以动态化构建的原理来实现。构建动态表单与流程处理,这些原本动态化的界面元素与事件按钮可以无缝结合。 FormXMLParser ViewXMLParser MenuXMLParser … myApps Xml
移动方案实现原理 • 移动应用的通信的协议(国内)
移动方案实现原理 • 移动应用的主要实现原理 • Service后台看守线程,协调各类实例工作。 • 所有Parser类,都会根据服务器端通往获取到的XML串,对应Parser成一个实例对象(如:Form,View,MenuPage等)
移动方案实现原理 • 移动应用的主要的类图 • View:对应平台中的视图列表,用于显示记录列表信息。 • Form:对应平台中的一个Document记录对象,用于显示单条记录信息。 • MenuPage:对应菜单列表,用于显示菜单项。 • MbTextField,MbTextAreaField,MbRadioField,MbSelectField,MbCheckField,MbDateField都属于扩展组件类,分别对应平台中的TextField, TextAreaField, RadioField, SelectField, CheckField, DateField对象。
议程 1.myApps平台设计规范 2.myApps平台概要设计 3.动态表单实现原理 4.工作流实现原理 5.移动方案实现原理 6.下一步研发重点
下一步研发重点 • 下一步研发重点 • C/S客户端 • Dreamweaver等插件 • 通过工作流进行企业应用集成(EAI) • 支持Wap客户端,各厂家的SDK,支持更多的手机终端 • 突破J2ME组件限制
谢 谢 !! 2009-08-19