gpt4 book ai didi

java - 流口水 Guvnor : How do dates and times work?

转载 作者:行者123 更新时间:2023-11-30 11:38:37 27 4
gpt4 key购买 nike

我懂 Java,我懂 C#。

我是 JBoss Drools“Guvnor”的菜鸟,一般来说只是他们的 DRL 规则语言。我需要一些关于如何在规则的 LHS 中正确使用日期和时间的帮助。

例如,我必须确保医疗保健系统中的数据质量。显然,每个患者的记录中都有一个 DOB,类型为 java.util.Date。

好吧,我想确保作为 Facts 传递的数据中的 DOB 确实早于今天的日期。我知道,例如,在 C# 中,您可以通过说 DateTime.Now 来获取当前日期/时间。

我想在 Guvnor 中添加一条规则(这是伪代码):

何时 患者出生日期在现在之前然后 将患者标记为有效

我的病人事实是:

声明患者 patientID:整数 名字:文本 姓氏:文本 出生日期:java.util.Date结束

我还有一个剂量事实,带有一个 patientID 字段,可以将其链接到哪个患者接受了多少剂量:

申报剂量 doseID:整数 patientID:整数 管理日期:java.util.Date 金额:整数结束

此外,假设某种药物在某一年(1995 年)上市,我还想检查给定患者的剂量是否在该年之前未给药。

我该怎么做这两个?我试过谷歌搜索和谷歌搜索,但我得到的只是指向(完全无用的)Guvnor 用户指南的链接,该指南写得很糟糕,因为它不包含这些基本信息,即日期和时间如何工作和编写在 DRL 语法中。

谢谢。

最佳答案

一如既往,有不止一种方法可以做到这一点。这是一个。

function Date currentTime(){
// The content of this method is Java
return new Date();
}

RULE "my rule"
WHEN
patient : Patient( dateOfBirth < currentTime() )
THEN
// Everything in THEN part is Java
patient.setValid(true); // Notice I added a valid field into the fact type
update(patient);
END

你要求的其他规则

Also, say a medication is released on a certain year, 1995, and I want to also check that a dose for a given patient is not administered prior to that year.

RULE "Second Rule"
WHEN
patient : Patient()
not Dose( patientId == patient.patientId, administeredDate < 01-Jan-1995 ) // The date format can be changed if you want to.
WHEN
System.out.println( "Patient " + patient.getFirstName + " " +patient.getLastName() + " was not given a dose before." );
END

Guvnor 用户指南不涵盖语言基础知识。您可以从 here 找到它们. Guvnor 旨在为您提供编写 DRL 或存储包含 DRL 的文件的指导编辑器。您可以通过按下生成 DRL 的每个 Assets 编辑器中的“查看源代码”按钮来检查如果它是用 DRL 编写的指导规则会是什么样子。

关于java - 流口水 Guvnor : How do dates and times work?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13572661/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com