Until v24.7 the next major release comes out, here is an (Oracle) SQL query that will list AE server processes including JWP roles.
-- List active AE server processes, including JWP roles & MQ table block counts for CPs.
-- CTE to parse MQLS table entry with ID ASSGNRLS and retrieve assigned JWP roles.
WITH JWP_Roles AS (
SELECT
REGEXP_SUBSTR(token, '[^=]+', 1, 1) AS JWP_Name,
REGEXP_SUBSTR(token, '[^=]+', 1, 2) AS JWP_Roles
FROM (
SELECT REGEXP_SUBSTR(AssgnRls, '[^;]+', 1, LEVEL) AS token
FROM (select UTL_RAW.CAST_TO_VARCHAR2(DBMS_LOB.SUBSTR(mqls_content, 4000, 1)) AssgnRls from mqls where mqls_id = 'ASSGNRLS')
CONNECT BY REGEXP_SUBSTR(AssgnRls, '[^;]+', 1, LEVEL) IS NOT NULL
AND PRIOR SYS_GUID() IS NOT NULL
AND PRIOR AssgnRls = AssgnRls
))
-- Main query
SELECT SUBSTR(OH_NAME, INSTR(oh_name,'#') + 1) NAME, CASE MQSRV_TYPE
WHEN 1 THEN 'CP - Communications process'
WHEN 2 THEN 'WP - Work process'
WHEN 4 THEN 'PWP - Primary work process'
-- WHEN 8 THEN 'A - Agent'
WHEN 16 THEN 'JWP - Java work process'
WHEN 32 THEN 'REST - REST process'
WHEN 64 THEN 'JCP - Java communications process'
ELSE TO_CHAR(MQSRV_TYPE)
END AS TYPE, JWP_Roles, HOST_HOSTNAME, HOST_TCPIPADDR IP, HOST_TCPIPPORT PORT,
MQSRV_CONNCNT CONN,
GET_BLOCK_COUNT('MQ1' || SUBSTR(OH_NAME, INSTR(OH_NAME,'#') + 1)) MQ1,
GET_BLOCK_COUNT('MQ2' || SUBSTR(OH_NAME, INSTR(OH_NAME,'#') + 1)) MQ2,
HOST_NETAREA AREA, HOST_VERSION, MQSRV_STARTTIME, MQSRV_LASTUPDATE, MQSRV_RESTENDPOINT
--, HOST_SMTCPIPPORT, HOST_SMPHRASE, HOST_SMDISPLAYNAME
FROM OH
JOIN HOST ON OH_IDNR = HOST_OH_IDNR
LEFT OUTER JOIN MQSRV ON OH_NAME = MQSRV_NAME
LEFT JOIN JWP_Roles ON OH_NAME = JWP_Roles.JWP_Name
WHERE OH_OTYPE = 'SERV'
AND MQSRV_TYPE IS NOT NULL
ORDER BY OH_NAME
I still do not know how, using SQL alone, to distinguish regular WPs from DWPs, or to identify regular (non-Java) WP roles.