state.groovy.drl

来自「drools 一个开放源码的规则引擎」· DRL 代码 · 共 78 行

DRL
78
字号
<?xml version="1.0"?>

<rule-set name="State Example"
          xmlns="http://drools.org/rules"
          xmlns:groovy="http://drools.org/semantics/groovy"
          xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
          xs:schemaLocation="http://drools.org/rules rules.xsd
                             http://drools.org/semantics/groovy groovy.xsd">

    <import>org.drools.examples.state.State</import>

    <rule name="Bootstrap">
        <parameter identifier="a">
            <class-field field="name" value="A">State</class-field>
        </parameter>

        <groovy:condition>a.state == "NOTRUN"</groovy:condition>

        <groovy:consequence>
            println "${a.name} finished"
            a.state = "FINISHED"
        </groovy:consequence>
    </rule>

    <rule name="AtoB" salience="30">
        <parameter identifier="a">
            <class-field field="name" value="A">State</class-field>
       </parameter>
        <parameter identifier="b">
            <class-field field="name" value="B">State</class-field>
        </parameter>

        <groovy:condition>a.state == "FINISHED"</groovy:condition>
        <groovy:condition>b.state == "NOTRUN"</groovy:condition>

        <groovy:consequence>
            println "${b.name} finished"
            b.state = "FINISHED"
        </groovy:consequence>
    </rule>

    <rule name="BtoC" salience="20">
        <parameter identifier="b">
            <class-field field="name" value="B">State</class-field>
        </parameter>
        <parameter identifier="c">
            <class-field field="name" value="C">State</class-field>
        </parameter>

        <groovy:condition>b.state == "FINISHED"</groovy:condition>
        <groovy:condition>c.state == "NOTRUN"</groovy:condition>

        <groovy:consequence>
            println "${c.name} finished"
            c.state = "FINISHED"
        </groovy:consequence>
    </rule>

    <rule name="BtoD" salience="10">
        <parameter identifier="b">
            <class-field field="name" value="B">State</class-field>
        </parameter>
        <parameter identifier="d">
            <class-field field="name" value="D">State</class-field>
        </parameter>

        <groovy:condition>b.state == "FINISHED"</groovy:condition>
        <groovy:condition>d.state == "NOTRUN"</groovy:condition>

        <groovy:consequence>
            println "${d.name} finished"
            d.state = "FINISHED"
        </groovy:consequence>
    </rule>

  </rule-set>

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?