框架学习之道:PE框架简介

本文深入探讨了PE框架中的交易处理流程,包括模板、责任链、命令执行及配置文件的作用。详细介绍了如何根据交易ID确定模板、模板与责任链的关系,以及配置文件在PE框架中的应用。同时,阐述了Context、Action、Chain和Template的概念,并通过实例展示了如何在配置文件中定义交易、模板和动作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.PE框架开发新功能所需的部分

PE框架简介

2.PE框架工作流程(重要)

首先根据<transcation>中的id号,找到模板(template),然后再根据模板找到责任链(chain),一旦确认chain就按照流程图执行,从chain中执行command,执行到deletegatecommand后结束,跳到模板,再去执行<action>,然后跳转到相应的jsp页面。流程图如下:

PE框架简介

3.各部分简介:
 

    无论一个交易的发送渠道是 HTTP 还是 TCP ,最终针对每一个渠道的Adapter 会将请求的 Form ( HTTP )或报文 (TCP) 转换成与渠道无关的 Context 。当渠道 Adapter 将数据转换为渠道无关的 Context 后,将控制权交给 PowerEngine 核心控制模块,根据该交易的交易 Id ,来确认该交易需要经过的处理过程。

     1.  首先执行 Chain 中的一系列 Commands, 若有其中一个 Command 认为需结束处理,则处理立刻结束;

     2.  当 Chain 执行到 Delegate Command 时,开始执行 Template ;

   3.  不同的  Template 会调用不同的 Actions ,以完成实际的交易处理
 
  在core.xml中我们可以看到,其实有很多的Chains,Templates.在transaction.xml中也可以看到许多Actions.那PowerEngine是如何来确定执行哪一个Chain,template
  以及交易相关的Actions的呢? 为了明白这个问题,需要介绍一下Transaction Configuration.
 
  有别于许多开发框架,PowerEngine并没有一个直接与交易意义对应的执行单元,取而代之的是一个交易配置。
  
  简而言之,根据交易Id 就可以卫衣地确定Template,而根据Template可以唯一地确定Chain,一旦确定了Chain,系统就按图1所示开始执行处理了。
 
 

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 动态的

 

转载于:https://www.cnblogs.com/gaoguofeng/p/5328073.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值