FlowPortal BPM中有用的SQL:统计每个人待处理任务数量

这个适用于4.5及以上,目前应该是5.7了。

SELECT ExtRecipient
,COUNT(*) AS Quantity
FROM [BPMDB].[dbo].[YZV_TaskList]
WHERE NodeName <> 'Start' 
AND State = 'Running' 
GROUP BY ExtRecipient
ORDER BY ExtRecipient

通过读取自带的视图,可以省去了3.5版本中的AgentAccount的问题。

通过AutoMate调度一下,每周自动发送一下邮件,省得每个步骤上都去单独设置提醒了。

收到的邮件格式如下,供参考。

FlowPortal BPM 3.5 有用的SQL:统计每个人有几条未处理任务

本版本仅限于3.5版本,不适用于4.5及以上。

第一个版本如下:

SELECT
[BPMDB].[dbo].[BPMInstProcSteps].[OwnerAccount] AS ExtRecipient
,COUNT([BPMDB].[dbo].[BPMInstProcSteps].[OwnerAccount]) AS Quantity
      
FROM [BPMDB].[dbo].[BPMInstProcSteps] INNER JOIN [BPMDB].[dbo].[BPMInstTasks] ON [BPMDB].[dbo].[BPMInstProcSteps].[TaskID] = [BPMDB].[dbo].[BPMInstTasks].[TaskID]
WHERE [BPMDB].[dbo].[BPMInstTasks].[State] = 'Running'
AND [BPMDB].[dbo].[BPMInstProcSteps].[FinishAt] IS NULL AND [BPMDB].[dbo].[BPMInstProcSteps].[OwnerAccount] <> 'waibpm' AND [BPMDB].[dbo].[BPMInstProcSteps].[NodeName] <> 'Start'
GROUP BY [BPMDB].[dbo].[BPMInstProcSteps].[OwnerAccount]
ORDER BY [BPMDB].[dbo].[BPMInstProcSteps].[OwnerAccount]

有个问题,就是一旦任务被处理人手动或自动转给助理/代理人,这个数据就不准了。所以就有了第二个版本:

SELECT
ISNULL([BPMDB].[dbo].[BPMInstProcSteps].[AgentAccount],[BPMDB].[dbo].[BPMInstProcSteps].[OwnerAccount]) AS ExtRecipient
,COUNT(*) AS Quantity
FROM [BPMDB].[dbo].[BPMInstProcSteps] INNER JOIN [BPMDB].[dbo].[BPMInstTasks] ON [BPMDB].[dbo].[BPMInstProcSteps].[TaskID] = [BPMDB].[dbo].[BPMInstTasks].[TaskID]
WHERE [BPMDB].[dbo].[BPMInstTasks].[State] = 'Running'
AND [BPMDB].[dbo].[BPMInstProcSteps].[FinishAt] IS NULL 
AND [BPMDB].[dbo].[BPMInstProcSteps].[OwnerAccount] <> 'waibpm' 
AND [BPMDB].[dbo].[BPMInstProcSteps].[NodeName] <> 'Start'
GROUP BY ISNULL([BPMDB].[dbo].[BPMInstProcSteps].[AgentAccount],[BPMDB].[dbo].[BPMInstProcSteps].[OwnerAccount])
ORDER BY ISNULL([BPMDB].[dbo].[BPMInstProcSteps].[AgentAccount],[BPMDB].[dbo].[BPMInstProcSteps].[OwnerAccount])

这个SQL写得并不好,因为GROUP BY和ORDER BY里面还有运算。最好写一个UNION将有AgentAccount和没有AgentAcount的单独筛选一下,然后再来汇总。

如果数据量不大,用这个也无妨。

另外附上在AutoMate中调度这个SQL,然后自动发送邮件的细节,供参考(图可以下载后放大看)。

#0006:你每天都在更新软件呀

说来惭愧,今天有个老同事跟我聊天,我才想起来断更的事情。

距上次发文已经1个月零4天了,这些天的业余时间都在忙旺财珠宝库存管理系统黄金电商版的重构,五一劳动节也只休息了2天。

加上中间感冒,因为晚上搞得太晚,本来好了一半的感冒又延长了好几天。好在重构和产品化的工作已接近尾声,预计月底前能上架淘宝开售,这样老婆孩子的伙食问题又多了一个保障。这么干下去,多搞几个产品,就可以多养几个员工,为国家就业做贡献了。除了帮助企业成功,还能帮助员工成功。想到这里,我笑了(你应该能感受到吧)。

为什么每天更新?

我相信小成就、小财富,其实都是日积月累,可能一段时间需要将自己的接触的东西整理下来,日积月累就会从一滴水变为一瓶水、一桶水。

但我希望打一口井,能够自动出水。

再者说了,敲代码是我喜欢做的事情,特别是通过敲键盘,在帮用户解决问题的同时,还能带来精神上的成就感和物质上的回报。何乐而不为呢!?

敲代码之外的选择

做到我这个年纪的很多同事,已经不再碰代码了,要么全转管理,要么项目管理类。而我除了敲代码外,也偶尔做些培训和咨询的工作。因为前几日有人微信付费咨询我FlowPortal BPM问题,还有Infor LN/BaaN外包项目的开发需求(没接,虽然按天计费),顺手更新了《 找我培训、咨询(问问题)、外包、技术支持前,请先阅读 》,请感兴趣的朋友预约前配合阅读。

其实说去培训是将自己的经验分享出去,但这也是一个了解外部世界的机会,分享的同时让自己更深入思考,同时因为对方的发问,而让自己被动去加速成长。而做咨询呢,可能更多地是通过提问,让对方找到解决问题的答案或最佳路径。