问题标签 [rostering]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2635 浏览

mysql - 赌场 24/7 员工名册的数据库模型

我们目前使用基于笔/纸的花名册来管理赌场的桌面游戏人员。每行是一名员工,每列是 20 分钟的时间段,每个单元格代表员工被分配到哪个表,或者他们已被分配到休息时间。员工轮班的开始和结束时间因他们可以处理的游戏/技能而异。我们需要将花名册的副本保留 7 年,用纸质这很容易,我想开发一个数字应用程序,但很难将数据存储在数据库中以进行存档。

我对使用数据库还很陌生,我想我了解如何为 neo4j 之类的图形数据库建模数据,但是在处理时间方面我遇到了困难。我试图了解像 MySQL 这样的 RDBMS 数据库,下面是我认为应该如何建模数据。请指出我是否走错了方向,或者不同的数据库类型是否更合适,我们将不胜感激!

基本数据
在我们考虑调度/时间之前,这是一些需要处理的基本数据。

员工
- 身份证号码
- 姓名
- 技能(二十一点、百家乐、轮盘赌等)

表格
- 身份证号码
- 技能/类型(只能是一项技能)

将花名册数据存储为 JSON 之类的文件可能会更好吗?那时,时间敏感的数据就不是什么大问题了。使用数据库进行数字化的好处是查询,这些可以帮助协助耗时的任务,其中人为错误很常见。

可能
的疑问 注意:轮班员工要么在休息时间,要么在地板上(分配到一张桌子上),技能根据学习难度分为主要或次要类型。

  • 哪些员工已经在场上待了 80 分钟或更长时间?(他们应该休息一下)
  • 我可以根据员工的技能组合将该员工分配到哪些开放表?
  • 我需要一名具有百家乐技能但尚未被分配到百家乐桌的员工。
  • 在这段时间里,这张桌子上有哪些员工?
  • 这个员工此时在哪里?
  • 现在谁在轮班?
  • 有多少轮班员工可以处理二十一点?
  • 有多少员工具备三大技能?
  • 哪些员工拥有百家乐技能至少 3 个月?

这些查询也可以按字母顺序或时间、技能等排序。

我很确定我知道如何使用 cypher for neo4j 执行这些查询,前提是我对数据进行了正确建模。我对 SQL 查询不太了解,我读过它可能会根据查询和结构变得有点复杂。

-------------------------------------------------- --------------------------------------

MYSQL 特定

员工表可以包含他们的 ID 号和姓名等属性,但我认为对于他们的技能和轮班来说,这些将是单独的表,通过唯一的整数引用员工(我认为这被称为外键?)。

另一个表可以存储游戏表,这些表将具有自己的 ID,并使用外键引用技能/游戏类型。

要记录像笔/纸花名册这样的数据,每天可以有一个表格,其中的列从 0000 开始增加 20,一直到 2340?在时间列之前,我可以为员工设置一个,其中每个员工都用他们的外键表示,然后时间列将具有分配给游戏表的外键,行数据必然有许多未填充的单元格,因为员工轮班不会是 24/7。如果我使用外键来引用游戏桌,我现在在员工休息时会遇到问题吗?除非我将第一个游戏桌条目视为休息?

不过,我可能需要使事情进一步复杂化,管理层会随着时间的推移尝试不同的游戏桌布局,一些游戏桌可以从二十一点转换为百家乐。这肯定会在 7 年多的时间里发生,我是想创建新的游戏表条目还是添加一个列以使用外键并引用一个存储一段时间内游戏类型历史记录的新表?员工在他们的职业生涯中也将学习处理新游戏,很少他们也可能会删除这项技能。

-------------------------------------------------- --------------------------------------

Neo4j 特定

有了这些数据,我会有一个员工和一个表节点,它们的“isA”关系边映射到实际员工或表吗?我想对于两种类型的技能,我最好使用技能节点并建立这样的关系?:Blackjack->isA->Skill、Employee->hasSkill->Blackjack、Table->typeIs->Blackjack?

TIME
当我希望这个数据库现在与时间线一起工作时,我发现有困难。我遇到了以下有关随时间连接节点的建议:

  • Unix Epoch 似乎是一个常见的推荐?
  • 将节点连接到年/月/日图?
  • Lucene 时间线?(我不太了解这个或如何使用它,已经看到有人提到它)

