【问题标题】:A dedicated object in response to a rule in DROOLS响应 DROOLS 中的规则的专用对象
【发布时间】:2021-12-20 00:51:25
【问题描述】:

在 drool 引擎中,如何在 THEN 部分填充新对象作为响应? 我想用另一个专用对象返回答案,而不是LiabilityRequestDto

rule "validate Date"
salience 100
    when
    
    $req : LiabilityRequestDto(expireAt before issueAt || issueAt before getNow())
    
    then
           $req.setResultMessage("\\n"+" invalid date");
           $req.setIsValid(false);
end;

我使用 Drools Workbench,因此无法直接访问 kieSession

【问题讨论】:

    标签: java jboss drools jbpm


    【解决方案1】:

    要获取新对象,您必须在“fireAllRules”命令之后使用“kieSession.getObject”,例如:

    kieSession.fireAllRules()
    kieSession.getObject(factHandle)
    

    【讨论】:

    • 在你的例子中“factHandle”应该是什么?
    • 但是我用的是drools Workbench,所以无法直接访问kieSession
    • 这是一个重要的细节,要包含在你的问题中,@SoheilBabadi
    【解决方案2】:

    我找到了解决方案,希望对其他人有用 我们定义了一个对象,这就是我们的输出模型

    rule "min Policy Duration"
     when
     $response:ResponseModel();
     $model:LifeModel(duration<5 )
     then
     $response.addMessage("Error message");
     $response.setValid(false);
    end;
    

    现在我们在请求中写入输出模型的名称,这样就可以得到模型了。

    {
        "commands": [
            {
                "insert": {
                     "out-identifier": "PhysiciansLiability_1.0.0-SNAPSHOT",
                    "return-object": "true",
                    "object": {
                        "ResponseModel": {
                            "expireAt": "2019-04-23",
                           "issueAt": "2022-04-23",
            },
            {
                "fire-all-rules": ""
            }
    

    【讨论】:

    • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
    猜你喜欢
    • 1970-01-01
    • 2023-03-30
    • 2013-07-15
    • 2022-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多