<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 28,  comments - 13,  trackbacks - 0
    1.rulesWithDSL.drl文件的定義:
    package?com.mip.biz.operatebill.rules;

    import?com.mip.biz.operatebill.objects.ValueBean;
    import?org.apache.commons.lang.StringUtils;
    import?com.mip.core.utils.Log;

    global?com.mip.biz.operatebill.services.RulesService?operateRulesService;

    expander?rules.dsl;
    ????
    /**
    ?*?判斷操作項目內容中是否存在相應的標記字符串
    ?
    */

    function?
    boolean?itemContains(String?content,String?flag){
    ????
    boolean?res?=?StringUtils.contains(content,flag);
    ????
    return?res;
    }

    /**
    ?*?判斷操作項目內容中是否存在相應的標記字符串
    ?
    */

    function?
    boolean?judge(String?content,String?action,String?dev){
    ????
    ????
    //判斷指定的設備是否存在
    ????Log.debug("content:"+content);
    ????String[]?splitDevname?
    =?dev.split("");????
    ????
    boolean?exitsDevname?=?false;
    ????
    for(int?i=0;i<splitDevname.length;i++){????
    ????????String?oneDevname?
    =?splitDevname[i];
    ????????
    //Log.debug("oneDevname:"+oneDevname);
    ????????exitsDevname?=?StringUtils.contains(content,oneDevname);
    ????????
    if(exitsDevname)?break;
    ????}
    ????
    ????Log.debug(
    "exitsDevName:"+exitsDevname);

    ????String[]?splitAction?
    =?action.split("");
    ????
    boolean?exitsAction?=?false;
    ????
    for(int?i=0;i<splitAction.length;i++){
    ????????String?oneAction?
    =?splitAction[i];
    ????????
    //Log.debug("oneAction:"+oneAction);
    ????????exitsAction?=?StringUtils.contains(content,oneAction);
    ????????
    if(exitsAction)?break;
    ????}

    ????Log.debug(
    "exitsAction:"+exitsAction);
    ????????
    ????
    return?exitsAction?&&?exitsDevname;
    }


    rule?
    "拉閘操作時設置“操作標志”為RULES_IS_OPEN_SWITCH(2)"
    ????when?
    ????????
    "本次操作如果"?"拉或拉開或斷開"?"某某"?"刀閘或開關"
    ????then?
    ????????
    "設置標記為:"2
    end
    rule?
    "合閘操作時設置“操作標志”為RULES_IS_CLOSE_SWITCH(3)"
    ????when?
    ????????
    "本次操作如果"?"合或合上"?"某某"?"刀閘或開關"
    ????then?
    ????????
    "設置標記為:"3
    end
    rule?
    "拉或拉開##地刀操作設置“操作標志”為RULES_IS_OPEN_SWITCH_FLOOR(4)"
    ????when?
    ????????
    "本次操作如果"?"拉或拉開或斷開"?"某某"?"地刀"
    ????then?
    ????????
    "設置標記為:"4
    end
    rule?
    "合或合上##地刀操作設置“操作標志”為RULES_IS_CLOSE_SWITCH_FLOOR(5)"
    ????when?
    ????????
    "本次操作如果"?"合或合上"?"某某"?"地刀"
    ????then?
    ????????
    "設置標記為:"5
    end
    rule?
    "安裝地線操作時設置“操作標志”為RULES_IS_FIX_FLOOR_LINE(6)"
    ????when?
    ????????
    "本次操作如果"?"安裝"?"某某"?"地線"
    ????then?
    ????????
    "設置標記為:"6
    end
    rule?
    "拆除地線操作時設置“操作標志”為RULES_IS_UNFIX_FLOOR_LINE(7)"
    ????when?
    ????????
    "本次操作如果"?"拆除"?"某某"?"地線"
    ????then?
    ????????
    "設置標記為:"7
    end

    2.rules.dsl文件的定義

    [when]"本次操作如果" {action} "某某" {dev}=vb:ValueBean(itemc:content->(judge(itemc,{action},{dev})))
    [then]"設置標記為:"{level}=operateRulesService.setResult(vb,new Long({level}));

    3.RulesServiceImpl類
    package?com.mip.biz.operatebill.services.imp;

    import?org.drools.WorkingMemory;

    import?com.mip.biz.operatebill.objects.ValueBean;
    import?com.mip.biz.operatebill.services.RulesService;
    import?com.mip.core.jbossrules.DroolsTemplate;

    /**
    ?*?<p>?
    ?*?處理操作票中的一引起邏輯規則
    ?*?</p>
    ?*?
    @author?Libin
    ?*?@date?Mar?17,?2007
    ?*?
    @version?4.0
    ?*
    ?*?
    @see?AnotherClass
    ?
    */

    public?class?RulesServiceImpl?implements?RulesService?{

    ????
    /**?Drools的封裝便利函數,返回WorkingMemory?*/
    ????
    private?DroolsTemplate?operateReluesTemplate;
    ????
    ????
    /**
    ?????*?A?judge?function
    ?????*?<p>?運行規則?</p>
    ?????*?
    @param?valueBean
    ?????
    */

    ????
    public?void?runRules(ValueBean?valueBean){
    ????????WorkingMemory?wm?
    =?operateReluesTemplate.getWorkingMemory(valueBean);
    ????????
    //注入本類,提供各種簡便函數供規則中使用
    ????????if(wm.getGlobal(OPERATE_RULES_SERVICE_NAME)==null){
    ????????????wm.setGlobal(OPERATE_RULES_SERVICE_NAME,?
    this);
    ????????}

    ????????wm.fireAllRules();????????
    ????}

    ????
    ????
    /*?(非?Javadoc)
    ?????*?@see?com.mip.biz.operatebill.services.RulesService#setResult(com.mip.biz.operatebill.objects.ValueBean,?java.lang.Long)
    ?????
    */

    ????
    public?void?setResult(ValueBean?valueBean,?Long?result)?{
    ????????
    //?TODO?Auto-generated?method?stub
    ????????switch(result.intValue()){
    ????????????
    //拉閘操作
    ????????????case?RULES_IS_OPEN_SWITCH:
    ????????????????valueBean.setOpenSwitch(
    new?Boolean(true));
    ????????????????valueBean.setStress(
    new?Boolean(true));
    ????????????????
    break;
    ????????????
    //合閘操作
    ????????????case?RULES_IS_CLOSE_SWITCH:
    ????????????????valueBean.setCloseSwitch(
    new?Boolean(true));
    ????????????????valueBean.setStress(
    new?Boolean(true));
    ????????????????
    break;????????????????
    ????????????
    //拉地刀閘操作
    ????????????case?RULES_IS_OPEN_SWITCH_FLOOR:
    ????????????????valueBean.setOpenSwitchFloor(
    new?Boolean(true));
    ????????????????valueBean.setStress(
    new?Boolean(true));
    ????????????????
    break;
    ????????????
    //合地刀閘操作
    ????????????case?RULES_IS_CLOSE_SWITCH_FLOOR:
    ????????????????valueBean.setCloseSwitchFloor(
    new?Boolean(true));
    ????????????????valueBean.setStress(
    new?Boolean(true));
    ????????????????
    break;????
    ????????????
    //裝地線操作
    ????????????case?RULES_IS_FIX_FLOOR_LINE:
    ????????????????valueBean.setFixFloorLine(
    new?Boolean(true));
    ????????????????valueBean.setStress(
    new?Boolean(true));
    ????????????????
    break;
    ????????????
    //拆地線操作
    ????????????case?RULES_IS_UNFIX_FLOOR_LINE:
    ????????????????valueBean.setUnfixFloorLine(
    new?Boolean(true));
    ????????????????valueBean.setStress(
    new?Boolean(true));
    ????????????????
    break;????
    ????????}

    ????????valueBean.setResult(result);
    ????}

    ????
    ????
    /*?(非?Javadoc)
    ?????*?@see?com.mip.biz.operatebill.services.RulesService#isStress(com.mip.biz.operatebill.objects.ValueBean)
    ?????
    */

    ????
    public?boolean?isStress(ValueBean?valueBean)?{
    ????????
    //?TODO?Auto-generated?method?stub
    ????????return?valueBean.getStress();
    ????}



    ????
    /*?(非?Javadoc)
    ?????*?@see?com.mip.biz.operatebill.services.RulesService#isCloseSwith(com.mip.biz.operatebill.objects.ValueBean)
    ?????
    */

    ????
    public?boolean?isCloseSwitch(ValueBean?valueBean)?{
    ????????
    //?TODO?Auto-generated?method?stub
    ????????return?valueBean.getCloseSwitch();
    ????}


    ????
    public?boolean?isCloseSwitchFloor(ValueBean?valueBean)?{
    ????????
    //?TODO?Auto-generated?method?stub
    ????????return?valueBean.getCloseSwitchFloor();
    ????}


    ????
    public?boolean?isOpenSwitchFloor(ValueBean?valueBean)?{
    ????????
    //?TODO?Auto-generated?method?stub
    ????????return?valueBean.getOpenSwitchFloor();
    ????}

    ????
    ????
    /*?(非?Javadoc)
    ?????*?@see?com.mip.biz.operatebill.services.RulesService#isOpenSwitch(com.mip.biz.operatebill.objects.ValueBean)
    ?????
    */

    ????
    public?boolean?isOpenSwitch(ValueBean?valueBean)?{
    ????????
    //?TODO?Auto-generated?method?stub
    ????????return?valueBean.getOpenSwitch();
    ????}


    ????
    ????
    public?void?setOperateReluesTemplate(DroolsTemplate?operateReluesTemplate)?{
    ????????
    this.operateReluesTemplate?=?operateReluesTemplate;
    ????}


    ????
    public?boolean?isFixFloorLine(ValueBean?valueBean)?{
    ????????
    //?TODO?Auto-generated?method?stub
    ????????return?valueBean.getFixFloorLine();
    ????}


    ????
    public?boolean?isUnfixFloorLine(ValueBean?valueBean)?{
    ????????
    //?TODO?Auto-generated?method?stub
    ????????return?valueBean.getUnfixFloorLine();
    ????}

    }

    posted on 2007-03-19 19:41 Lib 閱讀(1489) 評論(2)  編輯  收藏 所屬分類: 開源框架


    FeedBack:
    # re: 應用Jboss rules規則引擎,以中文定義業務規則
    2008-04-02 19:11 | oracle
    請問在DRL檔裡能使用中文嗎?
    我試了許多方法好像不行?  回復  更多評論
      
    # re: 應用Jboss rules規則引擎,以中文定義業務規則
    2008-04-04 09:20 | Lib
    規則引擎文件要以UTF-8編碼  回復  更多評論
      
    <2025年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567



    我的JavaEye博客
    http://lib.javaeye.com


    常用鏈接

    留言簿(2)

    隨筆分類

    文章分類

    FLASH

    Java

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 七色永久性tv网站免费看| 亚洲?V无码成人精品区日韩| 青草青草视频2免费观看| 亚洲综合在线成人一区| 亚洲乱亚洲乱少妇无码| 最近最好的中文字幕2019免费| 日本不卡免费新一区二区三区 | 国产成人精品免费大全| 亚洲午夜无码毛片av久久京东热| 久久精品国产亚洲AV麻豆王友容| 免费一级毛片不卡不收费| 精品国产sm捆绑最大网免费站| 国产午夜免费高清久久影院| 二级毛片免费观看全程| 亚洲欧洲AV无码专区| 亚洲伊人久久大香线焦| 亚洲福利视频导航| 亚洲热妇无码AV在线播放| 国产黄色一级毛片亚洲黄片大全| 热久久精品免费视频| 搡女人真爽免费视频大全| 久视频精品免费观看99| 99精品视频免费在线观看| 一区二区三区四区免费视频 | 四虎国产精品免费永久在线| 色哟哟国产精品免费观看| 日韩欧美亚洲国产精品字幕久久久| 亚洲AV无码一区二区三区人| 亚洲第一网站免费视频| 亚洲精品在线免费观看视频| 亚洲综合在线成人一区| 亚洲麻豆精品果冻传媒| 亚洲视频在线观看视频| 亚洲黄色在线电影| 亚洲最大中文字幕| 亚洲午夜电影在线观看高清| 亚洲av无码一区二区三区观看| 亚洲av成人综合网| 亚洲人成网站999久久久综合| 亚洲精品永久在线观看| 最新亚洲人成无码网www电影|