0
rule "ReportableRule1"
    dialect "mvel"
        when
            rp : repoio( country == null )
        then
            rp.setOrigBuySellFlag( "E" );
        System.out.println("This is the exception of rule1");
    end.

こんにちはスティーブ、これは私たちが作成したサンプル ルールです。その他のルールもほぼ同様です。

KieServices ks = KieServices.Factory.get();
KieContainer kContainer = ks.getKieClasspathContainer();
KieSession kSession = kContainer.newKieSession("ksession-rules");

KIE A​​PI を使用しているため、私のメイン クラスにはこのコードがあります。高速処理のためのルールを設計する他の方法はありますか。next は set と get のみです。これは、設定および取得したメイン クラスです。

public static final void main(String[] args) {
        try {
            // load up the knowledge base
              KieServices ks = KieServices.Factory.get();
          KieContainer kContainer = ks.getKieClasspathContainer();
            KieSession kSession = kContainer.newKieSession("ksession-rules");
            // go !

            HRFReportableVO rp=new HRFReportableVO();
            rp.setDefaultSystemFlag("true");
            rp.setDefaultCntrPartyFlag("true");
            rp.setSecurity("NL0010060257");
            rp.setTradeType("SALES_TRADER");
            rp.setTradeSubType("ALLOC_BLOCK");
            rp.setBoClientAcctId("fsd");
            rp.setSubtypec(null);
            rp.setSysClientAccId("DROPCTL2");
            rp.checkFutureDate("2013-12-27", "2012-01-03");
            rp.setCountryOfInc("DEU");
            rp.setTransactiontype("S");
            String abc="-50.90";
            double amount = Double.parseDouble(abc);
            rp.setInvalidQuantity(amount);
            rp.setActid("xsd");
            rp.setDealerID("SBILGB2LXXX");
            rp.setMonth(0);
            rp.setYear(2012);
            rp.setChecktrade(1);
            rp.setCounterPart(14);
            rp.setCountry("AFG");
            rp.setSystem(14);
            rp.matchDate("yyyy-MM-dd", "12-12-2013");
            rp.checkDate("2013-12-12");
            rp.setTypc("GOVT");
            rp.setInsttypc("SEC");
            //rp.setTradeDate(null);
            //rp.setTradeDate(new Date(System.currentTimeMillis()));
            rp.setOrigBuySellFlag("A");
            rp.setLglEntyCd("2");
            rp.setIscrcy("EUR");
            rp.setIscntry("GBR");
            rp.setGermany_reportable_flag("Y");
            kSession.insert(rp);
            kSession.fireAllRules();
            System.out.println(rp.getExceptionDescription());
            System.out.println(rp.getFlag());
        } catch (Throwable t) {
            t.printStackTrace();
        }

}

Drool ルールを Talend ETL に統合しました。Talend ETL 開発者は、メイン クラスで示したコードと同様の Setter および getters メソッドを使用して、Drool ルールに値を渡したと言います。ここでの問題は、マネージャーが drool が 1 つのレコードを取得してそれをルールと比較し、そのレコードの結果を返すと言っていることです。彼は私に、Drool がより多くのレコードを取得し、処理が高速になるように多くの結果を返すようにコードを変更するように求めています。

4

0 に答える 0