PE框架从入门到放弃_基础篇

PE开发基础:

开发平台PowerEngine:

开发新功能:

业务逻辑处理:

1、Transaction:交易
2、Chain:链、责任链
3、Command:命令
4、Template:模板
5、Action:动作

PE交易处理流程:

无论一个交易的发送渠道是HTTP还是TCP,最终针对每一个渠道的Adapter会将请求的Form(HTTP)或报文(TCP)转换成与渠道无关的Context。
当渠道Adapter将数据转换为渠道无关的Context后,将控制权交给PowerEngine核心控制模块,根据该交易的交易Id,来确认该交易需要经过的处理过程。
  1. 首先执行Chain中的一系列Commands,若有其中一个Command认为需结束处理,则处理立刻结束;
  2. 当Chain执行到Delegate Command时,开始执行Template;
  3. 不同的Template会调用不同的Actions,以完成实际的交易处理。
简言之,根据交易Id可以唯一地确定Template,根据Template可以唯一地确定Chain,一旦确定了Chain,系统就按流程图所示开始执行处理。

总结:首先根据<transcation>中的id号,找到模板(template),然后再根据模板找到责任链(chain),一旦确认chain就按照流程图执行,从chain中执行command,执行到deletegatecommand后结束,跳到模板,再去执行<action>,然后跳转到相应的jsp页面。(/posweb/WebContent/WEB-INF/zh_CN/pos/LoanBaseInformationQuery.jsp)
Transaction:
一个业务处理功能的入口。
关键点:
    交易id
    引用的模板
    定义的action
    数据交验
    返回页面的渠道
transaction定义:
[html]  view plain  copy
 
  1. <transaction id=“preManagerAdd" template="引用的模版Id">  
  2.         <!--交易级定义的Actions.由模版来确定这些Actions的调用方法。-->  
  3.         <actions>  
  4.             <ref name="act01" >交易级定义的Action</ref>             
  5.         </actions>  
  6.           
  7.         <!--对每一个域的有效性检查-->  
  8.         <fields>  
  9.             <field name="域名1">Style名称</field>  
  10.             。。。           
  11.         </fields>  
  12.         <!--渠道的定义-->  
  13.         <channels>  
  14.             <!--HTTP渠道的定义-->  
  15.             <channel type="http">  
  16.                 <param name="success">result.jsp</param>  
  17.         ......                
  18.             </channel>  
  19.         </channels>  
  20. </transaction>  
 
举例:posaction工程
/posaction/src/config/pos/trs/pos.xml
[html]  view plain  copy
 
  1. <transaction id="LoanBaseInformationQuery" template="queryTemplate">  
  2.     <description>  
  3.         @funcName  
  4.         @trsName 贷款基本信息查询  
  5.         @author  
  6.         @version 1.0  
  7.         @remark  
  8.         @fromPages  
  9.     </description>  
  10.     <actions>//交易级的action  
  11.         <ref name="action">LoanBaseInformationQueryAction</ref>  
  12.     </actions>  
  13.     <fields>  
  14.         <field name="ContractNo"></field>  
  15.     </fields>  
  16.     <channels>  
  17.         <channel type="http">  
  18.             <param name="success">pos/LoanBaseInformationQuery</param>  
  19.         </channel>  
  20.     </channels>  
  21. </transaction>  
  22. <action id="LoanBaseInformationQueryAction"  
  23.     class="com.csii.ibs.pos.action.LoanBaseInformationQueryAction" parent="BaseQueryAction">  
  24. </action>  
Template:
Template定义:
<template id="模版Id" class="Full qualified class name of this Template" chain="引用的责任链Id">
各个Template:
emptyTemplate(空模板):
pageLoaderTemplate(初始化模板):
queryTemplate(查询模板)
trsConfirmTemplate(确认模板)
twoPhaseTrsTemplate(防重复提交)
entryTrsWorkflow(审核提交模板)
 
*交易级同名的Action将覆盖模版级
 
