Как я должен построить функцию Oracle или другой код, чтобы измерить время для бизнес-процессов между двумя записями - PullRequest
1 голос
/ 27 мая 2019

Мне нужны предложения по разработке таблиц и записей в Oracle для обработки бизнес-процессов, состояния и времени отчетов между состояниями.

У нас есть таблица транзакций, в которой записан идентификатор записи с серийным номером, идентификатор документа, дата и время, а также статус. Статусы отражают, где находится документ в процессе утверждения, отражая задачу, которую необходимо выполнить с документом. Имеется до 40 статусов, показывающих, кто должен утверждать, и какова задача, которая выполняется. Таким образом, есть заголовок документа или родительская запись, а также несколько записей статуса в качестве дочерних записей.

Задача состоит в том, чтобы проанализировать, где находятся узкие места, какие задачи занимают больше всего времени и т. Д.

Из бизнес-задачи задание получает документ, у нас есть дата и время, когда это происходит. У нас нет даты и времени выпуска или завершения текущей задачи. Все, что у нас есть, это дата и время начала следующего задания. Обратите внимание, что документ может иметь только один статус за раз.

По причинам, по которым я не буду вдаваться, мы не можем использовать ETL для создания даты и времени окончания статуса, хотя я думаю, что это решение.

Часть проблемы заключается в том, что статусы не являются полностью последовательными или имеют фиксированный порядок. Некоторые статусы могут запускаться, останавливаться, а в дальнейшем запускаться снова.

То, что я хотел бы сообщить, это время, на еженедельной или ежемесячной основе, которое занимает каждая запись статуса, время, дата, время, конец, минус дата, время и начало. Кто-нибудь может предложить функцию или другой способ сделать это?

Мне не нужен конкретный код. Я мог бы использовать некоторый пример в псевдокоде или просто в общих чертах, как решить эту проблему. Тогда я мог бы выяснить код.

1 Ответ

0 голосов
/ 27 мая 2019

Вы можете использовать триггер после вставки и после обновления в таблице транзакций для записи в LOG_TABLE каждого изменения: идентификатор транзакции, последний статус, новый статус, кто утверждает, дата-время изменения (возможно, с использованием TiMESTAMP тип данных - это доля секунды (уход за секундами), терминал, идентификатор сеанса, имя пользователя.

Для вставки: вам нужно определить тип " статус вставки ", отличающийся для других 40 статусов. Например, если статус имеет числовой тип, «вставить статус» может быть « -1 » (минус один), поэтому последний статус « -1 » и новый статус статус вставленной записи в таблицу транзакций.

С помощью этого LOG_TABLE вы можете разработать пакет с функциями для расчета времени между измененными состояниями, отображения всех изменений, отображения последних изменений и т. Д.

...