- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
关闭。这个问题是opinion-based .它目前不接受答案。
想改善这个问题吗?更新问题,以便可以通过 editing this post 用事实和引文回答问题.
10 个月前关闭。
Improve this question
我有一个关于最佳实践的问题,即如何在数据库中存储复杂的工作流状态以处理任务。我一直在网上寻找无济于事,所以我想我会问社区他们认为什么是最好的。
这个问题来自我在上一个问题中给出的同一个“BoxItem”示例。这个“BoxItem”正在我的系统中被跟踪,因为在它上面执行了各种任务。任务可能会在几天内进行,并且需要人工交互,因此必须保留 BoxItem 的状态。谁完成了任务(如果适用)以及任务何时完成也必须被跟踪。
起初,我通过为每个需要完成的人工交互任务向“BoxItems”表添加三个字段来解决这个问题:
IsTaskNameComplete
日期任务名称完成
用户任务名称完成
这在工作流程简单时有效......但现在它已经发展成为一个复杂的过程(流程中有 > 10 种可能的人工交互......其中大约一半是可选的,并且可能会或可能不会为 BoxItem 完成,这导致我开始为那些可选任务添加“DoTaskName”字段),我发现应该是一个简单的表现在有 40 个左右的字段完全用于保留此状态信息。
我发现自己在问是否有更好的方法来做到这一点......但我不知所措。
我的第一个想法是制作一个通用的“BoxItemTasks”表,它定义了可以在给定盒子上完成的任务,但我仍然需要单独保存日期和用户信息,所以它并没有真正帮助。
我的第二个想法是,也许这无关紧要,如果这张表有 40 个或更多字段专门用于状态保留,我不应该担心……也许我只是偏执了。但感觉要保留很多信息。
无论如何,对于第三种选择可能是什么,或者上述两种选择中的一种是否真的合理,我感到茫然。我可以看到这个工作流程在 future 可能会变得更加复杂,对于每个新任务,我将需要添加 3-4 个字段来支持它的跟踪......感觉它正在失控。
在这个情况下,你会怎么做?
我应该注意,这是对现有系统的维护,一个没有 ORM 构建的系统,所以我不能把它交给 ORM 来处理。
编辑:
Kev,你是在说做这样的事情吗:
盒子物品
(PK) BoxItemID
(其他无关内容)
BoxItemActions
(PK) BoxItemID
(PK) BoxItemTaskID
完成了
完成日期
用户完成
BoxItemTasks
(PK) 任务类型
描述(如果有必要)
嗯……那会起作用……这代表需要改变我目前执行 SQL 查询的方式以查看哪些项目处于什么状态,但从长远来看,这样的事情看起来会更好(无需进行像序列化想法所代表的基本设计更改......不过如果我有时间,我想按照我的想法来做。)。
所以这就是你提到的 Kin,还是我不同意?
编辑:啊,我也看到你的想法和“最后行动”来确定当前状态......我喜欢它!我认为这可能对我有用......我可能需要稍微改变一下(因为在某些时候任务会同时发生),但这个想法似乎是个好主意!
编辑最终版:总而言之,如果将来有人用同样的问题来查找这个问题......听起来序列化方法会很有用,如果您的系统将信息预加载到某些可查询的界面中(即不直接调用数据库本身,就像我正在使用的临时系统所做的那样),但如果你没有,附加表的想法似乎应该很好用!谢谢大家的回复!
最佳答案
如果我理解正确,我会添加 BoxItemTasks 表(只是一个枚举表,对吗?),然后是一个 BoxItemActions 表,其中包含指向 BoxItems 和 BoxItemTasks 的外键,表示它是什么类型的任务。如果您想让特定任务只能在特定框项目上执行一次,只需将 (Items + Tasks) 列对作为 BoxItemActions 的主键即可。
(你把它布置得比我好得多,并且感谢正确解释我所说的。你写的正是我所描绘的。)
至于确定当前状态,您可以在 BoxItemActions 上编写一个触发器来更新单列 BoxItems.LastAction。对于并发操作,您的触发器可能只有特殊情况来决定哪个操作最近一次。
关于database - 最佳实践 : Storing a workflow state of an item in a database?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/116762/
这似乎比我最初猜测的更复杂。我有一个工作流程需要在代码中启动另一个工作流程。这是怎么做到的?我是否必须首先获取对当前工作流实例的 WorkflowRuntime 的引用? 最佳答案 我认为Invoke
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be
需要有关实现简单配额系统的最佳做法的指导 我想限制成员可以将自定义内容类型(称为 token )添加到他们的成员文件夹的次数(我还创建了一个自定义成员文件夹)。 用例(限制成员可添加的 token 数
我最近发布了一个有关在Web应用程序中运行Windows Workflow的问题。当然,这是一个技术性很强的问题,其中包含ManualWorkflowSchedulerService,HandleEx
今天,我接受了“Microsoft Workflow Foundation”的培训。 虽然我认为这个想法很巧妙,但我仍然将其视为概念证明,而不是现实生活中的解决方案。无需键入一行代码(或只键入其中的几
我在WF4上遇到了一个非常奇怪的问题:当我使用Switch Activity 并决定字符串变量的值时,WF以某种方式将WF的参数视为字符串,而不是变量的名称。因此,我得到了不正确的结果。复制步骤:-创
WWF 能否处理同时“主动”并行处理数十条记录的高吞吐量场景? 我们希望构建一个每小时处理几千条记录的工作流程。每条记录最多需要一分钟来处理,因为它会进行外部 Web 服务调用。 我们正在测试 Win
在我的项目中,我有一个在多个实体上运行以完成业务交易的工作流程。表示工作流逻辑的最佳位置是什么?目前我只是创建一个“XXXManager”,它负责与实体对象协作以完成业务交易。还有其他选择吗? 最佳答
我想编写一个工作流应用程序,将链接路由到文档。路由基于机器而不是用户,因为我不知道谁将在给定的岗位上。例如,我有一个表格。它最初是在位置 A 填写的。现在我希望它转到位置 B 并让他们填写其余部分。最
在我们的项目中,我们需要一个规则引擎组件,经过一段时间的研究,我发现.NET Workflow 也有它的规则引擎。 .NET 工作流规则引擎和其他引擎之间是否有任何完整的比较列表,例如NxBRE、Dr
我认为这可能是一个简单的问题,但我似乎无法弄清楚。 我有一个简单地发送邮件的工作流程。在邮件的内容中,我 有一个超链接可以返回到我们的 SAP CRM 系统。我将一些参数传递给这个超链接。 工作流程工
我正在试用 Workflow 4.0,希望编写自定义事件来启动外部可执行文件,等待该过程完成,然后恢复工作流中的后续步骤。 我发现以下示例显示(靠近页面底部)如何编写一个事件来等待文件到达特定目录:
我有一个工作流,它将观察某些数据库并在它注意到触发器时启动其他工作流。我只希望这个“观察者”工作流程的一个实例在任何时间点运行;否则,如果有两个或更多正在运行,他们都会注意到更改并启动相同的工作流程,
使用 Windows Workflow Foundation WF4,我有一个带有 System.Guid 的自定义事件名为 UniqueId 的属性. 我希望用户能够将我的事件拖到工作流上,并让它自
Closed. This question does not meet Stack Overflow guidelines。它当前不接受答案。 想改善这个问题吗?更新问题,以使为on-topic。 6
已结束。此问题正在寻求书籍、工具、软件库等的推荐。它不满足Stack Overflow guidelines 。目前不接受答案。 我们不允许提出寻求书籍、工具、软件库等推荐的问题。您可以编辑问题,以便
我正在尝试重新托管 WF4 工作流设计器。在“导入”选项卡中,我希望默认导入一些命名空间。它看起来像这样: Imported namespaces http://imageshack.us/m/850
how to work with 2010 workflows using powershell 上有一些指南.有人可以向我指出如何对 2013 年的工作流程做同样的事情吗?它们不再列在 $list.
在哪里可以找到 Nintex Workflow 网络服务的文档? 网络服务可以在http://myservername/MyNintexSite/_vti_bin/nintexworkflow/wor
我创建了一个 Activity (CodeActivity) 来检索我居住的温度。 我不想将该事件添加到工作流中并将其连接到一个 if 语句/事件,该语句/事件可以根据我的温度参数做不同的事情。 但我
我是一名优秀的程序员,十分优秀!