The runtime tables (BPMDB, schema of the Process Server) that operations teams read - names are stable since 8.5 with small additions per release:
| Table | Content | Useful columns |
|---|
| LSW_BPD_INSTANCE | process instances | BPD_INSTANCE_ID (the 2072.x number), NAME, EXECUTION_STATUS (numeric state codes, values per release), BPD_REF (model id), SNAPSHOT_ID, CREATE_DATETIME, CLOSE_DATETIME, DUE_DATE |
| LSW_TASK | tasks (user and system) | TASK_ID (2078.x), BPD_INSTANCE_ID, STATUS (Received / Closed …), USER_ID (assigned user), GROUP_ID (team), SUBJECT, PRIORITY, DUE_DATE, CLOSED_DATETIME |
| LSW_BPD_INSTANCE_VARIABLES | exposed business data (searchable variables) per instance | BPD_INSTANCE_ID, NAME, VALUE |
| LSW_EM_TASK and related EM tables | event manager work (timers, UCAs, async steps) | status, scheduled time, retry count, description |
| LSW_USR_XREF, LSW_USR_GRP_XREF, LSW_USR_GRP_MEM_XREF | users, groups, memberships as BPM knows them | USER_NAME, GROUP_NAME |
| LSW_SNAPSHOT, LSW_PROJECT, LSW_BRANCH | installed snapshots / apps / tracks | ids, names, acronyms, default flags |
| LSW_BPD_INSTANCE_DATA and the execution context tables | serialised execution contexts (BLOB) | not readable - use the REST API |
-- open tasks older than 5 days by team (read-only reporting)
select g.group_name, count(*) from lsw_task t join lsw_usr_grp_xref g on g.group_id = t.group_id
where t.status = 'Received' and t.received_datetime < current timestamp - 5 days group by g.group_name; -- column names per release
-- instances per state and app
select p.short_name, i.execution_status, count(*) from lsw_bpd_instance i join lsw_snapshot s on s.snapshot_id = i.snapshot_id join lsw_project p on p.project_id = s.project_id
group by p.short_name, i.execution_status;
Rules: read only, with uncommitted-read isolation (WITH UR on Db2) so that you never block the engine; never update or delete rows (the engine caches and the execution context blobs reference them - corrupt instances follow); use the PDW for history and analytics; prefer the REST / Operations APIs where they exist (they are supported, the table layout is not); and expect columns to differ per release - check your level's tables before writing reports.
References