找我培训、咨询(问问题)、外包、技术支持前,请先阅读

今天一位温州的朋友加我QQ,希望谈培训、技术支持的问题,挺典型的一个沟通过程,特整理下来,节省下次与其它人的沟通时间。

相信找到我的人,多少对我有些了解,或者朋友介绍,或者看了博客等,在您寻求我的培训、咨询(问问题)、外包、技术支持前,请先想清楚以下3个问题

一、你想得到什么服务?

  1. 培训?
  2. 咨询?
  3. 技术支持?
  4. 定制开发?
  5. 购买产品?

二、你真正的想要的是什么?

  1. 快速搞定自己搞不定的问题?棘手的项目?
  2. 提升效率,尽快做出业绩或者做出更多业绩,得到升职加薪机会?
  3. 充电、指点迷津,树立清晰的目标和路线图?
  4. 获得成功的经验分享,同时避免常见的坑?

三、你愿意拿什么从我这里换取以上的要求?

  1. 你认可“舍得”之道吗?
  2. 你认可价值投资吗?
  3. 你认可知识的价值吗?
  4. 你认可技术的价值吗?

在接触的过程中,乃至服务结束后,我都希望你铭记以上几个问题的答案。因为不忘初心,方得始终。很多人在接触的过程中会放大自己的欲望、迷失自己的最初需求,问很多类似的问题,我也在这里不断的补充我的答案:

1、我想知道你这个培训到底值不值?

答:掉了钱包,丢了几百块,你会觉得很难过,而抢个几块钱的红包你都会觉得很开心、很开心。心态决定你的认知,初心很重要,笃信更重要。信则灵,一开始就怀疑,就算我倾囊相授,将我15年的IT信息化经验全盘托出,你还是会认为不值得。所以人常说:对的时间遇见对的人,一句话,一个思路,醍醐灌顶,犹如睡梦中惊醒,会令人终生受益。你能找到我,就要相信:我是对的人,我也会相信:你是对的人!

2、你这个价格怎么这么贵?

答:价格是跟我我的时间价值来决定,没办法,理论上单位时间的价格会越来越高。

  • 2019年之前3000元/天(8小时)
  • 2019年起5000元/天(8小时)
  • 2022年起6000元/天(8小时)

3、你怎么问个问题都提钱?

答:虽然你加了我QQ好友或者微信好友或者博客留了言,但你要明白,我没有义务回答你的技术问题,我会在朋友圈、QQ空间、博客发布一些有价值的信息,这些是不收费,但我也没有要求你一定看。如果一定让我回答,要么看我心情,要么付费,让我愿意将时间交给你。一切都是用生命来换取的,你上班老板付你工资就是典型的例子,我没办法只靠你的免费提问,活在房价这么高、物价这么高的上海。

4、请你吃饭,什么时候碰个头咨询一下问题行吗?

答:真的不需要为了吃那顿饭,而准备往返时间、准备时间去解决你的问题。你想要的肯定不是让我吃顿好吃的吧,请记住自己想要什么。

5、你的培训特点是什么?

答:真实!我愿意用真诚和实用打动对方。不管是技术也好,工具的使用也好,其实大家智商都差不多,无非是靠时间的积累,我花了十几年的积累,也许你只需要一半的时间。我的目的其实是给你一个导师、益友般的辅导。对积极乐观的人来说,也许面对面的培训结束却只是个开始。

6、你为什么有时间做这个?

答:我每年有15天带薪年假、还有5天带薪病假(这个不算)、2022年还多了5天育儿假(这个也不算)、周六周末双休、外加每年的固定节假日,可以拿出来一部分来分享出来,变现贴补家用。

7、想找你外包开发,你给报个价吧

答:报价需要你有明确的需求,才能评估工作量、交期、费用等。外包的开发,我是有选择性的。低于3万的不接,因为金额大小其实沟通成本、商务成本差不多。比如一个项目实际干活需要3天,可能前后沟通、商务需要3个3天=9天了。非常不划算。