还有一些关于时间和数据如何相关的案例:

  • 员工每周都有不同的日期和开始/结束时间,这可能是具有属性 {shiftStart,shiftEnd,actualStart,actualEnd} 的轮班节点,员工可能会迟到或在轮班期间生病。这是否是将每个班次与员工联系起来的正确方法?员工(节点)->班次(组节点)->班次(节点)

  • 表和员工可能修改了技能数据,使用存档数据这可能是一个问题,我认为解决方案是在与技能的关系上有时间属性?

  • 我们全天打开和关闭桌子,每张桌子每天都有打开/关闭时间,这可能会在一个月内改变,具体取决于管理层的要求,此外时间并不严格,由于各种原因经理可能会打开或关闭桌子在轮班期间。表节点的打开/关闭状态可能仅与轮班期间的查询相关,这让我感到困惑,因为我希望它用于查询,但随着时间的推移归档它可能没有意义?

对于查询,我无法决定何时使用节点或向节点添加属性。对于员工,他们有姓名和身份证号,如果我想通过身份证号找到员工,将其作为自己的节点会更好吗?这将更直接,而不是通过所有员工来获取该唯一 ID 号。

我最近也遇到了标签,我可以理解这些标签对于键入员工和表节点而不是在节点下分组很有用。对于员工的轮班,我认为应该继续与轮班节点分组,如果我要对在一段时间内轮班工作的员工进行密码查询,则标签可能是合适的,但是应该将其应用于单个轮班节点还是转移链接回员工的组节点?我可能需要将属性添加到各个班次节点或与班次组节点的关系?我不确定是否应该有一个班次组节点,我假设减少连接到员工节点的边对于查询来说是最佳的。

-------------------------------------------------- --------------------------------------

如果有任何很棒的资源可以让我了解数据库开发,那就太好了,那里有太多的信息和选项,很难知道从什么开始。谢谢你的时间 :)

0 投票
1 回答
639 浏览

neo4j - Neo4j - 24/7 赌场名册

这是一系列新问题,以回应肯尼对我之前关于如何围绕 24/7 赌场花名册建模数据库的问题的回答。 赌场 24/7 员工名册的数据库模型

仍在尝试了解图表以及如何遍历/连接数据。在肯尼的回答中,图像上半部分的时间图,每年是否有 12 个月份节点,然后指向一排日节点,其中有一个以上的日节点,其第一天的值为 1月?我会为每年构建这些子图,还是会使用特定的查询来添加随着时间的推移不存在的节点?我知道有一个查询可以做到这一点,但它需要考虑月份节点的最后一天并创建正确的结束关系?我会遇到闰年或夏令时的问题吗?

答案图像的下半部分是游戏节点,它们是否只有一个员工和位置关系?我不确定如何判断将哪个员工分配到哪个表(不向关系边缘添加属性),我应该向边缘添加属性还是应该为每对使用单独的节点?

我制作了一张粗略的图片来展示笔/纸花名册的样子,它可能在某种程度上有所帮助。 名册示例

我还尝试用一些问题(红色框)计划出一个图表,它是在 illustrator 中完成的,有点乱,我很想知道 Kenny 的图表图像是否是在特定应用程序中完成的,如果是,是哪一个,尽管我认为图表在视觉上往往会变得纠结和凌乱。

图模型概念
您似乎无法单击图像以获取文本可读的直接链接,您可以在此处查看:http: //i.imgur.com/FMfJx6G.png

如果有帮助,我可以在此处添加问题文本或使用建议的软件重新创建图表。

0 投票
2 回答
2034 浏览

optaplanner - 具有非常“硬”的硬约束的护士排班实施

我是一名信息学护士,试图开发一种用于护理排班的机器辅助流程。一半的员工在其他地方工作,所以我们的主要限制是他们在他们工作的其他机构的日程安排。我们在 20 日收到此信息。每个月,所以我们有 10 天的时间提前计划。硬约束将是他们在其他工作中分配的班次,不遵循任何模式,因此我们需要“手动”从日历中划掉那些日子,然后计算解决方案(考虑到其他限制,例如在夜班、放假前不夜班等)。您认为这样的实现对于 Optaplanner 是否可行?

0 投票
2 回答
720 浏览

java - Optaplanner:添加新约束(硬)

我最近一直在熟悉 Optaplanner——更具体地说,是它的护士排班示例——并且一直在尝试添加一个新的硬约束,但到目前为止,还没有取得太大的成功。

我正在努力添加 DayUnavailableRequest 约束(即员工在特定日期无法工作)。我使用 DayOffRequest 作为模板。这两个约束之间的唯一区别是 DayUnavailableRequest 约束会“硬”。

为此,我在请求文件夹中添加了一个新文件 - DayUnavailableRequest.Java:

然后我将以下内容添加到nurserRosteringScoreRules.drl:

