1.认知
PE即PowerEngine
2.业务逻辑处理
1、Transaction:交易
2、Chain:链、责任链
3、Command:命令
4、Template:模板
5、Action:动作
== 在介绍之前先了解这几个业务逻辑的概念和职能 ==
- Transaction:交易
- 一个业务处理功能的入口。
关键点:
交易id
引用的模板
定义的action
数据校验
返回页面的渠道
transaction定义:
<transaction id=“preManagerAdd" template="引用的模版Id">
<!--交易级定义的Actions.由模版来确定这些Actions的调用方法。-->
<actions>
<ref name="act01" >交易级定义的Action</ref>
</actions>
<!--对每一个域的有效性检查-->
<fields>
<field name="域名1">Style名称</field>
。。。
</fields>
<!--渠道的定义-->
<channels>
<!--HTTP渠道的定义-->
<channel type="http">
<param name="success">result.jsp</param>
......
</channel>
</channels>
</transaction>
- Chain:链、责任链
- 系统级的交易逻辑抽象,如:交易的权限、登陆控制、日志和输入检查等 。
Chain定义:
<chain id="chain Id.">
<commands>
<ref>引用的command Id.</ref>
.......
</commands>
</chain>
-
Command:命令
-
系统默认定义的commands:
DelegateCommand:每一个Chain必须有一个而且仅限于一个DelegateComand;(重点)
ValidationCommand:执行系统级的基于Style的有效性检查;
LoginControlCommand:用于控制用户访问服务的频率,主要用于登录交易。
RoleControlCommand:用于控制用户访问服务的权限,主要用于控制需要用户登录的交易的权限控制。对不需要用户登录的交易,不用该Command。
Command定义:
<command id="command Id." class=" Full qualified class name of this Template" />
- Template:模板
- 各个Template:
emptyTemplate(空模板):
pageLoaderTemplate(初始化模板):
queryTemplate(查询模板)
trsConfirmTemplate(确认模板)
twoPhaseTrsTemplate(防重复提交)
entryTrsWorkflow(审核提交模板)
交易级同名的Action将覆盖模版级
Template定义:
<template id="模版Id" class="Full qualified class name of this Template" chain="引用的责任链Id">
- Action:动作
- Action是PowerEngine业务处理的最小单元,Action也是具体单个应用开发者需要直接面对的对象,通过Action实现交易单元处理,是交易的具体动作。
- Action只是一个Marker Interface。为了Action能进行特定的处理,开发人员应该实现相应的Interface(接口)。
init () //初始化
Prepare() //准备
Execute() //执行
Submit() //提交
Action的定义:
//定义动作的id和动作的完全限定类名
<action id=“action Id” class=“Full qualified class name of this action”>
//
<param name="property name">property value</param>
......
<ref name="property name">引用的对象的Id</ref>
......
</action>
3.PE交易处理流程
无论交易发送的是HTTP(httpservletcontext)还是TCP(tcpcontext)请求,最终都会被Adapter转换成渠道无关的Context.
当转换成Context时,将控制权交给pe的核心控制模板,根据该交易的id,确定该交易要经过的流程处理。
首先执行Chain中的一系列Commands,若有其中一个Command认为需结束处理,则处理立刻结束;
当Chain执行到Delegate Command时,开始执行Template;
不同的Template会调用不同的Actions,以完成实际的交易处理。
总结:首先根据中的id号,找到模板(template),然后再根据模板找到责任链(chain),一旦确认chain就按照流程图执行,从chain中执行command,执行到deletegatecommand后结束,跳到模板,再去执行,然后跳转到相应的jsp页面。
原文:https://blog.youkuaiyun.com/btt2013/article/details/50903471
版权声明:本文为博主原创文章,转载请附上博文链接!