崔文远 Troy Cui 老崔先生的上海生活、技术博客

FlowPortal.Net中写代码自定义步骤处理人

就写写代码,大家参考一下。

if (Convert.ToString(FormDataSet["FormManpower.Location"]).Contains("SHANGHAI"))
{
return Role.FromFullName("BPMOU://Shanghai/HR Specialist").Members;
}
else if (Convert.ToString(FormDataSet["FormManpower.OrderBPCode"]).Contains("BEIJING"))
{
return Role.FromFullName("BPMOU://Beijing/HR Specialist").Members;
}
else
{
return Initiator.GetParentOU("Company").GetAllRoles("HR Specialist").AllMembers;
}


More...

FlowPortal.Net BPM中所有可查看任务的一个权限bug

 姑且称之为bug吧,这个涉及到权限的管理,从记录的时间维度来看,这个地方的确是个bug。我画了一张图,帮助大家理解。

我处理的时候是找到2个特别的组,查看一下 Everyone这个组的记录,删除掉不需要的历史记录即可。

More...

6年做BPM的实施、开发、推广应用的一个小结

晚上加班整理了一下这些年(从2010年就开始使用了)FlowPortal.Net BPM的使用情况,希望能从用户、流程、申请、效率、价值等角度做一些可视化的分析。发现几点有趣的现象。

1、真正用得多的流程都是跟员工利益有重大关系的。
2、有一些流程只是为了帮助一小部分人考虑的时候,产生的效益其实不大。
3、没有一个独立的流程管控部门,不做绩效分析、流程梳理和优化,其实很难达到提高效率的目标,顶多只是电子化,无纸化。
4、做流程很寂寞,需要坚守并打开思路。思考如何做的更好,不能单纯从技术角度考虑。得从老板的角度考虑钱、时间、资源、效率。

More...

Flowportal.Net BPM中拒绝后更新数据库字段的方法

今天FlowPortal.Net群里有人提问一个问题,希望能在流程被拒绝后,更改流程对应数据库中的指定字段值,这个其实很简单啦,FlowPortal提供了很强大的流程事件,大家可以自行写代码。

请问,流程拒绝后,如何更改流程字段

例如:流程提交收 字段a 有空,改为 ‘申请中’,同意后,A改为 ‘同意’,如果拒绝 A 改为 空

打开“流程管理器”右键点击指定的流程,点击"Event"的Tab,就能看到丰富的事件,我常用的有OnTaskRejected、OnTaskAborted、OnTaskDeleted,其实这几项我实战项目中必须要配置的。

最关键的就是代码的写法,大家参考以下代码。其中FormHire是你流程对应的表(我这个例子是非重复表)名,Status是其中的字段。


FormDataSet.Tables["FormHire"].Rows[0]["Status"] = "Rejected";


补充:后来快乐DIY问我:如果是重复表呢,好吧,做好人做到底,这个代码不管重复表还是不重复表都行:FromDataSet.Tables["tableName.FieldName"]="Reject";


简单吧?!如果觉得有用,就留下你的大名,留言给我你的感触。

做IT也得看清趋势

今天去参加了2016上海Tableau的年度峰会,感触颇多。开始之前,先说一点激励的体悟,一个公司有时候因为整体行业形势、个体业绩等原因造成大环境没有升职加薪的机会,这点任何部门、任何人都没有机会的时候,如何留住团队的骨干就涉及到激励。有时候除了加薪、升职之外,还有荣誉奖励、培训、接触行业动态机会等。如果你也做领导,记得尝试一下这些方式,如果你站在普通员工角度考虑,不妨利用好机会,把去抱怨的时间拿出来给自己充电、提升自己的价值,那么终有一天,你的价值会体现出来,不在此处,便在彼处!

More...

多公司下Flowportal.Net BPM流程步骤处理人的设定

6月份以来随着ERP系统的升级上线,忙得不可开交,但因为公司组织机构变动,还是得花时间弄BPM的流程审批人的问题,为了一套流程同行所有的中国区的组织,我们使用角色的定义来设定流程。其中一个典型的是出差申请,其中一个步骤是给到申请人和同行人所在的部门最大的老板审批,我们在BPM的每个Company级别下的组织架构下开设Department级别的部门,然后在每个部门设定一个Department Head的角色。但是在设定步骤审批人的时候,使用以下代码代表当前申请人所在部门的Department Head。

More...

BPM的移动互联的一点想法

上周老板说弄个公司的羽毛球活动的在线报名,我首先想到的就是可以放在BPM系统里面,弄一个流程,但后来想想其实这种活动发起和报名,有很多免费的应用(包括WebApp),其中一个很接地气的国内应用就是基于微信号:messagehelper,中文名叫:信息助手,他们官方网站:hudong.ba,这个是Tony以前推荐给我的,当初因为这个还搞过一个类似的程序,用来网上预订冬枣,然后就没有然后了。

可是我们都知道的,目前国内的移动互联网应用那么多,企业级应用未来也会走到这个趋势来的,那么基于BS架构的BPM系统,我个人觉得其实是未来最有可能从企业内部互联外部的一个系统,这个外部可以代表外部用户,包括客户和供应商,也可以代表自己的员工在公司外部。

如果有一天,BPM走向外部,其实有一个很好的平台可以借助,那就是微信公众平台。如果你还不了解,请百度下。

也许有一天大部分职场人士的手机里都有微信,那么接入微信后,你的BPM就有很大的优势,你只需要绑定微信账号和企业内部的BPM账号,然后就能让用户非常方便的连接你的应用。登录微信,就能方便的看到待处理任务,就能方便的处理任务,提交申请等,该多美好呀。

各位BPM厂商,别说我没提醒你,赶紧的接入微信吧。

Flowportal.Net BPM的浏览权限变更问题

今天处理了一个特别的Case,本来流程的权限开了所有人都可以查看(如下图),但是因为某些申请的内容较敏感,现在不希望公开给所有人了。于是只能后台进行数据库的修改,相关SQL代码如下。


/****** Script for SelectTopNRows command from SSMS  ******/
SELECT TOP 1000 [TaskID]
      ,[SID]
      ,[AllowRead]
      ,[AllowAdmin]
      ,[ShareByUser]
      ,[CreateDate]
      ,[CreateBy]
      ,[ID]
      ,[ExtYear]
      ,[ExtDeleted]
  FROM [BPMDB].[dbo].[BPMSecurityTACL]
  --WHERE TaskId=10225
  
WHERE TaskId IN (SELECT TaskId FROM [BPMDB].[dbo].[BPMInstTasks] WHERE ProcessName='Travel')
AND SID='S_GS_90674E5E-AC3C-4032-9EDF-7477F2247542'
ORDER BY CreateDate DESC

UPDATE [BPMDB].[dbo].[BPMSecurityTACL]
SET AllowRead=0
WHERE TaskId IN (SELECT TaskId FROM [BPMDB].[dbo].[BPMInstTasks] WHERE ProcessName='Travel')
AND SID='S_GS_90674E5E-AC3C-4032-9EDF-7477F2247542'


More...