/poscommon/src/config/template.xml
[html]  view plain  copy
 
  1. <template id="queryTemplate" class="com.csii.pe.template.ExecutableSequenceTemplate" chain="chainForRoleControlMV">  
  2.     <actions>//模板级的action  
  3.         <ref name="action">Placeholder</ref>  
  4.         <ref name="preAction">WriteQueryTrsJournal</ref>  
  5.     </actions>  
  6. </template>  
Chain:
系统级的交易逻辑抽象,如:交易的权限、登陆控制、日志和输入检查等 。
Chain定义:
<chain id="chain Id.">
<commands>
<ref>引用的command Id.</ref>
.......
</commands>
</chain>
-------------------------------------------------------------------------------------------------------------
/poscommon/src/config/chain.xml
[html]  view plain  copy
 
  1. <chain id="chainForRoleControlMV">  
  2.     <commands>  
  3.         <ref>MultiVersionViewCommand</ref>  
  4.         <ref>roleControlCommand</ref>  
  5.         <ref>validationCommand</ref>  
  6.         <ref>ruleCommand</ref>  
  7.         <ref>delegateCommand</ref>  
  8.         <ref>${chain.monitor}</ref>  
  9.     </commands>  
  10. </chain>
Command:

Command定义:

<command id="command Id." class=" Full qualified class name of this Template" />
系统默认定义的commands:
  • DelegateCommand:每一个Chain必须有一个而且仅限于一个DelegateComand;
  • ValidationCommand:执行系统级的基于Style的有效性检查;
  • LoginControlCommand:用于控制用户访问服务的频率,主要用于登录交易。
  • RoleControlCommand:用于控制用户访问服务的权限,主要用于控制需要用户登录的交易的权限控制。对不需要用户登录的交易,不用该Command。
/poscommon/src/config/chain.xml
[html]  view plain  copy
 
  1. //......  
  2. <command id="delegateCommand" class="com.csii.pe.chain.command.DelegateCommand" />  
  3. //.......  
Action:
Action是PowerEngine业务处理的最小单元,Action也是具体单个应用开发者需要直接面对的对象,通过Action实现交易单元处理,是交易的具体动作。
Action的定义:
<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>
 
Action只是一个Marker Interface。为了Action能进行特定的处理,开发人员应该实现相应的Interface。
init ()
Execute()
Submit()
Prepare()
 

Bean定义继承方式:

[html]  view plain  copy
 
  1. <action id="BaseQueryAction" class="com.csii.ibs.action.IbsQueryAction">  
  2.     <ref name="trsCodeResolver">hostTrsCodeResolver</ref>  
  3.     <ref name="returnCodeValidator">hostReturnCodeValidator</ref>  
  4.     <ref name="transportBean">${BaseQueryAction.hostTransportBean}</ref>  
  5. </action>  
  6. 继承  
  7. <action id="ActBalAction" class="com.csii.ibs.query.action.ActBalAction" parent="BaseQueryAction">  
  8. </action>  
  9.   
  10. 等同  
  11. <action id="ActBalAction" class="com.csii.ibs.query.action.ActBalAction" parent="BaseQueryAction">  
  12.     <ref name="trsCodeResolver">hostTrsCodeResolver</ref>  
  13.     <ref name="returnCodeValidator">hostReturnCodeValidator</ref>  
  14.     <ref name="transportBean">${BaseQueryAction.hostTransportBean}</ref>  
  15. </action>  

Action:

BaseQueryAction(IbsQueryAction)
BaseTwoPhaseAction(IbsTwoPhaseAction)
CachedPagableQueryAction
DBPagableQueryAction

/poscommon/src/config/action.xml
[html]  view plain  copy
 
  1. <action id="WriteQueryTrsJournal" class="com.csii.ibs.common.jnl.WriteQueryTrsJournal">  
  2.     <ref name="idFactory">idFactory</ref>  
  3.     <param name="jnlSql">common.insertQryLog</param>  
  4. </action>
## 标题
  • 9
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值