有时候,我们需要自定义流程的编号,FlowPortal提供的灵活的设置功能。
有时候,我们需要自定义流程的编号,FlowPortal提供的灵活的设置功能。
在这个浮躁的社会里
也许最珍贵的
不过是沉静与坚持
身为草根(屌丝)
心向璀璨
再平凡的生命
都有权利去追寻不平凡的光芒
BaaN ERP LN也好,FlowPortal BPM也罢,.NET这个大方向也算。
技术精英也好,管理领袖也罢,开创事业这个大方向没错。
拜访/访谈100位在自己的领域依然沉静与坚持的人士,这个梦想,是时候开始行动,兑现自己跟自己的承诺了。
我一直使用的FlowPortal BPM官网网站近期改版了,看起来更加高大上了。不仅美感提高了,所传递的信息,特别是新老用户所需要的信息也更多了。
对于新版网站,我觉得比较赞的地方:
1、新增开发者中心:http://developer.flowportal.com/,这个可是从入门到精通的宝典,直接开放出来了。
2、新增4种用户的快速体验:http://trial.flowportal.com/,也不用捣鼓本地安装测试系统了,直接在线看到效果,让新用户有直观认识,让老用户也能直观看到最新版的功能。
3、推出无用户限制、无时间限制、无功能限制的免费基础班!20支流程可以永久免费使用!!!
这应该是最重磅的消息,尽管目前此项为隐藏功能,是在科学上网的时候看到的,估计上海之外的朋友也能看到这个链接。
也发现一些问题:
1、输入flowportal.com,不加www的网址,会报错:没有找到可用的资源,请检查域名flowportal.com设置是否正确!,
2、手机、平板上浏览新版网站,并没有做自适应适配。
如果你在嵌套表里面做重复表,需要定义一下外键,不然会报错:嵌套表没有定义外键!为了确定嵌套表中每一行的父行,需要在数据库中为嵌套表定义指向其父表的外键。
需要在字表创建字段ParentID
点击找到ParentID字段,右键点击“Relationships”即可创建父表的连接。
不要因为简单而不敢分享,你认为简单的,可能对别人很有用!
曾经2014年写过的《原创FlowPortal用户手写签名插件:Signature,需要另购手写板(及手写笔)》,至今依然在帮助需要的人。
计划在春节前,再出几个小插件、小工具、小软件、小系统。
第一版的时候因为用户需要增加了一个批量审批的事件,如果批量审批,某个字段统一设为No,后来流程变更,这块忘记了,用户汇报问题,跟踪调试了2周,才想起来这里的设定,真是血的教训。
近期做了个FlowPortal的技术交流,有个关于流程自动生成的自定义流水号要保存到业务表的问题,当时没准备这块涉及如此底层类库的信息,不得不在这里补充一下。
先说一下我常用到的:
Context.Current.Task.SerialNum – 当前流程任务的流水号
Context.Current.ClientIP – 当前登录用户的IP地址
Context.Current.FromDataSet.Tables["tableName.FieldName"] – 当前流程任务表tableName的字段FieldName值
Context.Current.Task.Owner.UserInfo – 当前任务拥有者用户
Context.Current.Task.Owner.UserInfo.Account – 当前任务拥有者的帐号
Context.Current.AgentUser.Account – 当前代理人帐号
Context.Current.Task.Agent.Account – 当前任务代理人帐号
Context.Current.Task.Applicant.Account – 当前任务申请人帐号
Context.Current.Task.Owner.UserInfo.ConstCenter – 当前任务拥有者的成本中心
Context.Current.AgentUser.Constenter – 当前代理人的成本中心
Context.Current.Task.Agent.Constenter – 当前任务代理人的成本中心
Context.Current.Task.Applicant.Constenter – 当前任务申请人的成本中心
Context.Current.Task.IsFinished – 当前任务是否结束,结束(True)/没结束(false)
Context.Current.Task.IsRuning – 当前任务是否处于运行状态,结束(True)/没结束(false)
前2个是我每个流程都必用的字段,因为我设定了一个表模板,每张表除了必须的TaskID(重复表OrderIndex)之外,还有
ID – 自增主键
Status – 状态,默认为Inprocess,配合流程的OnTaskApproved,OnTaskRejected,OnTaskAborted,OnTaskDeleted进行自动更新
TransactionUser – 提交人
TransactionDate – 提交时间
TransIP – 提交人IP
LastUpdateUser – 最后修改人
LastUpdateDate – 最后修改时间
LastUpdateIp – 最后修改人IP
平常常用的,可以前台点选的项目我也列在这里
Owner of the current step – 当前步骤处理人信息
Agent – 代理人信息
Log in User – 当前登录用户信息
Initiator – 发起人信息
Date – 日期
Week – 周
Form Field – 表单字段(自动关联流程、表单上的表)
如果你觉得这篇文章能够帮到你,请多帮我推荐给你的朋友们,也希望能够帮助到他们。
上图来自牛透社(崔牛会)的崔牛2017云图关于国内BPM市场的重量级玩家。还是由衷的高兴看到FlowPortal,职业上选择一个能发展的很好的产品,也算是一种欣慰。不过说起Infor ERP LN (BaaN)就没那么开心了。
近期也接触到C#平台的开源工作流引擎和新的BPM产品,我计划今年也花时间去了解,去体验,届时也写写感受。
就写写代码,大家参考一下。
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; }
第二种
if (Convert.ToString(FormDataSet["FormNPNR.SBU"]).Contains("Eng Mgmt") && Convert.ToString(FormDataSet["FormNPNR.ItemGroup"]).Contains("034")) { return Member.FromAccount("Troy.Cui"); } else { return Member.FromAccount(FormDataSet["FormNPNR.SBUManager"].ToString()); }
姑且称之为bug吧,这个涉及到权限的管理,从记录的时间维度来看,这个地方的确是个bug。我画了一张图,帮助大家理解。
我处理的时候是找到2个特别的组,查看一下 Everyone这个组的记录,删除掉不需要的历史记录即可。
Administrators – S_GS_B639EB43-67D7-42fb-BD2E-B754BB11915B
Everyone – S_GS_90674E5E-AC3C-4032-9EDF-7477F2247542
删除的代码很简单,一并放上来。记得删除前备份数据库,以防不测。
--Everyone DELETE FROM [BPMDB].[dbo].[BPMSecurityTACL] WHERE SID='S_GS_90674E5E-AC3C-4032-9EDF-7477F2247542'
附上流程上Everyone的设置