1.PE框架开发新功能所需的部分
2.PE框架工作流程(重要)
首先根据<transcation>中的id号,找到模板(template),然后再根据模板找到责任链(chain),一旦确认chain就按照流程图执行,从chain中执行command,执行到deletegatecommand后结束,跳到模板,再去执行<action>,然后跳转到相应的jsp页面。流程图如下:
无论一个交易的发送渠道是 HTTP 还是 TCP ,最终针对每一个渠道的Adapter 会将请求的 Form ( HTTP )或报文 (TCP) 转换成与渠道无关的 Context 。当渠道 Adapter 将数据转换为渠道无关的 Context 后,将控制权交给 PowerEngine 核心控制模块,根据该交易的交易 Id ,来确认该交易需要经过的处理过程。
1. 首先执行 Chain 中的一系列 Commands, 若有其中一个 Command 认为需结束处理,则处理立刻结束;
2. 当 Chain 执行到 Delegate Command 时,开始执行 Template ;
3. 不同的 Template 会调用不同的 Actions ,以完成实际的交易处理Context 是整个 Power Engine 框架的数据交换核心接口类。
v 可通过 GetData 方法来访问交易请求的数据要素,通过 SetData 方法来返回数据。
v HTTP 开发中,有 HttpServletContext 实现类,在基于 TCP/Socket 开发中有 TcpContext , 无论一个交易的发送渠道是 HTTP 还是TCP ,最终会将请求的 Form ( HTTP )或报文 (TCP) 转换成与渠道无关的Context 。
style:样式,用于判断输入数据的格式等。
chain:系统级的交易逻辑抽象,如:交易的权限、登陆控制、日志和输入检查等
Chain定义
<chain id= "chain id.">
<commands>
<ref>引用的command id.</ref>
</commands>
</chain>
common:chain下的操作,理解为命令(?)
<command id = "command id."> class= "Fullqualified class name of this Template"/>
Command
系统默认定义的commands
Delegate(授权)Command:每一个Chain必须有一个而且仅限于一个DelegateComand;
Validation(确认)Command:执行系统级的基于Style的有效性检查;
LoginControlCommand:用于控制用户访问访问服务的频率,主要用于登录交易。
RoleControlCommand:用于控制用户访问服务的权限,主要用于控制需要用户登录的交易的权限控制。对不需要用户登录的交易,不用该Command。
template: 对一组有类似处理流程的交易处理的抽象,定义交易内部的执行流程,如:复核交易、查询交易
Template定义
<template id= "模板ID" class="Full qualified class name of this Template" chain= "引用的责任链id">
交易级同名的Action将覆盖模板级的定义,例如:
<template id="sequenceTemplateOneAction"
class="com.csii.pe.template.ExecutableSequenceTemplate" chain= "chainForRoleControl"
<actions>
<ref name="act01">Placeholder</ref>
</actions>
</template>
<transaction id = "stransfer">
template="sequenceTemplateOneAction">
<actions>
<ref name="act01">StransferAction</ref>
</actions>
</transaction>
StransferAction将替换Placeholder.
Template
emptyTemplate(空模板)
pageLoaderTemplate(初始化模板)
queryTemplate(查询模板)
trsConfirmTemplate(确认模板)
twoPhaseTrsTemplate(防重复提交)
简而言之,根据交易ID可以唯一滴确认Template,根据Template可以卫衣地确认Chain,一旦确定了Chain,系统就按前面的流程图所示开始执行处理。
Transaction(事务)
一个业务处理功能的入口。
关键点:
交易ID
引用的模板
定义的action
数据校验
返回页面的渠道
<transaction id = "SubActsQry" template="queryTemplate">
<description>
@funcName 账户余额查询
@trsName 子账户余额列表查询
@author Larry
</description>
<actions>
<ref name= "action">BaseQueryAction</ref>
</actions>
<fields>
<field name="AcNo">ACAcNoStyle</field>
</fields>
<channels>
<channel type= "http">
<param name = "success">query/ActQry/SubActsQry</param>
</channel>
</channels>
</transaction>
Action(动作): 是 PowerEngine 业务处理的最小单元, Action 也是具体单个应用开发者需要直接面对的对象,通过 Action 实现交易单元处理,是交易的具体动作
@param (参数)
@ref (参考)
Action的定义
<action id = "action Id" class = "Full qualified class name of this action" parent = "BaseQueryAction">
<param name="property name">property value</param>
...
<ref name="property name">引用的对象的ID</ref>
</action>
Action只是一个Maker interface。为了Action能进行特定的处理,开发人员应该实现相应的interface(接口)
@init()初始化方法
@Execute() 初始化方法
@Submit() 执行方法
@Prepare()准备方法
Action
&BaseQueryAction(IbsQueryAction)基本查询功能
&BaseTwoPhaseAction(IbsTwoPhaseAction)基本两项功能
&CachedPagableQueryAction分页
PE主要配置文件
@core.xml 核心配置 说明:主要用于配置系统的核心参数,如Policy,Chain,Template等
@style.xml 类型配置 说明:定义用于有效性检查的Styles
@template.xml 模板配置
@chain.xml 链条配置
@action.xml 动作配置
@service.xml 说明:定义访问数据库,通讯等的服务
@transaction.xml 说明: 交易的定义
@http.xml 说明: HTTP渠道特有的定义
@tcp.xml 说明: TCP渠道特有的定义
配置文件的位置
建议在Java Source下建立/config,以存储配置文件。
sqlmap 是一个 SQL 射入工具,使得 sql 语句与程序代码分离
@关键点:
$命名空间
$SQL入参:parameterClass参数类
$返回值参数类型: resultClass ,resultMap
$动态SQL:dynamic 动态的
本文深入探讨了PE框架中的交易处理流程,包括模板、责任链、命令执行及配置文件的作用。详细介绍了如何根据交易ID确定模板、模板与责任链的关系,以及配置文件在PE框架中的应用。同时,阐述了Context、Action、Chain和Template的概念,并通过实例展示了如何在配置文件中定义交易、模板和动作。


5090

被折叠的 条评论
为什么被折叠?



