Наконец-то я нашел способ решить проблему. Поскольку каждый раз, когда пакет не распартирован, переменные повторно инициализируются на 0, решение состоит в том, чтобы наследовать время запуска рассоединенным агентам. Таким образом, на изображении ниже и пакетный, и элементный агент будут иметь переменную с именем "start". Тип пакета дополнительно будет иметь переменную с именем "end".
Образ процесса
Соответственно, необходим следующий код:
- Блокировать «пакетирование» при выходе: batch.start = time ();
- Блокировать «unbatch» при выходе: agent.start = batch.start; (элементы наследуют начало от пакета)
- Блок "batch1" При добавлении: batch.start = agent.start; (в отличие от предыдущего блока, пакет наследует время начала от элементов)
- Блок "batch1" При выходе: batch.end = time ();
Таким образом, мы будет иметь время начала пакета в процессе и время окончания, что позволит нам рассчитать длительность этого пакета в системе, не сбрасывая его переменные каждый раз, когда он не пакетируется.