虽然我可以看到来自管理控制台的 SOAP 查询和响应,但我找不到端点以便自己连接到它。总的来说,这似乎很麻烦。于是我想出了直接打数据库的想法。我们将 LiquidOffice 数据库存储在 SQL 2005 实例中,因此我编写了以下查询:
SELECT P.PROC_ID AS [ID],
REVERSE(LEFT(REVERSE(PDef.PROC_DFN_PATH),CHARINDEX('/',REVERSE(PDef.PROC_DFN_PATH))-1)) AS [Process],
T.TASK_NAME AS [Task],
DATEADD(millisecond, DATEDIFF(millisecond,GETUTCDATE(),GETDATE()), DATEADD(MINUTE, (P.START_DATE/60000), '1/1/1970')) AS [Started]
FROM dbo.CS_PROCESSES AS P
INNER JOIN dbo.CS_TASKS AS T
ON P.PROC_ID = T.PROC_ID
INNER JOIN dbo.CS_PROCESS_DFN AS PDef
ON P.PROC_DFN_ID = PDef.PROC_DFN_ID
WHERE T.[STATE] = 3
这将返回所有失败的任务,并为您提供进程 ID、进程名称、失败的任务名称以及进程启动的日期/时间。它并不完美,但它对我们有用!