崔文远 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";


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

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

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

More...

.Net MVC开源工作流快速开发平台-RoadFlow

其实2014年的时候就无意间看到这款RoadFlow开源的工作流开发平台,相比ccflow,这应该属于轻量级的.Net开源平台。今年打算有空研究一下,毕竟MVC也算是目前的热点技术,充充电还是有必要的。

另外,这款软件官方的介绍是100%源码开放的,并且对于收费的版本只有2种,价格也不贵,适合小企业购买,更适合软件公司购买,集成到自己现有的系统中,应该省力不少。

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

FlowPortal.Net BPM中常用的js之:Javascript计算两个日期间隔的天数

今天开始一个系列,记录FlowPortal.Net BPM中常用的js代码。以下代码是最近请假项目中用到的计算2个日期之间的天数的(根据需要天数加了一天,请根据实际情形自行调整),提供给大家参考,使用方法为在相应的Text的Express上使用代码:javascript('CalculateDay',WAIWorkflow:FormLeave.StartDate,WAIWorkflow:FormLeave.EndDate)。

<br/>function CalculateDay(startdate,enddate){<br/>    var days=1;<br/>    var tempdate;<br/>    var date1;<br/>    var date2;<br/>    //格式为2014-09-22<br/>    if (startdate!="" && enddate!="")<br/>    {<br/>    //alert(startdate);<br/>    //alert(enddate);<br/>    tempdate = startdate.split("-")<br/>    //转换为09-22-2014格式<br/>    date1 = new Date(tempdate[1] + '-' + tempdate[2] + '-' + tempdate[0]) <br/>    tempdate = enddate.split("-")<br/>    date2 = new Date(tempdate[1] + '-' + tempdate[2] + '-' + tempdate[0])<br/>    //将两个时间相减,求出相隔的天数<br/>    //days = (Math.abs(date2 - date1))/1000/60/60/24;<br/>    days = (date2 - date1)/1000/60/60/24;<br/>    days = days+1;<br/><br/>    }<br/><br/>    //alert(days);<br/>    return days;<br/>    }<br/>



想看更多FlowPortal.Net BPM干货,[URL=http://www.cuiwenyuan.com/shanghai/post/FlowPortal.Net-BPM-QQ-Email-List.html]欢迎免费订阅老崔的FlowPortal BPM干货[/URL]