如何设计数据库模式以便有效地查询BPMS系统?

时间:2011-04-08 10:10:56

标签: data-warehouse bpm

现状:

我们有一个BPMS(业务流程管理套件)。对历史和实际报告的需求不断增加。 BPMS中的数据模型不是为历史查询设计的。所以我们正在分析可能的解决方案。

解决方案:

这个想法是将流中事件的数据推送到外部数据库。 BPM中的典型事件包括:创建新流程实例,更改状态,执行流程中的步骤或更改流程实例的状态。数据库除了星型模式之外还有一个有趣的替代方案。假设有两个集线器:PI(processitem实例)和OU(组织单元)和Link表LINK_PI_OU。每次将流程项分配给组织单位时,新行将添加到链接表中。链接表中的LOAD_DATE包含添加此记录时的日期时间。具有最新LOAD_DATE的链接表中的记录显示了流程实例的当前分配。

问题:

让我们假设企业想知道按组织单位分组的当前所有开放流程实例的分组 此报告的查询结果如何?真的可以表演吗? 或者我是完全错误的方式?

2 个答案:

答案 0 :(得分:1)

一般而言,我并不认为Data-Vault旨在成为最终用户报告层,甚至是虚假交易系统。

我不完全清楚您的原型,但据我了解,D-V是一个历史存储库,可以保存为(Kimball / Inmon)数据仓库提供信息的企业的所有数据。所以从高层来看......

交易系统=> D-V => DWH => (cubes =>)用户

在这种情况下,我不会向Data Vault提出查询,而是编写一些ETL来填充数据仓库并在DWH处提出查询。

另一种观点,我想,你可以在DV之上构建一组视图,这会隐藏用户的结构,但我认为我有点纯粹主义者会选择DWH

答案 1 :(得分:1)

正如@Marcud D所说,Data Vault是数据仓库的模型,通常在使用DV建模时,您必须从DV构建数据集市以用于报告目的。我认为组织单位应该建模为Satellite表,而不是Hub表。因此,无论如何,您应构建一个查询以从DV模型提供特定数据集市,然后将其用于报告目的。