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,然后自动发送邮件的细节,供参考(图可以下载后放大看)。

沉静与坚持

在这个浮躁的社会里
也许最珍贵的
不过是沉静与坚持
身为草根(屌丝)
心向璀璨
再平凡的生命
都有权利去追寻不平凡的光芒

BaaN ERP LN也好,FlowPortal BPM也罢,.NET这个大方向也算。
技术精英也好,管理领袖也罢,开创事业这个大方向没错。

拜访/访谈100位在自己的领域依然沉静与坚持的人士,这个梦想,是时候开始行动,兑现自己跟自己的承诺了。

 

FlowPortal BPM官网改版了,推出20个流程的免费基础版

我一直使用的FlowPortal BPM官网网站近期改版了,看起来更加高大上了。不仅美感提高了,所传递的信息,特别是新老用户所需要的信息也更多了。

对于新版网站,我觉得比较赞的地方:

1、新增开发者中心:http://developer.flowportal.com/,这个可是从入门到精通的宝典,直接开放出来了。

2、新增4种用户的快速体验:http://trial.flowportal.com/,也不用捣鼓本地安装测试系统了,直接在线看到效果,让新用户有直观认识,让老用户也能直观看到最新版的功能。

3、推出无用户限制、无时间限制、无功能限制的免费基础班!20支流程可以永久免费使用!!!

这应该是最重磅的消息,尽管目前此项为隐藏功能,是在科学上网的时候看到的,估计上海之外的朋友也能看到这个链接。

也发现一些问题:

1、输入flowportal.com,不加www的网址,会报错:没有找到可用的资源,请检查域名flowportal.com设置是否正确!

2、手机、平板上浏览新版网站,并没有做自适应适配。

FlowPortal.Net BPM 嵌套表没有定义外键!

 

如果你在嵌套表里面做重复表,需要定义一下外键,不然会报错:嵌套表没有定义外键!为了确定嵌套表中每一行的父行,需要在数据库中为嵌套表定义指向其父表的外键。

需要在字表创建字段ParentID

点击找到ParentID字段,右键点击“Relationships”即可创建父表的连接。

近几日淘宝店引发的感想

有想法就要有行动

细心的朋友应该能看到我博客右上角的淘宝店链接,没错开了很久了,还付了1000块保证金。DTcms带来了的订单和客户最多,现在旺财系列的代码生成器是主力。其实本没想通过这个弄个皇冠店啥得,只不过觉得好玩,什么都想玩一玩,尝试一下,不做空想家。

没耐心的人不少

不少人旺旺留言,咨询问题,我觉得写得够详细了,并且在宝贝描述里写了我的手机、微信、QQ等,还特别说明旺旺不常看。可惜还是有那么多人,不仔细看,对我来说这个损失很小,但真正需要的人,那就是大损失了。我有时候觉得自己很没耐心,可是发现网上比我还没耐心的人更多。

沟通态度特别重要

昨天有个兄弟很晚了,通过旺旺留言、加我QQ留言,还给我发短信,还加我微信,就想要以前asp写得团队任务管理系统,看到我图片有个优惠价10元,希望来一套学习研究。本来我拒绝了,因为曾经10元卖过一套,后来退款了,被买的人骚扰烦死了,写得很清楚技术支持需要2份,钱就付了10元,就想要本来200的服务,怎么也得付110吧,买家不自觉,我直接退款了,源码白送了,远离垃圾。后来这位朋友的沟通,让我觉得懂得彼此尊重,一高兴就从100块直接改为10块钱了。虽然钱少了,但开心。难道我真的很需要这100快吗,没有也可以,而因此换来开心,换来在对待技术、对待交易有相同理念的朋友,收获更丰盛。

同样一个反例,是关于以前写过的Flowportal的手写签名插件,此人前几天就联系我,后来问了问题不会,忽然又联系我,总是问问题,拒绝回答我的提问,上来直接被我拒绝了。但对方不折不挠,反复问要看演示,又是说要外包开发,我道出1万起的标准,对方还不停追问,被我言辞激烈的拒绝了。沟通最起码有个前提,及时响应,谈得话题大家都清楚,自己不懂技术,上来就问一些无关紧要,还不介绍自己的情况,浪费时间,浪费生命。

发一下截图,大家自己看吧。

FlowPortal.Net BPM的类库之Context上下文:Current

近期做了个FlowPortal的技术交流,有个关于流程自动生成的自定义流水号要保存到业务表的问题,当时没准备这块涉及如此底层类库的信息,不得不在这里补充一下。

先说一下我常用到的:

  1. Context.Current.Task.SerialNum – 当前流程任务的流水号

  2. Context.Current.ClientIP – 当前登录用户的IP地址

  3. Context.Current.FromDataSet.Tables["tableName.FieldName"]  – 当前流程任务表tableName的字段FieldName值

  4. Context.Current.Task.Owner.UserInfo – 当前任务拥有者用户

  5. Context.Current.Task.Owner.UserInfo.Account – 当前任务拥有者的帐号

  6. Context.Current.AgentUser.Account – 当前代理人帐号

  7. Context.Current.Task.Agent.Account – 当前任务代理人帐号

  8. Context.Current.Task.Applicant.Account – 当前任务申请人帐号

  9. Context.Current.Task.Owner.UserInfo.ConstCenter – 当前任务拥有者的成本中心

  10. Context.Current.AgentUser.Constenter – 当前代理人的成本中心

  11. Context.Current.Task.Agent.Constenter – 当前任务代理人的成本中心

  12. Context.Current.Task.Applicant.Constenter – 当前任务申请人的成本中心

  13. Context.Current.Task.IsFinished – 当前任务是否结束,结束(True)/没结束(false)

  14. Context.Current.Task.IsRuning – 当前任务是否处于运行状态,结束(True)/没结束(false)

前2个是我每个流程都必用的字段,因为我设定了一个表模板,每张表除了必须的TaskID(重复表OrderIndex)之外,还有

  1. ID – 自增主键

  2. Status – 状态,默认为Inprocess,配合流程的OnTaskApproved,OnTaskRejected,OnTaskAborted,OnTaskDeleted进行自动更新

  3. TransactionUser – 提交人

  4. TransactionDate – 提交时间

  5. TransIP – 提交人IP

  6. LastUpdateUser – 最后修改人

  7. LastUpdateDate – 最后修改时间

  8. LastUpdateIp – 最后修改人IP

平常常用的,可以前台点选的项目我也列在这里

  1. Owner of the current step – 当前步骤处理人信息

  2. Agent – 代理人信息

  3. Log in User –  当前登录用户信息

  4. Initiator – 发起人信息

  5. Date – 日期

  6. Week – 周

  7. Form Field – 表单字段(自动关联流程、表单上的表)

如果你觉得这篇文章能够帮到你,请多帮我推荐给你的朋友们,也希望能够帮助到他们。

从崔牛的2017云图看BPM市场

上图来自牛透社(崔牛会)的崔牛2017云图关于国内BPM市场的重量级玩家。还是由衷的高兴看到FlowPortal,职业上选择一个能发展的很好的产品,也算是一种欣慰。不过说起Infor ERP LN (BaaN)就没那么开心了。

近期也接触到C#平台的开源工作流引擎和新的BPM产品,我计划今年也花时间去了解,去体验,届时也写写感受。