8、你熟悉的技术或产品有哪些?

答:产品我列在博客顶部的链接有3个:Infor ERP LN(以前叫BaaN ERP)、FlowPortal.Net BPM、DTcms,另外我还熟悉博客园知名博主、技术大牛吉日嘎拉的C# .Net通用权限管理系统,并基于其底层开发了Web端的全功能的管理系统:旺财珠宝库存管理系统、旺财C# .NET代码生成器(旺财版/DTcms版)、旺财云库存、旺财备品备件库存管理系统、旺财云进销存、旺财盘点App、旺财权限管理系统。我对MSSQL数据库较熟悉、并了解和会使用Oracle、MYSQL数据库,对Tableau做数据可视化分析、Camstasia制作微课、PowerPoint和Excel办公都有独特的见解。当然了,这些都是产品和技术,我对开发、支持、项目管理全流程的熟悉程度是经过实战考验的,这点我是有充分自信的,不会的没把握的也不会去接 – 有自知之明。

  • 对于吉日权限管理系统,可以提供升级、改造、新增功能、二次开发、老系统维护、系统优化等服务。
  • 对于Infor ERP LN/BaaN可以提供一对一的开发培训,后勤模块的全功能培训,LN Web Services外部系统对接的集成开发培训。
  • 对于FlowPortal BPM,可以提供咨询培训服务。
  • 对于DTcms可以提供二次开发、DTcms代码生成器销售及定制服务。

9、预约流程和支付方式

请直接加我微信:13818699609(文尾有微信二维码)联系预约,支付方式优选微信支付,请扫描以下付款二维码。

1小时起约:1000元,仅限电话、语音等远程方式。

预定1天(8小时):5000元,可本市指定地点,注意需扣除往返路途时间。

Loading

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

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

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

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

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

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

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

 

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

 

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

Loading

做IT也得看清趋势

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

我们做IT,很多时候都是比较专注,专注于技术,反而对同行的交流、跨行业的接触以及外面的世界不太关心。所以,对于市场上什么技术已经流行,什么产品是未来的趋势都不太关心。而那些做得好的IT始终保持一种开放的心态,去认识趋势,顺应趋势。大多数时候,我们提到“随波逐流”,都认为是没有主见,但当破浪来临的时候,难道你要逆水行舟?

就像当年各大公司都在上ERP,尽管结果有好有坏,难道你不上?连联想的柳传志有一句名言:“不上ERP等死,上了ERP找死。” 但是联想还是上了ERP,没办法,哪个公司不经历“出生入死”能依然屹立不倒,百年长青?再举个例子,电子商务,你说现在哪个公司敢说拒绝电子商务?

今天Tableau峰会的主题就是报表可视化,这里明确了2个趋势:

1、可视化报表,一图胜千言(无图无真相)

2、面向最终用户,而非面向IT的BI

何以见得:第一上午峰会开幕参会人员809(下午又多了一些),第二参会的人大部分是来自业务部门,第三这家公司的股票(美国纳斯达克DATA)

我也在反思我们公司用得的BI产品是大名鼎鼎的SAP旗下Business Objects,但是用户不喜欢用?就连我都不喜欢用!

微软虽然在线的Office365的在线Excel,也有自己的数据库MSSQL的报表分析工具,但还是要搞一个叫Power BI的可视化报表产品?

这不得不令我们深思,有时候我们的职业生涯是跟随着某个软件产品、某种开发语言、某个行业,入错行的意思是选择了一个错误的趋势,并且在趋势变化时,没有断臂归零求生存。比如说我选择了Infor ERP LN这个产品,前身叫BaaN ERP,有好几位前伟创力的同事都换行去做了SAP或Oracle,他们的路越走越宽,而我一直在围绕这个产品,职场上的选择机会就相对少了很多很多!

