# Process Definitions

> Browse PeopleSoft Process Scheduler process definitions with configuration, output options, execution statistics, and schedule variance.

---

Site [llms.txt](/llms.txt)

---

<div id="pslens-context-panel" class="card border-info mb-4 d-none">
  <div class="card-header bg-light text-info py-2 fw-bold d-flex align-items-center border-bottom border-info-subtle">
    <i class="bi bi-info-circle-fill me-2"></i>
    <span>Tailored Operational Context</span>
  </div>
  <div class="card-body p-0">
    <ul class="list-group list-group-flush">
      <li id="row-db" class="list-group-item d-flex align-items-center justify-content-between py-2 d-none">
        <strong>Target Database:</strong>
        <span id="ctx-db" class="badge bg-secondary font-monospace">&mdash;</span>
      </li>
      <li id="row-type" class="list-group-item d-flex align-items-center justify-content-between py-2 d-none">
        <strong>Context Type:</strong>
        <span id="ctx-type" class="badge bg-light text-dark border font-monospace text-uppercase">&mdash;</span>
      </li>
      <li id="row-severity" class="list-group-item d-flex align-items-center justify-content-between py-2 d-none">
        <strong>Alert Severity:</strong>
        <span id="ctx-severity" class="badge">&mdash;</span>
      </li>
      <li id="row-time" class="list-group-item d-flex align-items-center justify-content-between py-2 d-none">
        <strong>Triggered Time:</strong>
        <span id="ctx-time" class="text-muted small">&mdash;</span>
      </li>
      <li id="row-details" class="list-group-item py-2 d-none">
        <strong id="label-details" class="d-block mb-1">Firing Context:</strong>
        <code id="ctx-details" class="d-block p-2 bg-light border rounded small"
          style="white-space: pre-wrap; word-break: break-all;">&mdash;</code>
      </li>
      <li id="row-sql" class="list-group-item py-2 d-none">
        <div class="d-flex justify-content-between align-items-center mb-1">
          <strong id="label-sql">Contextual SQL:</strong>
          <button id="btn-copy-sql" type="button" class="btn btn-sm btn-outline-secondary py-0 px-2 small">
            <i class="bi bi-clipboard me-1"></i>Copy SQL
          </button>
        </div>
        <pre class="mb-0 p-2 bg-light border rounded small"><code id="ctx-sql" style="white-space: pre-wrap; word-break: break-word;">&mdash;</code></pre>
      </li>
    </ul>
  </div>
</div>

<script>
  (function () {
    const params = new URLSearchParams(window.location.search);
    const metadata = params.get('metadata');
    if (!metadata) return;

    try {
      
      const base64 = metadata.replace(/-/g, '+').replace(/_/g, '/');
      const jsonStr = decodeURIComponent(escape(window.atob(base64)));
      const data = JSON.parse(jsonStr);

      if (data) {
        let hasData = false;

        if (data.db) {
          document.getElementById('ctx-db').textContent = data.db;
          document.getElementById('row-db').classList.remove('d-none');
          hasData = true;
        }

        if (data.type) {
          document.getElementById('ctx-type').textContent = data.type;
          document.getElementById('row-type').classList.remove('d-none');
          hasData = true;
        }

        if (data.severity) {
          const severityBadge = document.getElementById('ctx-severity');
          const severity = data.severity.toLowerCase();
          severityBadge.textContent = severity.toUpperCase();
          if (severity === 'critical') {
            severityBadge.className = 'badge bg-danger';
          } else if (severity === 'warning') {
            severityBadge.className = 'badge bg-warning text-dark';
          } else {
            severityBadge.className = 'badge bg-info';
          }
          document.getElementById('row-severity').classList.remove('d-none');
          hasData = true;
        }

        if (data.t) {
          const date = new Date(data.t * 1000);
          document.getElementById('ctx-time').textContent = date.toLocaleString();
          document.getElementById('row-time').classList.remove('d-none');
          hasData = true;
        }

        if (data.details) {
          document.getElementById('ctx-details').textContent = data.details;

          
          const labelDetails = document.getElementById('label-details');
          if (data.type === 'object') {
            labelDetails.textContent = 'Object Metadata Details:';
          } else if (data.type === 'report') {
            labelDetails.textContent = 'Report Description:';
          } else {
            labelDetails.textContent = 'Firing Context:';
          }

          document.getElementById('row-details').classList.remove('d-none');
          hasData = true;
        }

        if (data.sql) {
          document.getElementById('ctx-sql').textContent = data.sql;
          document.getElementById('row-sql').classList.remove('d-none');
          const copyBtn = document.getElementById('btn-copy-sql');
          if (copyBtn && navigator.clipboard) {
            copyBtn.addEventListener('click', function () {
              navigator.clipboard.writeText(data.sql).then(function () {
                copyBtn.innerHTML = '<i class="bi bi-check2 me-1"></i>Copied';
                setTimeout(function () {
                  copyBtn.innerHTML = '<i class="bi bi-clipboard me-1"></i>Copy SQL';
                }, 2000);
              });
            });
          }
          hasData = true;
        }

        if (hasData) {
          document.getElementById('pslens-context-panel').classList.remove('d-none');
        }
      }
    } catch (e) {
      console.error('Failed to parse operational context metadata:', e);
    }
  })();
