Недавно я начал изучать слюни, когда я объявил тип перечисления в файле drl, но в java я не знаю, как получить значение этого перечисления, может ли кто-нибудь мне помочь?
Первый: перечисления, объявленные в файле drools
declare enum OrderStatus
CREATED(0, "新创建"),
PAY(1, "已支付"),
RECEIVED(2, "已接收");
status: Integer;
desc: String;
end
Второй: Я хочу получить значение PAY в OrderStatus
// Get the declared fact type
FactType orderStatusFactType = kieBase.getFactType("rules", "OrderStatus");
Я не знаю, как это написать после этого, кто-нибудь знает?
Вообще говоря, вы не делаете это так.
Если вам это нужно на Java, объявите это на Java. Вы можете ссылаться на перечисления Java, импортируя их, как и любой другой класс.
Состояние заказа.java:
package com.example;
public enum OrderStatus {
// ...
}
пример.drl
import com.example.OrderStatus
rule "ExampleRule"
when
$order: Order( status == null )
then
modify($order) {
setStatus( OrderStatus.PAY )
}
end
Поскольку это уже Java, вы можете импортировать и ссылаться на него, как обычно, в Java.
Я нашел решение, которое решается путем отражения。 Class<?> factClass = orderStatusFactType.getFactClass(); Метод метода = factClass.getMethod("valueOf", String.class); Плата за объект = method.invoke(null, "PAY");