不说了,说多了都是泪,女怕嫁错郎,男怕入错行,做IT的错在没有顺应趋势!

既然说无图无真相,就放上来一张图,让你看看哪些大公司都在用Tableau,看你会不会有下一步行动。

我的行动:

1、立马淘宝买了一套学习Tableau视频!

2、分享给好友

3、写下这篇博客

4、明天安装试用版,开始学习使用

5、以后分享使用心得

Loading

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

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

Initiator.GetParentOU("Department").GetAllRoles("Department Head").AllMembers

相应的BPM设置截图如下:

然后使用以下代码代表(多行)同行人所在部门的Department Head

Member.FromAccount(FormDataSet["FormTravelRetinue.Requester"].ToString()).GetParentOU("Department").GetAllRoles("Department Head").AllMembers

但是问题出来了,如果有同行人的时候,是没问题的,一旦没有同行人,这段代码就会报错,说找不到同行人的部门Department Head,于是修改代码如下:

MemberCollection members = new MemberCollection();
if (Initiator.GetParentOU("Department").GetAllRoles("Department Head").AllMembers != null)
{
members.AddRange(Initiator.GetParentOU("Department").GetAllRoles("Department Head").AllMembers);
}
foreach(FlowDataRow row in FormDataSet.Tables["FormTravelRetinue"].Rows)
{
string account = Convert.ToString(row["Requester"]);
if (!string.IsNullOrEmpty(account) && !members.ContainsUser(account))
{
if (Member.FromAccount(account).GetParentOU("Department").GetAllRoles("Department Head").AllMembers != null)
{
     members.AddRange(Member.FromAccount(account).GetParentOU("Department").GetAllRoles("Department Head").AllMembers);
}
}
}
return members;

这样一段代码,却造成一旦有同行人,就没办法提交成功,直接BPM的服务Down掉了。

于是联系官方技术,给出了一下的优化建议:

于是官方技术刘亮发过来修改的代码如下:

//第3版
MemberCollection members = new MemberCollection();
foreach (Member member in Initiator.GetParentOU("Department").GetAllRoles("Department Head").AllMembers)
{
members.Add(member);
}
foreach (FlowDataRow row in FormDataSet.Tables["FormTravelRetinue"].Rows)
{
string account = Convert.ToString(row["Requester"]);
if (!string.IsNullOrEmpty(account) && !members.ContainsUser(account))
{
foreach (Member member in Member.FromAccount(account).GetParentOU("Department").GetAllRoles("Department Head").AllMembers)
{
members.Add(member);
}
}
}
return members;

就这样通过替换AddRange的方法,问题解决了!

记录在这里,给可能遇到类似需求的朋友。

Loading

BPM的移动互联的一点想法

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

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

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

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

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

Loading

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'

完成上述步骤之后,还需要进行指定部门或角色的人可以看到,所以第二步的思路就是针对流程设定相应的权限,然后后台写sql对历史的申请进行TaskRead的授权,这里就不赘述了。

Loading

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

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

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

想看更多FlowPortal.Net BPM干货,欢迎免费订阅老崔的FlowPortal BPM干货

Loading

免费订阅老崔的FlowPortal.Net BPM干货分享

