gpt4 book ai didi

algorithm - 跟踪对象的状态 - SOS

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:35:12 24 4
gpt4 key购买 nike

嗨,SO 的智者。这是求救信号。

我遇到了很大的麻烦。在我的网络应用程序中有一个对象(假设它是对某事的请求)。用户提交他/她的请求。之后是可以批准/不批准该请求的人员。在从提交到批准/不批准的这段时间里,可以对请求采取许多行动。我必须向用户展示操作面板(链接集合),他/她可以使用它来修改请求的状态。

现在,根据处理请求的哪个阶段,某些操作是不允许的。此外,如果已经采取了某些行动,则排除了其他行动的可能性。

总的来说,它创建了一个非常复杂的允许/禁止操作矩阵,我的小脑袋无法处理它。

我创建了一些静态类/方法,它们根据请求的状态返回允许的操作数组。应用程序可以处于大约 20 种状态。我已经根据状态注意删除/禁用在该状态下不可能进行的操作的链接。现在问题出现了,假设请求处于状态 X。

现在,如果在过去的操作 l 已应要求采取,我们可能不允许 l 或基于此一些任意操作 m,n,o。

在编写了获取 20 个状态的链接数组的所有方法后,我必须根据过去的操作历史(存储在 sql db 中)过滤数组,这是非常非常大的任务。

请给我一些更容易实现和高效的模式。这让我很不安。

最佳答案

据我了解,您有一个真实的工作流程场景。在这种情况下,我会:

  1. 如果可能,将整个状态建模为单个实体(具有固定数量字段的单行)。我不会将其建模为一组操作。

  2. 将每个 Action 建模为行中的一些变化。当用户输入一些数据时,这是非常明显的,但我也会将每个接受建模为 bool 字段或状态字段,具体取决于接受是由独立部门完成的还是单个部门中的级联接受。

  3. 也可能存在这样的情况,当对某些特定参数给出验收时,该参数将来可能会发生变化,需要新的验收。在这种情况下,我会将这种情况建模为两个字段。 On 用于参数值,第二个用于接受值。我会根据这两个领域的不同来决定是否仍然需要接受。这允许实现一些阈值。

  4. 将状态建模为单行,我将实现独立谓词以允许采取行动。

我认为第 4 点是最重要的一点。如果您能够为启用操作实现独立谓词,那么您将能够在未来轻松修改它们。

正确实现 1-3 后,您将能够轻松实现接受撤销,这可能是必需的,在这种情况下可能会使整体代码大小更小。

关于algorithm - 跟踪对象的状态 - SOS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/915652/

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