导航

.net XML引擎驱动事件概述(一)

Posted on 2006-09-11 11:13  Phono  阅读(2108)  评论(3编辑  收藏  举报
        最早接触xml配置文件驱动事件是在实习的时候,那时候恶毒的项目经理让我研究一个工作流引擎,鼎鼎大名的OSWORKFLOW,那东西是JAVA写的,唉~~太强人所难了....最后当然是可耻的失败鸟。
最近在研究业务架构的时候,偶尔发现了一个XML引擎驱动事件的程序,fm2.0的,倒不是为了报仇,只是我一直没弄明白到底xml配置是怎么驱动事件的。就看了看,多少有点收获,跟大家分享一下
         工欲善其事,必先利其器,所以首先,要有个好的XML读写方法集,我看了看好多大家可能都用得上,就放在这了, 当个参考资料
这是一段对应的XML配置文件片断
<Rule id="CalculateTotalPricing" useInferencing="False">
  
<Expression /> 
<Actions>
<Action actionId="StarTotalPrice" type="var">
  
<Match /> 
  
<Assign>(StarQty * StarPrice) - ((StarQty * StarPrice) * StarQtyDiscount)</Assign> 
  
</Action>
由此可以看出,读写功能都是基于结构化维护XML配置文件的,根据配置文件的格式把定制文件内的信息读入到引擎中,与给真实引擎添加燃料不同,从程序上讲就是用适当的业务逻辑制定引擎的具体运转方式,以便在驱动事件运行时根据业务逻辑作出正确的判断,以及按照要求运算和处理数据。随之而来的就是对业务规则对象的定义
    [Serializable]
    
public class RuleObject: IComparable
    
{
        
Instance data members

        
Properties

        
Ctors

        
Publics

        
Action Collection management

        
Indexer

        
IComparable Members

        
Sub-RuleObject Mangement
    }
同RULE同在的就是ACTION,不一定每个RULE都含有ACTION,但没有ACTION的RULE是模型而不是实体所以:
    public class Action
    
{
        
Instance data members

        
Properties

        
Ctors

        
Publics
        
        
Developer


    }
与此相同的还有触发事件,变量的定义,并需要一个统一的接口对他们进行查找,调用,和卸载的操作管理,其中每个管理类实例中通过管理一组不重复的ID来映射出类实体。在此就不做详述了
引擎中最重要的部分我认为是解析器,也可以说是简单的语法分析方法集,在面向对象的设计思路下,就要将他设计成一个类,也就是实现消化输入信息的功能。将在下一篇文章中具体介绍