PE框架学习

Posted nizuimeiabc1

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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>








以上是关于PE框架学习的主要内容,如果未能解决你的问题,请参考以下文章

pe框架菜单入门

pe框架大观

pe框架的路由返文件

pe框架自定义jsp标签

pe框架的配报文

PE框架源码分析:业务流