在nurserRoster.java 中,我添加了:

也:

在 Employee.java 中,我添加了:

和...

最后,在 NurseRosteringImporter.java 中,我包括:

在第 115 行:

在第 131 行:

和...

我正在使用 sprint01_1week.xml 进行测试。当我添加约束数据时,我要么收到错误,要么应用程序工作但可用性约束本身不生效。

例如:

返回一个长的“未捕获的异常”错误。

不会返回错误,但也不会应用于应用程序。

任何帮助将不胜感激。另外,如果有更有效的方法来增加员工的可用性,请分享。

谢谢。

0 投票
1 回答
1181 浏览

android - 检查 Openfire 的在线/离线用户并使用 Android 自动接受好友请求

我在android中使用openfire服务器。现在我需要检查有多少用户在线以及他们是谁。我的连接正常。但是当我检查它时,输出看起来像,


当名册条目的存在发生更改时调用

名称:埃斯蒂

状态:不可用

当名册条目的存在发生更改时调用

姓名:罗尼

状态:不可用


那么如何检查谁在线或离线。另一个问题是如何自动接受请求。请我需要帮助。

这是我的代码:

0 投票
1 回答
197 浏览

discrete-mathematics - 名册/时间表生成

考虑到商业和劳动法的限制,我正在开发一种工具来为员工生成长达一个月的时间表。与类似问题的挑战和区别很少:

  • 班次概念包含长达半小时的休息时间。
  • 没有完整 8 班次的概念作为提到的类似问题。例如,早上 8 点需要 2 个资源,下午 3 点需要 2.5 个资源(例如,休息半小时)..
  • 和常规限制,例如每天几个小时,休息前几个小时,休息时间......

可能的解决方案是依靠使用求解器,即 OR-Tools 和 Optaplanner。任何提示?

0 投票
1 回答
812 浏览

database - Ejabberd 的名册管理

我的疑问是一个场景:

A.我的客户名册以及他们注册的 Ejabberd 中有 10 个 jabber id。现在,我在手机的联系人列表中添加了 3 个新用户 ID。我可以看到名册列表在 Jabber 客户端以及我的 Ejabberd 服务器上也得到了更新。

B.现在从 13 个用户/jabberd Id 的列表中,我从手机的联系人列表中删除 4 个联系人。Id 从我的 Jabber 客户端维护的名册中本地删除。但是,这个删除相关的管理在 Ejabberd 端是怎么做的呢?

在 Ejabberd 服务器上是否需要对名册模块进行任何显式调用才能进行更新?如果是这样,它们是什么?

请告诉我!谢谢

0 投票
0 回答
43 浏览

android - 如何在后台任务中添加联系人?

我正在编写一种将电话簿联系人添加到朋友列表的方法,如果服务器中存在我的一个联系人,则应用程序会自动将他添加到我的应用程序列表朋友中。应用程序工作正常,但这种方法永远不会停止,那么我该怎么做呢?我想搜索我的联系人并比较服务器上的每个联系人(这已经完成)然后如果服务器中存在联系人将他添加到联系人列表中(这也已经完成)在任务完成时显示联系人(这是我的问题,任务永远不会结束,总是在重新加载)

谁能帮我?

这是我的方法,效果很好

我的问题是我怎么能在Back上完成这个任务,我试着做

0 投票
2 回答
231 浏览

optimization - 如何在 optaplanner 中使用最小冲突算法

optaplanner 中是否有最小冲突算法?或者怎么做?

将其用作邻域选择的一部分怎么样:

  1. 定义构建邻域的自定义交换工厂如下
  2. 获取每个变量的所有违规以进行优化,因此需要调用 scoreDirector.calculateScore 然后解析/处理 constraintMatches
  3. 按变量排序最低分或最高违规
  4. 首先通过交换这些变量来构建邻域

如果这是可行的,有没有办法获得约束匹配而无需重新调用 calculateScore 以加快进程

0 投票
0 回答
1861 浏览

xmpp - Openfire 联系人列表共享

我在 CentO 上安装了 openfire,它使用外部数据库进行身份验证和用户列表。

我根据用户表和朋友列表管理组,以便每个用户也是一个管理员组,并填充了(朋友)用户。

外部用户和身份验证工作正常。

问题是只有在组管理中选中“启用联系人列表组共享 openfire”时才会填充好友列表。

我想让这个选项始终启用,以便用户可以在他们的好友列表中看到对方。

这是一个现有问题openfire 问题

是否有任何可能的解决方案或替代方案。

编辑:

换句话说,我想避免将以下三行添加到 ofGroupProp 表中: