当前位置: 首页 > 知识库问答 >
问题:

编写一条规则,根据访问情况检测商店某个部门中的客户位置

汲品
2023-03-14

我刚开始流口水,有一些问题。我正在制定规则,以检测商店各部门的客户。

我的型号如下:

客户:Id,点(x,y)

部门:ID,矩形

客户事件

目前,我用x、y位置或点表示客户,用矩形表示部门。

1)如何编写规则来检测客户是否位于矩形中?

2.)如果客户在一个部门内更改位置至少2次,则触发事件。我如何编写规则来检测客户是否在某个部门,是否已更改位置两次?

请让我知道。

谢啦!

公共类CustomerObj{

public CustomerObj(String custId, Integer timestamp) {
    super();
    this.custId = custId;
    this.timestamp = timestamp;
}
private String custId;
private long timestamp;
private Integer classification;
private Point location;
private Department department;


public long getTimestamp() {
    return timestamp;
}
public void setTimestamp(Integer timestamp) {
    this.timestamp = timestamp;
}
public String getCustId() {
    return custId;
}
public void setCustId(String custId) {
    this.custId = custId;
}
public Integer getClassification() {
    return classification;
}
public void setClassification(Integer classification) {
    this.classification = classification;
}
public Point getLocation() {
    return location;
}
public void setLocation(Point location) {
    this.location = location;
}
public Department getDepartment() {
    return department;
}
public void setDepartment(Department department) {
    this.department = department;
}

}

公共课部{

public Department(Integer departmentId) {
    super();
    this.departmentId = departmentId;
}

private Integer departmentId;
private Rectangle deptLocation;

public Integer getDepartmentId() {
    return departmentId;
}

public void setDepartmentId(Integer departmentId) {
    this.departmentId = departmentId;
}

public boolean containsCustomer(CustomerObj c) {
    if (this.deptLocation.contains(c.getLocation())) return true;
    else return false;
}

}

共有1个答案

相化
2023-03-14

假设矩形和点来自java。哎呀,事情很简单。

rule "customer in department"
when
    CustomerObj( $cid: custId, $p: point )
    Department( $did: departmentId, $dloc: deptLocation,
                $dloc.contains( $p ) )
then
    System.out.println( "customer " + $cid + " in " + $did );
end

至于移动,您需要一个CustomerEvent,显示客户和部门id以及位置。

rule "customer moves frequently in same department"
when
    CustomerEvent( $cid: custId, $did: dptmtId, $p: Point )
    $dep: Department( departmentId == $did )
    $cust: CustomerObj( custId == $cid, department == $dep, moves >= 1 )
then
    // whatever
end

请注意,您需要其他规则来更改客户中的部门参考和注册第一步,以及可能计算第二步之后的步数。

 类似资料:
  • 我试图使用Bazel编译一个基于dhall-kubernetes的dhall程序来生成一个Kubernetes YAML文件。 不使用dhall-kubernetes的基本dhall编译使用一个简单的bazel宏可以正常工作。 构建。dhall-Kubernetes: 示例/K8S/Build:

  • 我正在Groovy中创建一个DSL来进行Httpendpoint测试,我希望它是自然语言ish,并且我有一个带有“with”方法的对象。当我链接命令时,我的方法被正确调用,但如果在变量脚本上调用“with”方法,则编译会失败,因为使用了现有的Groovy“with(Closure)”。DSL脚本文件是通过GroovyShell读取和执行的。 这很有效: 但事实并非如此: 被调用的对象是用Java编

  • 我当前的Android应用程序使用Firebase实时数据库。 我正在与安全规则作斗争,因为我希望只允许单个用户写入数据,同时允许任何经过身份验证的用户读取数据。 我制定了这些规则,但不确定它们是否足够安全。。。 其中“XXXXXXXXXXXXXXXXXXXX”是我希望允许写入数据的指定用户。 用户的uid是常量值吗? 在测试新规则时,单击“模拟”按钮时,“验证”选项管理什么?

  • 我想运行一个调用Java方法并从另一个规则传递事实(或者更确切地说,它的逻辑值)的规则,尽管我不知道java方法是否对这个问题很重要。描述起来并不容易,所以我将尝试基于一个示例来展示它: 这里的问题是,第一条规则并不总是触发,因此不总是定义某些条件,也不计算第二条规则。 我的第二次尝试是创建这样两个独立的规则: 这也不能像预期的那样工作,因为它首先计算someconditionfalse规则,甚至

  • 问题内容: 我有如下所示的ind Mysql可用性表: 每个房间的每个可用日期都有一行。可能存在间隙,例如,房间1可能有8月1,2,3,5,6,13,14,15的条目,隔天不可用。 我需要查询以找到room_ids列表,其中在日期范围内每天都有可用的空间。 换句话说,获取room_id列表,其中在开始日期和结束日期之间的每个日期都有每个房间的条目。 问题答案: 您想要这样的东西: 该子句将计算该时

  • 我的uidConnections集合是一个链表,其中是和==specialevents.uid。 如何编写一个Firebase Cloud Firestore规则,其中用户只能访问uidConnections.connecteduid==specialEvents.uid和uidConnections.uid==request.auth.uid的specialEvents? 我现在在的地方...