myApps 平台系统架构
description
Transcript of myApps 平台系统架构
myApps 平台系统架构
一个可根据企业个性化需求快速搭建应用系统的工具平台一个跟企业共成长的平台一个成本低廉应用广泛的平台一个可与其他软件交互的平台一个面向最终用户的平台
何学迅2009.08.19
议程
1.myApps 平台设计规范
2.myApps 平台概要设计
3. 动态表单实现原理
4. 工作流实现原理
5. 移动方案实现原理
6. 下一步研发重点
myApps 平台系统设计规范
• 基于 J2EE 和 J2ME 开发,支持 JDK 1.4 或以上版本• 支持主流的关系型数据库
• 支持主流的应用服务器 .
• 支持主流的 CLDC( 手机 ) 和 CDC(PDA 、 PSP) 设备 .
myApps 平台系统设计规范
六 层 的 体 系 构 架
Action Form ( 负责数据的采集,将 Web 层收集回来的数据传递给 VO 对象,并为进一步处理做好准备 )
Process Bean( 此层实行主要的业务逻辑,通常可以选择采用 EJB 方式还是采用简单 Bean 方式 )
DAO 代理层 ( 通过设置这一层,使系统具备适应不同数据库及采用不同实现方式的能力 )
JDBC HibernateEntity Bean
Oracle ……
Proxy( 负责将 Action/ 动作请求进行分发,通过这一层的处理,将 Web 前端处理和业务逻辑清晰的分开 )
Web (Html,Ajax 的方式展示和收集数据 , 包括手机端 )
myApps 平台系统设计规范
所用到的各个方面的开源框架 :
Web 框架 : Webwork
Ajax 框架 : dwr
持久化技术 : Hibernate
AOP 框架 : Cglib
缓存框架 : ehcache
模 板 : Freemaker
报 表 : JERT
动态语言 : Rhino *
Html 解析类库 : HTML Parser *
PDF 导出 : iText
Web Service: Axis
日志服务 : log4j
连接池 : c3p0
规则引擎 : AST *
XML 操作类库 : dom4j
调度框架 : Quartz
Email: jmail
项目构建 : Maven
单元测试 : JUNIT
Word 、 Excel 导出 , 导入 : POI
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、前台系统、后台系统
域 应用
** **
模块*11 *
后台系统前台系统普通用户
• 通过域、用户名、密码登录• 使用软件
开发者
域管理员
超级管理员
• 定制应用、模块(画表单、工作流等)
• 创建用户、分配权限等• 采购应用等
• 管理平台的基础信息
myApps 平台概要设计
• 应用、模块的组成
角色 应用表单模块
流程
视图函数库
样式库任务组件
• myApps 平台可以支持多个应用,每个应用是一个运行时的实例。
• 一个应用包含有一个或多个模块,在应用上可以定义角色、函数、样式、组件等技术的工件,并应用于各个业
务模块。
• 一个模块是一组业务功能的集合,他包括表单、工作流、视图、定时任务等。
myApps 平台概要设计
• 应用的运行时、设计时的数据存储
报表
表单
Design Time
视图
流程
……
Authority
资源 /URL/Action
部门 用户 角色
权限
Instance 1TLK_表 1 TLK_表 2
TLK_表 3 TLK_表 4
Instance 2TLK_表 1 TLK_表 2
TLK_表 3 TLK_表 4
Instance 3
Instance ……
Running Time • 设计时数据——包含 Form 、 Vie
w 、 WorkFlow 的设计模板,仅在系统设计时被改变和存储;
• 授权类数据——包含 User 、 Role、 Dept信息,表现用户的基本信息、角色信息、组织架构,以及定义对系统各功能模块的访问权限;
• 运行时数据——包含 Counter 、 Document 、 WorkFlow State 数据,分别存储计数器、文档、工作流状态。考虑到需要将不同的实例(一个实例对应一个应用,比如可以为不同的应用系统分别建立不同的实例)逻辑上分开,所以对于每一个不同的实例,提供不同的数据源定义
myApps 平台概要设计
• iScript 简介• 采用开源项目 mozilla 的 Rhino 工程 http://www.mozilla.org/rhino/
• 支持 ECMA-262脚本语言规格
• 支持简单脚本生成
• 标准绑定常用的系统资源
• 支持函数库
• 支持交互式或者批处理执行脚本
• 支持动态编译
• 支持断点调试
• 支持单元测试
• 支持安全策略
myApps 平台概要设计
• 表单、工作流、脚本的交互(例 : 新键单据并保存)
持久化到数据库
工作流引擎 :: 启动实例
• 表单和流程,表单和视图绑定的通过操作实现;• 简单的业务逻辑通过公式定制器实现,公式定制器生成脚本,在脚本容器中执行;• 复杂的业务逻辑通过手工脚本实现。
Script: 流程分支脚本
User
Action: 新建表单
Script: 执行前脚本 Script: 值脚本Script: 选项脚
本
Action: 保存并提交
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 或者视图中的一组动作。如新建、修改、删除、提交等按钮。
Item FormField
TextInputFieldSelectFieldTextareaField
Document
1..*
1
1..*
1
View
Form
1..*
1
1..*
1* ** *
Action
NewAction
DeleteAction
SumbitAction
动态表单实现原理
• 动态表单实现的过程 1 – 显示
Form toHtml (documet)
Html Parser
Collection<Field>
FormField
toHtml (field)
Document
Item
4. 隐藏脚本、只读脚本等运算
2. 通过 Html Parser 解析回 FormField 的集合
1. 调用 Form 的 toHtml(document) 方法 3. 调用所有 Field 的 toHtml(document) 方法
动态表单实现原理
• 动态表单实现的过程2 – 保存
Formaction.save()
FormField
Item
DocumentDB
Html Parser
2. 通过页面得到 Form 对象
3. 通过 Html Parser 解析回 Document 对象
4. 通过 Dao 层将 document 对象持久化
1. 调用保存前脚本、校验脚本等
动态表单实现原理
• 支持的控件
• 文本输入框 • 数值输入框 • 日期输入框 • 多行文本框
• 多选框 • 下拉选择框 • 图片上传框 • 附件上传框
• Html编辑框 • 计算脚本 • 包含元素 • 组件元素
• 视图框 • 选项框 • 部门选择框 • Word编辑框 *
• OCR 组件 * • 电子签章组件 *
* 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 = FixingState: 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 = ClosedState: Rejected Action: T accepts rejection; new state = Closed Action: T updates bug and assigns to developer F; new state = FixingState: Pending Info Action: T submits info; new state = FixingState: Pending Approval Action: T rejects solution; new state = Fixing Action: T accepts solution; new state = ClosedState: Closed
• 采用状态机工作流的实现模式
Original State
New State
Event
工作流实现原理
• myApp 工作流的实现原理
• 采用 Applet 作为流程定制器
工作流实现原理
• 主要的类图
Relation
CompleteNode
AutoNode
TerminateNode
SubFlowNode
StartNode
Actor
*
*
*
Node
*
*
*
*
Reminder
SMSReminder EmailReminder
BFApplet WorkFlow
*
1
*
1
*
1
*
1
• 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 和移动终端都可使用。 Wri
te once, run any devices 。
– 支持国内主流的通信协议。
移动方案实现原理
移动运营商 内部管理系统
仓储管理 生产管理
InternetDial-up
WLANModem
GPRS
SMS
零售终端 服务队伍 销售队伍
终端拜访
分销商 批发商
运输管理
销售渠道管理 后勤物流管理物流配送
ERP 系统
Sales Order
Financial
InventoryBW
Production
• myApps 移动商务的场景
移动方案实现原理
• 移动应用与平台的表单 , 工作流的等天然的结合– 移动应用客户终端界面显示元素和事件按钮加载均是以动态化构建的原理来实现。
构建动态表单与流程处理,这些原本动态化的界面元素与事件按钮可以无缝结合。
myAppsFormXMLParserViewXMLParserMenuXMLParser
…
Xml
移动方案实现原理
• 移动应用的通信的协议 ( 国内 )
运营商 中国移动 中国联通 中国电信
代理名称 CMWAP UNIWAP CTWAP
支持情况 支持 支持 支持
直连名称 CMNET UNINET CTNET
支持情况 支持 支持 支持
移动方案实现原理
Service 后台看守线程,协调各类实例工作。
所有 Parser 类,都会根据服务器端通往获取到的 XML串,对应 Parser 成一个实例对象(如:Form,View,MenuPage 等)
• 移动应用的主要实现原理
移动方案实现原理
• 移动应用的主要的类图• View: 对应平台中的视图列表,
用于显示记录列表信息。 • Form :对应平台中的一个 Doc
ument记录对象,用于显示单条记录信息。
• 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