Database 基于工作流系统的数据库设计
我正在为一家工作流程复杂的销售公司设计一个数据库。流程从销售专员开始,然后是团队领导,最后是经理。在批准提案之前,经理将其发送给部门业务分析师。在收到dba的意见后,他可以将提案发送回销售专员,以便对提案进行修改。经理也可以拒绝该提议。如果满意,经理将转发给销售总监。目前设计的表格如下:-Database 基于工作流系统的数据库设计,database,postgresql,database-design,relational-database,Database,Postgresql,Database Design,Relational Database,我正在为一家工作流程复杂的销售公司设计一个数据库。流程从销售专员开始,然后是团队领导,最后是经理。在批准提案之前,经理将其发送给部门业务分析师。在收到dba的意见后,他可以将提案发送回销售专员,以便对提案进行修改。经理也可以拒绝该提议。如果满意,经理将转发给销售总监。目前设计的表格如下:- Table: ProposalBasicData Id, Title, ProposalDate, Scope, Objective Table: ProposalState Id, Name (Va
Table: ProposalBasicData
Id, Title, ProposalDate, Scope, Objective
Table: ProposalState
Id, Name
(Values - Forwarded , Approved , Returned , Rejected)
Table: UserType
Id, Name
(Values - SalesOfficer, TeamLead, Manager , DBA, DirectorSales)
Table: WorkFlow
Id, StartUserType, NextUserType, StateId, IsActive
Table: RequestAction
Id, ProposalId, WorkFlowId, UserId, ActionDate
请就设计提出建议。此类问题会引发许多问题。例:
- 在表中,工作流将状态转换定义为将分配从一个用户更改为下一个用户
- 这可能是一个问题。假设用户生病、离开、休假。。。那么你的流量就被阻塞了
- 它也不允许团体概念
- 其他人(如我)将定义一个转换表。开始状态,下一个状态
- 工作流将是一个转换列表
- 每个转换都要求用户属于特定类型。或者从用户管理的角度来看,有某个角色,或者是某个组的成员
- 客户。该提案是针对哪个客户的
- 谁是负责审核工作流程并推进工作流程的销售代表或客户经理
- 链接到其他系统:它如何链接到采购、应收账款等
编辑:20181004 我在您的评论之后添加了以下模型。我决定将工作流放入数据库: 注释(按字母顺序排列的表格):
- 雇员
- 可以通过employee_has_EmployeeRole表将每个员工链接到n个EmployeeRole
- 提议
- 员工被链接为销售人员,因为他发起了一项提案
- 工作流是链接的,因为对于不同的提案可能存在许多工作流
- 过渡
- 两次链接到状态。开始状态和结束状态
- 将链接EmployeeRole,以确定员工执行此转换必须扮演的角色
- 强制执行将由应用程序完成
- Workrlow\u具有\u转换
- 链接到工作流的转换
- 在此记录完成转换的员工
- 完成日期也保存在这里
- OrderInWorkflow只是一个数字,它允许您对Workflow\u具有\u转换条目进行排序
- 应用程序必须确保在其他低阶转换完成之前未完成转换(即DoneDate为null)
- 它还将验证试图完成该任务的员工是否具有适当的EmployeeRole
- Start a Proposal
- Verify that the user trying to start a new one has the role "Sales Officer"
- Collect basic information.
- Link the Sales Officer to it (current user).
- Link a Workflow to it. Only propose the workflows which have at least 1 Workflow_has_Transition.
- Send a notification to the Employee(s) which have the EmployeeRole for the first Workflow_has_Transition for this new Workflow.
- These employees receive a notification.
- Progressing through the workflow
- An employee receives a notification about a Proposal and it's "todo" Transition.
- Employee views Proposal and Workflow (use the OrderInWorkflow to ORDER BY Transitions).
- Employee approves if he has the proper EmployeeRole, fill DoneBy_idEmployee and DoneDate.
在浏览应用程序场景时,您会发现差距或缺少的项目
Ex.1是否要记录对过渡的拒绝?那将如何处理呢?您是否向具有该转换角色的员工发送通知以进行审查
Ex.2您想保留提案的完整历史记录吗?例如,it过渡X被拒绝两次,但第三次批准
有许多类似这样的场景将显示模型的弱点,在完成此分析时,您可以修复这些弱点。现在它并不完美,我没有花很多时间在它上面。但这是一个起点,说明了我的想法。这些问题引发了许多问题。例:
- 在表中,工作流将状态转换定义为将分配从一个用户更改为下一个用户
- 这可能是一个问题。假设用户生病、离开、休假。。。那么你的流量就被阻塞了
- 它也不允许团体概念
- 其他人(如我)将定义一个转换表。开始状态,下一个状态
- 工作流将是一个转换列表
- 每个转换都要求用户属于特定类型。或者从用户管理的角度来看,有某个角色,或者是某个组的成员
- 客户。该提案是针对哪个客户的
- 谁是负责审核工作的销售代表或客户经理
ProposalBasicData {PBID,Title, ProposalDate,Scope,Objective} ProposalState {PSID,Name} UserType {UTID,Name} User {UID,Name,UTID(Usertype UTID FK) } Request{ RID, StartUID, StartDate ,PSID, IsActive } RequestAction {AID,RID, RequesterUID, ReceiverUID, Date, Comments, IsCompleted }