TIF ENOVIA/3DExperience Connector - Job Monitors

Overview

The Job Monitor feature provides configurable monitoring of job activity originating from ENOVIA job queues or from inbound TIF service listeners[*] such as JMS, RabbitMQ, or Directory Listener. Each monitor defines its own evaluation rules, threshold logic, and action set. Once the threshold is exceeded within a specified time window, the monitor executes one or more configured actions.

[*] Limitation: The Job Monitor implementation currently does not support REST or SOAP Web services. We plan to consider adding support for these in future releases.

The Job Monitor introduces a mechanism for detecting abnormal or excessive job activity across TIF services. Its key benefits include:

Early detection of abnormal job activity The monitor continuously observes job flow and can detect patterns such as:

  • Sudden spikes in job volume

  • Repeated failures

  • Stuck or looping integration jobs

  • Misconfigured upstream systems generating too many events

This enables proactive detection of issues before they impact downstream systems or users.

Automatic handling of problematic conditions When thresholds are exceeded, the monitor can perform automated corrective actions:

  • Stopping the problematic TIF queue or TIF service listener

  • Stopping a service causing excessive jobs

  • Logging messages

  • Sending email alerts

This reduces operational issues and prevents cascading failures.

Job monitors operate only within the TIF instance they are configured on. Each instance monitors its own local queue listeners and services, so monitors on different TIF instances do not observe each other’s services.

Job Matching Flow

When a job event is received, the monitor determines the job status and type. The following matching rules are then applied:

  1. Job status must match with one of the configured statuses.

  2. Matching rules by job type:

    • Outbound ENOVIA jobs → matched only by queue names (queueNames) specified in the monitor configuration

    • Inbound listener jobs → matched only by service configuration references (configRefs) specified in the monitor configuration

Job Event
   |
   v
+------------------------------------------------------+
|          Does jobStatus match configured set?        |
|   (completed, failed, pending, awaitingreply, etc.)  |
+------------------------------------------------------+
      | Yes                    | No
      |                        v
      |                      Ignore
      |                        job
      v
      +-------------------------------------------------------------+
      |                     Determine job origin                     |
      +-------------------------------------------------------------+
             |                                 |
             | ENOVIA job (has queue)          | Inbound job (listener)
             v                                 v
    +----------------------+            +---------------------------+
    |   Match queueNames?  |            |   Match configRefs?       |
    +----------------------+            +---------------------------+
         | Yes      | No                    | Yes            | No
         |          v                       |                v
         |       Ignore                     |              Ignore
         |        job                        \              job
         \                                     \
          \                                     \
           v                                     v
Route to per-target deque → evaluate threshold → actions or next evaluation

Evaluation Flow

Each monitor target maintains its own event buffer and evaluation cycle.

When an event arrives, the monitor adds the event to buffer unless in recovery. A next evaluation is scheduled according to configured rules.

During evaluation:

  • Old events are removed based on observation window

  • Threshold is checked

  • Actions executed if exceeded

  • Recovery mode started if needed

Independent Monitoring Per Target

Each matched queue or service is monitored independently, meaning separate timestamp buffer, observation window, scheduling, recovery period, threshold logic and action execution.

Configuration

Each monitor instance is configured through module.custom.properties file using the prefix:

jobMonitor.<monitorName>.<property> = <value>

Every <monitorName> must be unique.

All time‑based configuration values are expressed in seconds.

Properties

queueNames

Comma‑separated list of job queue names to monitor. Supports wildcards ? and *.

Examples:

jobMonitor.mymonitor.queueNames = q1
jobMonitor.mymonitor.queueNames = q1,q2,qa-*,qab-?

configRefs

Comma‑separated list of originating service configuration references. Supports wildcards ? and *.

Examples:

jobMonitor.mymonitor.configRefs = tvc:directorylistener/MyListener.xml
jobMonitor.mymonitor.configRefs = *jmslistener*

description

Optional description shown in Admin UI and logs. Defaults to monitor name.

jobStatuses

Comma-separated list of allowed job statuses: completed, failed, pending, awaitingreply. At least one status must be configured.

observationWindow Seconds each timestamp remains valid.

bufferCapacity

Maximum number of stored events per monitored target.

evaluationInterval

How often (seconds) the monitor evaluates events while active.

recoveryPeriod

Optional quiet period after threshold-triggered actions. During this period events are dropped.

threshold

Number of events required within the observation window to trigger actions.

actions

Supported actions:

  • mail – Send an email alert

  • stop – Stop originating queue listener or service

  • log – Log an error message

  • custom – Execute a custom Java action implementing:

    com.technia.tif.enovia.job.monitor.JobMonitorAction

At least one action must be configured.

Properties for Mail Action

mail.to

Comma-separated email recipients.

mail.subject

Optional subject supporting macros:

${NODE_ID}
${INSTANCE_ID}
${MONITOR_DESCRIPTION}
${MONITOR_NAME}
${THRESHOLD}
${OBSERVATION_WINDOW}
${MONITOR_TARGET_TYPE}
${MONITOR_TARGET}

mail.message

Optional email body. Supports the same macros as subject.

Properties for Log action

log.message

Optional log message text. Supports macros.

Properties for Custom Action

customAction

Fully qualified class for the custom action.

Configuration Example

Consider the following example:

jobMonitor.mymonitor.description= My Job Monitor
jobMonitor.mymonitor.queueNames = myqueue,otherqueue*
jobMonitor.mymonitor.configRefs = tvc:directorylistener/ListenerA.xml,tvc:rabbitmqlistener/ListenerB.xml
jobMonitor.mymonitor.jobStatuses = completed,failed
jobMonitor.mymonitor.observationWindow = 60
jobMonitor.mymonitor.bufferCapacity = 100
jobMonitor.mymonitor.evaluationInterval = 10
jobMonitor.mymonitor.recoveryPeriod = 120
jobMonitor.mymonitor.threshold = 5
jobMonitor.mymonitor.actions = mail,stop,log,custom
jobMonitor.mymonitor.mail.to = test@technia.com
jobMonitor.mymonitor.customAction = com.acme.tif.monitor.MyAction

Optional properties for log and mail action to override default subject and message.

jobMonitor.mymonitor.mail.subject       = TIF Job Monitoring Alert: ${NODE_ID}/${INSTANCE_ID}

jobMonitor.mymonitor.mail.message       = The job monitor '${MONITOR_DESCRIPTION}' has detected ${THRESHOLD} jobs from ${MONITOR_TARGET_TYPE} '${MONITOR_TARGET}' within a ${OBSERVATION_WINDOW}-seconds observation window.

jobMonitor.mymonitor.log.message        = The job monitor '${MONITOR_DESCRIPTION}' has detected ${THRESHOLD} jobs from ${MONITOR_TARGET_TYPE} '${MONITOR_TARGET}' within a ${OBSERVATION_WINDOW}-seconds observation window.

Explanation:

  • ENOVIA jobs matching myqueue or otherqueue* are monitored.

  • Inbound jobs matching one of the configRefs are monitored.

  • The monitor evaluates every 10 seconds for each active target.

  • Threshold is 5 events within 60 seconds.

  • Triggered actions: email, stop service/queue, log message, and custom callback.

  • After triggering, the monitor enters a 120-second recovery period for that specific target.