2017-10-30 16 views
0

ガイド付きルールエディタを使用して2つの異なるエンティティ(Entity1とEntity2としましょう)から2つの日付(Date1とDate2としましょう)を比較しようとしています。Droolsで2日間を計算する日/月/年

日付1がEntity1から可変であり、 日付2がEntity2

私が実行したいルールから変数である - 私は数ヶ月も何年も同じルールを適用したい

Package com.rules.xyz; 
import com.rules.xyz.Entity1; 
import com.rules.xyz.Entity2; 

When 
{ 
Entity1.Date1 <= Entity2. Date2 + 7 Days 
} 

then <perform some action> 

、すなわち、 Date1の場合< = Date2 + 6ヶ月、何らかのアクションを実行します。

私はあなたが同じのためのソリューションを提案してもらえ

最終Droolsのワークベンチ7.2.0を使用しています。

答えて

0

私の場合、私はそれを再利用できるようにする機能を作成しているので、それは別のDRLファイルで定義されています

function Date workWithDates(Date date, String operator, int entity, int number) { 
    if (date != null) { 
     java.util.Calendar newCal = java.util.Calendar.getInstance(); 
     newCal.setTime(date); 
     if (operator.equals("-")) { //normally we would add, except if we want to subtract 
      number = -number; 
     } 
     if (entity == 1) { //years 
      newCal.add(java.util.Calendar.YEAR, number); 
     } else if (entity== 2) { //months 
      newCal.add(java.util.Calendar.MONTH, number);  
     } else if (entity== 3) { //days 
      newCal.add(java.util.Calendar.DATE, number);   
     } else if (entity== 4) { //hours 
      newCal.add(java.util.Calendar.HOUR, number);   
     } else if (entity== 5) { //minutes 
      newCal.add(java.util.Calendar.MINUTE, number);  
     } else if (entity== 6) { //seconds 
      newCal.add(java.util.Calendar.SECOND, number);  
     } 
     return newCal.getTime();  
    } else { 
     return date; 
    } 
} 

そして、あなたはあなたが使用することになり、この関数を呼び出します。あなたのDRLファイルで

when 
    Entity2 ($date2 : Date2 != null) 
    Entity1 (Date1 != null, Date1 <= (workWithDates($date2, "+", 3, 7))) 

別のファイルでも機能を分離することを選択する場合は、同じパッケージに含まれていることを確認してください。たとえば、すべての再利用可能な関数を000 FUNCTION.drlに定義しました。

+0

ありがとう!私の場合、これは完璧に機能します。 –

関連する問題