考虑再三,决定开一个QQ的邮件列表,定期分享一些自己的FlowPortal.Net的使用感触、经验、心得体会、问题解决方案,有兴趣的朋友可以通过以下方式进行订阅:
1、[URL=http://www.cuiwenyuan.com/FlowPortalBPM/]www.cuiwenyuan.com/FlowPortalBPM/[/URL]
2、[URL=http://list.qq.com/cgi-bin/qf_invite?id=6f2870b07d354c642ce9494d39adc0fd7c7fc7fd410c5147]免费订阅老崔的FlowPortal BPM干货[/URL]
3、通过本页面以下输入框进行订阅(推荐

哪些人适合订阅

1、FlowPortal.Net BPM的最终用户
2、FlowPortal.Net BPM的开发人员
3、企业内部C# .Net工作流开发的技术人员
4、业务部门的负责人或流程部门负责人
5、IT经理、主管
6、BPM从业者

QQ交流群

另外,欢迎大家加入BPMSalon的QQ群进行交流:323194188

Loading

Flowportal.Net BPM帮我轻松搞定单次出差+多出差报表的子表单设计

首先要感谢3个人,第1个是宁波的许先生(QQ昵称:木木),他是FlowPortal应用高手,电话指导我如何通过子流程的方式满足客户的需求,不失是一个绝妙的解决方案。第2个是FlowPortal.Net的官方技术支持Ken,帮我使用FlowPortal的自带功能轻松完成客户的需求。最后一个是QQ上的朋友柏先生,他信任我,让我原创的《[URL=http://www.cuiwenyuan.com/shanghai/post/FlowPortal-Plugin-UserSignature.html]原创FlowPortal用户手写签名插件:Signature[/URL]》有机会帮他们的客户快速满足了手写签名的需求。

言归正传,我的需求如下:
1、出差申请是一个流程,在流程中的“总经理审批”后有一个“提交出差报告”的步骤
2、用户可以添加多个出差报告,但要求按照标准的报告格式填写
3、出差报告的详细信息需要保存到数据库表

我截了个图如下期望效果:

该如何实现呢?以下就是使用FlowPortal.Net BPM实现单次出差+多出差报告的主表单和子表单要领。

1、需要创建明细表,然后绑定到主表单的Grid动态表
2、明细表额外创建一个字段(如ReportId)记录出差报告的主键Id
3、按照正常流程创建Form Service、子表单,关联出差报告表到创建的Form Service和子表单
4、需要在Grid动态行里添加子表单的链接,关联到上一步创建的Form Service,同时把子表单绑定到明细表的ReportId
5、发起一下流程,就可以测试通过了

如果你也有类似的出差需求,或者同类型的主表单+子表单的需求,不妨参考一下。
如果没看懂,请QQ(17185490)联系我。

Loading

原创FlowPortal用户手写签名插件:Signature,需要另购手写板(及手写笔)

近期人事部提出需求,要给所有的工人使用电脑请假申请,代替纸质的申请。因为不可能给每一位工人开设Windows或者应用系统账号,更不可能给每一个工人配置电脑,所以他们使用公用的电脑来来申请,所使用的BPM账号也是共享的。所以面临如下风险:

1、工人可以随便帮别人申请,不管善意的还是恶意的。
2、中国的法律环境下,公用账号的系统,增加手写签字的记录可以规避一些风险。

现在的需求提出来了,第一个问题很好解决,我们让工人在领班的带领下去申请休假,领班不能泄露BPM的登录密码。工人使用完毕,及时退出。第二个问题呢比较棘手,从需求提出来,搞了2个多星期,终于搞出来了。技术上使用Html5的Canvas画布,可以保存签名为图片,或者直接放到数据库里,或者转换为JSON的格式保存在数据库。前端的应用使用jQuery,并做了方便移植和部署的插件。

发几张截图吧,有需要的朋友可以直接联系我,不过不是免费的。因为免费的东西是这个世界上最贵的东西!,暂时定价500元,至少可以节省你几天的时间去研究,省下来时间自己充充电,多陪陪家人,如果你的工作能令老板满意,收获的可远远不止500元。

程序员个人购买源码一口价:500元
公司购买需要发票的话,我得找朋友开服务发票,价格1000元。
支付宝转账,QQ、飞信或手机短信联系,邮箱发送代码。
为啥要付费购买:不用苦逼的去加班了,省下来宝贵的时间健健身、陪陪家人、孩子
QQ:17185490
手机:13818699609
支付宝账号:troy@cuiwenyuan.com

申请人填写界面

审批人处理界面

Loading