Как написать правила для сопоставления двух массивов? - PullRequest
0 голосов
/ 07 мая 2018

Я новичок в слюнях, поэтому некоторая помощь будет принята с благодарностью. У меня есть два файла JSON, к которым я должен применить некоторые правила. Я преобразовал json в класс java и вставил классы в движок правил.

Я должен написать правило, которое проверяет, равен ли массив, который присутствует в обоих файлах json, или нет. InputFile и OutputFile - это класс для двух json соответственно.

Предположим, что массив в первом json содержит [6,4,8], а массив во втором json также содержит [6,4,8], тогда правило, которое я написал для проверки, равны ли оба массива, равно

rule "EqualArray"
when
    $arrInInput : InputFile($inputArr : inputArray)
    $arrInOutput : OutputFile($outputArr : outputArray == $inputArr)
then
    System.out.println($inputArr+" and "+$outputArr+" Rule passed");
end

Выходной код

6 and 6 Rule passed
4 and 4 Rule passed
8 and 8 Rule passed

Правило, которое я написал для проверки того, что оба массива не равны, равно

rule "Not EqualArray"
when
    $arrInInput : InputFile($inputArr : inputArray)
    $arrInOutput : OutputFile($outputArr : outputArray != $inputArr)
then
    System.out.println($inputArr+" and "+$outputArr+" Rule failed");
end

Вывод этого правила

6 and 4 Rule failed
6 and 8 Rule failed
4 and 6 Rule failed
4 and 8 Rule failed
8 and 6 Rule failed
8 and 4 Rule failed

Поскольку оба массива равны, я не хочу, чтобы правило "Not EqualArray" запускалось. Я хочу написать правила, чтобы я мог проверять значения массива по индексу. Например, если индекс 1, индекс 2 и индекс 3 обоих массивов совпадают, массив равен, а если значение обоих массивов не совпадает для определенного индекса, то правило «Не равно массив» сработает. У меня также нет контроля над размером массива. JSON может иметь любое количество значений в массиве.

1 Ответ

0 голосов
/ 07 мая 2018

Процедурные алгоритмы проще реализовать на процедурном языке. Я бы предложил вам реализовать логику в Java (либо в классе, либо в виде функции в DRL) и вызывать эту логику из LHS ваших правил.

...