⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 waltz.drl

📁 drools 一个开放源码的规则引擎
💻 DRL
📖 第 1 页 / 共 3 页
字号:
        <java:condition>junction.getP2( ) == edge2.getP2( )</java:condition>
        <java:condition>junction.getP1( ) == edge3.getP2( )</java:condition>
        <java:condition>"B".equals( edge1.getLabel( ) )
                     || "-".equals( edge1.getLabel( ) )
        </java:condition>
        <java:condition>null == edge2.getLabel( )</java:condition>
        <java:consequence>
            edge2.setLabel( "+" );
            drools.modifyObject ( edge2 );
            edge3.setLabel( edge1.getLabel( ) );
            drools.modifyObject ( edge3 );
        </java:consequence>
    </rule>

    <rule name="label_arrow-2B">
        <parameter identifier="stage"><class>Stage</class></parameter>
        <parameter identifier="junction"><class>Junction</class></parameter>
        <parameter identifier="edge1"><class>Edge</class></parameter>
        <parameter identifier="edge2"><class>Edge</class></parameter>
        <parameter identifier="edge3"><class>Edge</class></parameter>
        <java:condition>"labeling".equals( stage.getValue( ) )</java:condition>
        <java:condition>"arrow".equals( junction.getType( ) )</java:condition>
        <java:condition>junction.getBasePoint( ) == edge1.getP1( )</java:condition>
        <java:condition>junction.getBasePoint( ) == edge2.getP1( )</java:condition>
        <java:condition>junction.getBasePoint( ) == edge3.getP1( )</java:condition>
        <java:condition>junction.getP3( ) == edge1.getP2( )</java:condition>
        <java:condition>junction.getP2( ) == edge2.getP2( )</java:condition>
        <java:condition>junction.getP1( ) == edge3.getP2( )</java:condition>
        <java:condition>"B".equals( edge1.getLabel( ) )
                     || "-".equals( edge1.getLabel( ) )
        </java:condition>
        <java:condition>null == edge3.getLabel( )</java:condition>
        <java:consequence>
            edge2.setLabel( "+" );
            drools.modifyObject ( edge2 );
            edge3.setLabel( edge1.getLabel( ) );
            drools.modifyObject ( edge3 );
        </java:consequence>
    </rule>

    <rule name="label_arrow-3A">
        <parameter identifier="stage"><class>Stage</class></parameter>
        <parameter identifier="junction"><class>Junction</class></parameter>
        <parameter identifier="edge1"><class>Edge</class></parameter>
        <parameter identifier="edge2"><class>Edge</class></parameter>
        <parameter identifier="edge3"><class>Edge</class></parameter>
        <java:condition>"labeling".equals( stage.getValue( ) )</java:condition>
        <java:condition>"arrow".equals( junction.getType( ) )</java:condition>
        <java:condition>junction.getBasePoint( ) == edge1.getP1( )</java:condition>
        <java:condition>junction.getBasePoint( ) == edge2.getP1( )</java:condition>
        <java:condition>junction.getBasePoint( ) == edge3.getP1( )</java:condition>
        <java:condition>junction.getP1( ) == edge1.getP2( )</java:condition>
        <java:condition>junction.getP2( ) == edge2.getP2( )</java:condition>
        <java:condition>junction.getP3( ) == edge3.getP2( )</java:condition>
        <java:condition>"+".equals( edge1.getLabel( ) )</java:condition>
        <java:condition>null == edge2.getLabel( )</java:condition>
        <java:consequence>
            edge2.setLabel( "-" );
            drools.modifyObject ( edge2 );
            edge3.setLabel( "+" );
            drools.modifyObject ( edge3 );
        </java:consequence>
    </rule>

    <rule name="label_arrow-3B">
        <parameter identifier="stage"><class>Stage</class></parameter>
        <parameter identifier="junction"><class>Junction</class></parameter>
        <parameter identifier="edge1"><class>Edge</class></parameter>
        <parameter identifier="edge2"><class>Edge</class></parameter>
        <parameter identifier="edge3"><class>Edge</class></parameter>
        <java:condition>"labeling".equals( stage.getValue( ) )</java:condition>
        <java:condition>"arrow".equals( junction.getType( ) )</java:condition>
        <java:condition>junction.getBasePoint( ) == edge1.getP1( )</java:condition>
        <java:condition>junction.getBasePoint( ) == edge2.getP1( )</java:condition>
        <java:condition>junction.getBasePoint( ) == edge3.getP1( )</java:condition>
        <java:condition>junction.getP1( ) == edge1.getP2( )</java:condition>
        <java:condition>junction.getP2( ) == edge2.getP2( )</java:condition>
        <java:condition>junction.getP3( ) == edge3.getP2( )</java:condition>
        <java:condition>"+".equals( edge1.getLabel( ) )</java:condition>
        <java:condition>null == edge3.getLabel( )</java:condition>
        <java:consequence>
            edge2.setLabel( "-" );
            drools.modifyObject ( edge2 );
            edge3.setLabel( "+" );
            drools.modifyObject ( edge3 );
        </java:consequence>
    </rule>

    <rule name="label_arrow-4A">
        <parameter identifier="stage"><class>Stage</class></parameter>
        <parameter identifier="junction"><class>Junction</class></parameter>
        <parameter identifier="edge1"><class>Edge</class></parameter>
        <parameter identifier="edge2"><class>Edge</class></parameter>
        <parameter identifier="edge3"><class>Edge</class></parameter>
        <java:condition>"labeling".equals( stage.getValue( ) )</java:condition>
        <java:condition>"arrow".equals( junction.getType( ) )</java:condition>
        <java:condition>junction.getBasePoint( ) == edge1.getP1( )</java:condition>
        <java:condition>junction.getBasePoint( ) == edge2.getP1( )</java:condition>
        <java:condition>junction.getBasePoint( ) == edge3.getP1( )</java:condition>
        <java:condition>junction.getP3( ) == edge1.getP2( )</java:condition>
        <java:condition>junction.getP2( ) == edge2.getP2( )</java:condition>
        <java:condition>junction.getP1( ) == edge3.getP2( )</java:condition>
        <java:condition>"+".equals( edge1.getLabel( ) )</java:condition>
        <java:condition>null == edge2.getLabel( )</java:condition>
        <java:consequence>
            edge2.setLabel( "-" );
            drools.modifyObject ( edge2 );
            edge3.setLabel( "+" );
            drools.modifyObject ( edge3 );
        </java:consequence>
    </rule>

    <rule name="label_arrow-4B">
        <parameter identifier="stage"><class>Stage</class></parameter>
        <parameter identifier="junction"><class>Junction</class></parameter>
        <parameter identifier="edge1"><class>Edge</class></parameter>
        <parameter identifier="edge2"><class>Edge</class></parameter>
        <parameter identifier="edge3"><class>Edge</class></parameter>
        <java:condition>"labeling".equals( stage.getValue( ) )</java:condition>
        <java:condition>"arrow".equals( junction.getType( ) )</java:condition>
        <java:condition>junction.getBasePoint( ) == edge1.getP1( )</java:condition>
        <java:condition>junction.getBasePoint( ) == edge2.getP1( )</java:condition>
        <java:condition>junction.getBasePoint( ) == edge3.getP1( )</java:condition>
        <java:condition>junction.getP3( ) == edge1.getP2( )</java:condition>
        <java:condition>junction.getP2( ) == edge2.getP2( )</java:condition>
        <java:condition>junction.getP1( ) == edge3.getP2( )</java:condition>
        <java:condition>"+".equals( edge1.getLabel( ) )</java:condition>
        <java:condition>null == edge3.getLabel( )</java:condition>
        <java:consequence>
            edge2.setLabel( "-" );
            drools.modifyObject ( edge2 );
            edge3.setLabel( "+" );
            drools.modifyObject ( edge3 );
        </java:consequence>
    </rule>

    <rule name="label_arrow-5A">
        <parameter identifier="stage"><class>Stage</class></parameter>
        <parameter identifier="junction"><class>Junction</class></parameter>
        <parameter identifier="edge1"><class>Edge</class></parameter>
        <parameter identifier="edge2"><class>Edge</class></parameter>
        <parameter identifier="edge3"><class>Edge</class></parameter>
        <java:condition>"labeling".equals( stage.getValue( ) )</java:condition>
        <java:condition>"arrow".equals( junction.getType( ) )</java:condition>
        <java:condition>junction.getBasePoint( ) == edge1.getP1( )</java:condition>
        <java:condition>junction.getBasePoint( ) == edge2.getP1( )</java:condition>
        <java:condition>junction.getBasePoint( ) == edge3.getP1( )</java:condition>
        <java:condition>junction.getP2( ) == edge1.getP2( )</java:condition>
        <java:condition>junction.getP1( ) == edge2.getP2( )</java:condition>
        <java:condition>junction.getP3( ) == edge3.getP2( )</java:condition>
        <java:condition>"-".equals( edge1.getLabel( ) )</java:condition>
        <java:condition>null == edge3.getLabel( )</java:condition>
        <java:consequence>
            edge2.setLabel( "+" );
            drools.modifyObject ( edge2 );
            edge3.setLabel( "+" );
            drools.modifyObject ( edge3 );
        </java:consequence>
    </rule>

    <rule name="label_arrow-5B">
        <parameter identifier="stage"><class>Stage</class></parameter>
        <parameter identifier="junction"><class>Junction</class></parameter>
        <parameter identifier="edge1"><class>Edge</class></parameter>
        <parameter identifier="edge2"><class>Edge</class></parameter>
        <parameter identifier="edge3"><class>Edge</class></parameter>
        <java:condition>"labeling".equals( stage.getValue( ) )</java:condition>
        <java:condition>"arrow".equals( junction.getType( ) )</java:condition>
        <java:condition>junction.getBasePoint( ) == edge1.getP1( )</java:condition>
        <java:condition>junction.getBasePoint( ) == edge2.getP1( )</java:condition>
        <java:condition>junction.getBasePoint( ) == edge3.getP1( )</java:condition>
        <java:condition>junction.getP2( ) == edge1.getP2( )</java:condition>
        <java:condition>junction.getP1( ) == edge2.getP2( )</java:condition>
        <java:condition>junction.getP3( ) == edge3.getP2( )</java:condition>
        <java:condition>"-".equals( edge1.getLabel( ) )</java:condition>
        <java:condition>null == edge2.getLabel( )</java:condition>
        <java:consequence>
            edge2.setLabel( "+" );
            drools.modifyObject ( edge2 );
            edge3.setLabel( "+" );
            drools.modifyObject ( edge3 );
        </java:consequence>
    </rule>

    <!--
    The conflict resolution mechanism will only execute a production if no
    productions that are more complicated are satisfied.  This production is
    simple, so all of the above dictionary productions will fire before this
    change of state production
    -->
    <rule name="done_labeling">
        <parameter identifier="stage"><class>Stage</class></parameter>
        <java:condition>"labeling".equals( stage.getValue( ) )</java:condition>
        <java:consequence>
            stage.setValue( "plot_remaining_edges" );
            drools.modifyObject( stage );
        </java:consequence>
    </rule>

    <!--
    At this point, some labellings may have not been plotted, so plot them
    -->
    <rule name="plot_remaining">
        <parameter identifier="stage"><class>Stage</class></parameter>
        <parameter identifier="edge"><class>Edge</class></parameter>
        <java:condition>"plot_remaining_edges".equals( stage.getValue( ) )</java:condition>
        <java:condition>!edge.isPlotted( )</java:condition>
        <java:condition>null != edge.getLabel( )</java:condition>
        <java:consequence>
            System.out.println( "plot " + edge.getLabel( ) + " " + edge.getP1( ) + " " + edge.getP2( ) );
            edge.setPlotted( true );
            drools.modifyObject( edge );
        </java:consequence>
    </rule>

    <!--
    If we have been unable to label an edge, assume that it is a boundary.
    This is a total Kludge, but what the hell. (if we assume only valid drawings
    will be given for labeling, this assumption generally is true!)
    -->
    <rule name="plot_boundaries">
        <parameter identifier="stage"><class>Stage</class></parameter>
        <parameter identifier="edge"><class>Edge</class></parameter>
        <java:condition>"plot_remaining_edges".equals( stage.getValue( ) )</java:condition>
        <java:condition>!edge.isPlotted( )</java:condition>
        <java:condition>null == edge.getLabel( )</java:condition>
        <java:consequence>
            System.out.println( "plot B " + edge.getP1( ) + " " + edge.getP2( ) );
            edge.setPlotted( true );
            drools.modifyObject( edge );
        </java:consequence>
    </rule>

    <!--
    If there is no more work to do, then we are done and flag it.
    -->
    <rule name="done_plotting">
        <parameter identifier="stage"><class>Stage</class></parameter>
        <java:condition>"plot_remaining_edges".equals( stage.getValue( ) )</java:condition>
        <java:consequence>
            if ( WaltzWMEL.plottedEdgeExists( ) ) return;
            stage.setValue( "done" );
            drools.modifyObject( stage );
        </java:consequence>
    </rule>

    <!--
    Prompt the user as to where he can see a trace of the OPS5
    execution
    -->
    <rule name="done">
        <parameter identifier="stage"><class>Stage</class></parameter>
        <java:condition>"done".equals( stage.getValue( ) )</java:condition>
        <java:consequence>
            //System.out.println( "see trace.waltz for description of execution- hit CR to end" );
            drools.clearAgenda( );
        </java:consequence>
    </rule>

</rule-set>

⌨️ 快捷键说明

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