</script>

Process definitions (`PRCSDEFN`) specify the batch programs, reports, and scripts executable via PeopleSoft Process Scheduler. They map a logical process name to an underlying program type (SQR, Application Engine, COBOL, XML Publisher) and define command-line parameters, run control components, and default output options.

psLens pulls the process definition properties, execution statistics, recurrence schedule variance, run control record mappings, and project membership into a single browser view.

## Object Relationships

Process Definitions configure batch program execution within Process Scheduler:

- **Executes Batch Programs**: Process Definitions (`PRCSDEFN`) map to underlying executable objects such as App Engines (`PSAEAPPLDEFN`), SQRs, or COBOL programs.
- **Mapped to Run Control Components**: Process Definitions link to run control components (`PRCSDEFNPNL`) that store parameters in header/detail records.
- **Bundled in Process Jobs**: Process Definitions can be grouped together into Process Jobs (`PSPRCSJOBDEFN`).

## How psLens Improves Process Definition Inspection

In Application Designer or Process Scheduler setup, reviewing a process definition requires navigating separate tabs for parameters, locations, and output destinations, while execution metrics require running custom SQL against `PSPRCSRQST`.

psLens combines definition properties, historical statistics, recurrence schedule variance, run control record mappings, and project membership into a single view.

## Search Page

URL: `/processdefinitions?db={database}`

<figure><img src="/images/screenshots/metadata/process-definitions-search.png"
			alt="Process Definitions search results for pt"><figcaption>
			<p>Process Definition search results for <code>pt</code> showing Application Engine processes</p>
		</figcaption>
</figure>


- **Search:** Search by process name (prefix match) or wildcard `%` patterns (for example, `%AUDIT%` or `%`).
- **Filters:** Filter process definitions by process type (e.g., Application Engine, SQR Report), component, or modification metadata.

## Detail Page

URL: `/processdefinitions/{PRCSTYPE}/{PRCSNAME}?db={database}`

The Detail Page displays process configuration, historical metrics, and schedule variance:

- **Configuration & Properties:** Displays execution details including command-line parameters, target server name, API awareness, run control component, and priority.
- **Output Settings:** Shows output type (Web, File, Printer) and output format (PDF, CSV, HTML).

### Execution Statistics

<figure><img src="/images/screenshots/metadata/process-definitions-execution-stats.png"
			alt="Execution Statistics panel showing total runs, average duration, status breakdown, top operators, and servers"><figcaption>
			<p>Execution Statistics panel summarizing run history, success rates, top operators, and servers</p>
		</figcaption>
</figure>


psLens analyzes historical process request data (`PSPRCSRQST`) to present statistics on:

- Total runs, average execution duration, and first/last run timestamps.
- Run status breakdown (percentage of successful versus failed or queued runs).
- Top operators and servers executing the process.

### Recurrence History & Schedule Variance

<figure><img src="/images/screenshots/metadata/process-definitions-schedule-variance.png"
			alt="Recurrence Run History &amp; Schedule Variance panel showing start delay variance breakdown and instance run log"><figcaption>
			<p>Recurrence Run History &amp; Schedule Variance panel highlighting schedule latency and instance run logs</p>
		</figcaption>
</figure>


For processes executed via recurrence schedules (`RECURNAME <> ' '`), psLens calculates schedule latency:

- **Start Delay Variance (`BEGINDTTM - RUNDTTM`):** Compares target scheduled run times against actual execution start times.
- **Summary Metrics:** Displays Total Recurring Runs, Average Start Delay, Maximum Start Delay (with instance ID), and On-Time Rate percentage.
- **Delay Breakdown & Historical Log:** Categorizes runs into On Time (&le; 1m), Minor Delay (1-5m), and Significant Delay (&gt; 5m) with instance-level status badges.

## Related Data Panels

### Run Control Records & Jobs

<figure><img src="/images/screenshots/metadata/process-definitions-run-control.png"
			alt="Run Control Records panel showing component mapping, record name, type, and key count"><figcaption>
			<p>Run Control Records panel showing mapped component PRCSMULTI and header record PRCSSAMPLEREC</p>
		</figcaption>
</figure>


- **Run Control Records:** Identifies the run control component (`PRCSMULTI`) and mapped header/detail tables (`PRCSSAMPLEREC`) used to store process parameters.
- **Jobs:** Displays Process Job definitions (`PSPRCSJOBDEFN`) that include this process as a job item.

### Included in Projects

Queries `PSPROJECTITEM` where `OBJECTTYPE = 20` to display Application Designer projects containing this Process Definition.
