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

Flowportal中OnBatchApproved的一条血的教训

第一版的时候因为用户需要增加了一个批量审批的事件,如果批量审批,某个字段统一设为No,后来流程变更,这块忘记了,用户汇报问题,跟踪调试了2周,才想起来这里的设定,真是血的教训。


近几日淘宝店引发的感想

有想法就要有行动

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

没耐心的人不少

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

More...

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

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

先说一下我常用到的:

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

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

More...

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...