The clock thread may not wake up during the daily pause
and daily resume minute, and when it does not, the corresponding
wall clock action will be missed.
The fix is in checkout the time of operations every time the
clock thread wakes up.
There is no longer need for the clock to wake up in the middle of
a wall clock minute. So we improved the user experience by waking
up this thread at the beginning of every minute.
Reason is due to premature terminating postback threads because
the serviceActivityCount is decremented erreously when updating
intermediate job statuses with portal.
Fix is in classifying job status as final or non-final.
As it is, all JobStatus in CommEngine are final; however,
derived classes may have non-final JobStatus.
Fixed by decrementing serviceActivityCount only by postJobStatus method.
Also jobs being scheduled are taken into considering when deciding
to advance broadcast state COMPLETED to ALLDONE.
Thie allows for removal of entries from the original enum JobStatus that more
appropriately belong to derivation of CommEngine. Such data complicates
the management of the original JobStateus when adding new CommEngines.
These entries can be declared in a new enums implementing
the JobStatus interface, for each derived CommEngine.
The service threads do not terminate immediately, but, instead
each service thread picks up one more job before terminating,
causing servicing more jobs which are not reported back to portal.
before progressing to COMPLETED state and issue state change
notification to portal.
Also make state change report to be a single line for ease
of grep'ing log file.