你有没有遇到过像这样的情况,如果有的话,你是怎么解决的?
我们有一个经历多个阶段的记录,例如:
提交 - > 初步评估 - > 最终审核 - > 活性
保证这些主要状态类型的进展顺序。但是,有些因素会使事情变得复杂:
其中一些州可能需要一个 附加条件的数量 在记录移动到之前遇到了 下一个州。其中一些条件 或“子状态”可以是可选的 可能需要一些,或者可能需要 需要满足“任意2分之3 可能的条件“标准。这些 子状态或子条件可以 以任何顺序见面。
可以修改该过程 动态地和不同的 不同的群体。那就是多个 组存在于系统和用户中 从每个组可以指定哪个 国家和子条件是 参与该过程(一些州 可以跳过子条件 一些团体)。我们需要存储 以某种方式在数据库中进行处理 为此提供了便利。
现在,我知道这是一套相当复杂的标准,所以我不期待很多反馈......但我想知道是否有一些已发布的设计模式,技术或方法你们都知道以优雅的方式帮助实现这一点。我的同事和我花了好几个小时试图找到最好的解决方案,但我仍然觉得我们目前的解决方案太难看了。
如果您想要更多说明,请随意添加评论 - 这是一个非常难以描述的问题,所以如果我不够清楚,我也不会感到惊讶。谢谢!的
答案 0 :(得分:1)
您可以考虑
Modelling Office Processes with Functional Parsers
Technical report UU-CS-1994-50
Gert Florijn
Utrecht University
[http://www.serc.nl/people/florijn/papers/UU-CS-1994-50.html][1]
这是一个片段:
3.2。第一个例子:费用报销
考虑报销差旅费用的程序。它由必须指定旅行细节的用户发起,特别是花费的钱。然后将此规范发送给用户的经理,该经理必须批准报销,但也可以拒绝报销。如果获得批准,主管部门将把钱转移给员工。稍微简化一下,我们可以按如下方式对此过程的顶层进行建模:
expenseclaim = arec "expenseclaim"
(serie [expenseform, inspect, oneof [reimbursed, refused]])
reimbursed = arec "reimbursed" (serie [approved, reimbursement])
填写费用表意味着提供几条信息,进一步细分为个人信息和索赔本身的信息,例如支出的项目,涉及的旅行费用,会议出席费和其他费用:
expenseform = arec "expenseform" (serie [personal, claim])
personal = arec "personal" (serie [requester,department,bankaccount])
claim = arec "claim" (serie [project,travel,conference,other])
其他解析器被建模为基本动作解析器,即
inspect = actl "inspect" approved = actl "approved"
refused = actl "refused" requester = actl "requester"
department = actl "department" bankaccount = actl "bankaccount"
project = actl "project" travel = actl "travel"
conference = actl "conference" other = actl "other"
reimbursement = actl "reimbursement"