我应该如何构造一个 Oracle 函数或其他代码来测量两个记录之间的业务流程时间



我需要在 Oracle 中设计表和记录的建议,以处理业务流程、状态和状态之间的报告时间。

我们有一个交易表,记录序列号记录 ID、文档 ID、日期和时间以及状态。 状态反映文档在审批流程中的位置,反映需要对文档完成的任务。 最多有 40 种状态,显示谁需要批准以及正在完成的任务。 因此,有一个文档标题或父记录,以及多个状态记录作为子记录。

挑战在于分析瓶颈在哪里,哪些任务花费的时间最长等。

从业务 pov 中,任务接收文档,我们有发生这种情况的日期和时间。 我们没有当前任务的发布或完成日期和时间。 我们所拥有的只是下一个任务的开始日期和时间。 请注意,一个文档一次只能具有一种状态。

出于我不会深入探讨的原因,我们不能使用 ETL 为状态创建结束日期和时间,尽管我认为这是解决方案。

部分挑战在于状态不是完全连续的或具有固定顺序。 某些状态可以启动、停止,并在流程的稍后重新启动。

我想报告的是每个状态记录每周或每月花费的时间,时间日期时间结束减去日期时间开始。 任何人都可以建议一个功能或其他方法来实现这一目标吗?

我不需要特定的代码。 我可以在伪代码中使用一些示例,或者只是以概述形式来解决此问题。 然后我可以弄清楚代码。

您可以在事务表上插入后和更新后使用触发器来记录LOG_TABLE每次更改:ID事务,最后状态,新状态,谁批准,更改日期时间(可能使用TiMESTAMP数据类型是小数秒护理),终端,会话ID,用户名。

对于插入:您需要定义一种">插入状态"类型,与其他 40 种状态不同。例如,状态为数字类型,"插入状态"可以是"-1"(减一),因此最后一个状态为">-1",新状态是事务表上插入记录的状态。

使用此LOG_TABLE您可以开发一个具有功能来计算更改状态之间的时间,显示所有更改,播放上次更改等功能的包。

最新更新