0

Kie Workbench は初めてです。kie ワークベンチでルールを起動するために Java Rest 呼び出しを使用しています。以下のコードを見つけてください。

public class RuleEngineConnector {

    @Value("${brms.execution.server.url}")
    private String SERVER_URL;

    @Value("${brms.execution.server.username}")
    private String USER;


    @Value("${brms.execution.server.password}")
    private String PASSWORD;

    @Value("${brms.containerId}")
    private String CONTAINER_ID;

    private static final MarshallingFormat FORMAT = MarshallingFormat.JAXB;


    public String getAdapter(AdapterRuleDO adapterRule) {
        KieServicesConfiguration cfg = KieServicesFactory.newRestConfiguration(SERVER_URL, USER, PASSWORD);
        cfg.setMarshallingFormat(FORMAT);
        Set<Class<?>> extraClasses = new HashSet<Class<?>>();
        extraClasses.add(AdapterRuleDO.class);
        cfg.addJaxbClasses(extraClasses);
        KieServicesClient kieServicesClient = KieServicesFactory.newKieServicesClient(cfg);
        ServiceResponse<ExecutionResults> response = getRulesResponse(adapterRule, kieServicesClient);
        List<AdapterRuleDO> listOfObjects = (List<AdapterRuleDO>) response.getResult().getValue("get-adapter");//to be changed
        return listOfObjects.get(0).getAdapterName();
    }

    private ServiceResponse<ExecutionResults> getRulesResponse(AdapterRuleDO adapterRule, KieServicesClient kieServicesClient) {
        List<Command<?>> commands = new ArrayList<Command<?>>();
        KieCommands commandsFactory = KieServices.Factory.get().getCommands();
        commands.add(commandsFactory.newInsert(adapterRule, "adapterRule"));
        commands.add(commandsFactory.newFireAllRules());
        commands.add(commandsFactory.newGetObjects("get-adapter"));
        BatchExecutionCommand batchExecution = commandsFactory.newBatchExecution(commands);
        RuleServicesClient ruleServicesClient = kieServicesClient.getServicesClient(RuleServicesClient.class);
        ServiceResponse<ExecutionResults> response = ruleServicesClient.executeCommandsWithResults(CONTAINER_ID, batchExecution);
        return response;
    }

}

ルールが正しく起動され、ルールが起動された後に AdapterRuleDO クラスで値が適切に更新されます。1 つの問題は、このメソッドを再度呼び出してルールを 2 回実行すると、2 つの AdapterRuleDO オブジェクトを受け取り、その後の呼び出しごとに 1 つの追加オブジェクトを受け取ることです。セッション内のオブジェクトが保存され、呼び出しごとにクリアされないようです。すべての呼び出しに対して、1 つの AdapterRuleDO オブジェクトのみを返すようにするにはどうすればよいですか?

この事実が使用されている決定表は 1 つしかないことに注意してください。

4

3 に答える 3

0

ステートレス評価に関心がある場合は、セッションをステートレスとして構成してみてください。これにより、リクエストごとに新しいセッションが作成されます。これは kie-workbench で実行できるはずです。

それが役に立てば幸い、

于 2016-09-29T08:53:45.067 に答える