前段时间以“开源:企业管理信息系统完全DIY,短平快,.NET源码大放送 ”为题在我的Blog上发在,布并被CSDN主页收录头条精华后,很多人来信问我“如何实现数据流代替工作流解决”?其实在公布的WebMIS快速开发的平台程序中已给出了答案,可能是有些朋友还没有下载的数据库分析的原因没有找到答案。前些天抽空帮着原客户维护了一下,想总结一下。
准备写一篇工作流的文章,标题就是“数据流代替工作流解决方案”。
如果大家有这方面的格式模板,请给我一个,不胜感激。在此简单的说下原理:例如,市场人员因为查看库存没有要的货物,于是填了一张采购申请单,要求某时要货给客户,这时,这张单据状态是未审核,所以,还不能进行采购计划(计划条件一:审核人不为空)。相关部门自动接收采购申请单数据(条件:审核人为空),于是根据实际情况审核。 采购计划人员在制作计划筛选的时候,发现有已审核的采购申请,于是可以实施下一步的工作流程,在制单过程中,数据源为已审核的采购申请数据。 采购计划后,也是根据情况审核...下一步工作...,计划单据审核成功后,采购申请人员可以查看自己申请的货物及计划状态,如果已采购,还可以查看采购到货后分配给自己的数量。 总之,信息管理理的就是数据,一切皆数据,一切皆数据流。
准备写一篇工作流的文章,标题就是“数据流代替工作流解决方案”。
如果大家有这方面的格式模板,请给我一个,不胜感激。在此简单的说下原理:例如,市场人员因为查看库存没有要的货物,于是填了一张采购申请单,要求某时要货给客户,这时,这张单据状态是未审核,所以,还不能进行采购计划(计划条件一:审核人不为空)。相关部门自动接收采购申请单数据(条件:审核人为空),于是根据实际情况审核。 采购计划人员在制作计划筛选的时候,发现有已审核的采购申请,于是可以实施下一步的工作流程,在制单过程中,数据源为已审核的采购申请数据。 采购计划后,也是根据情况审核...下一步工作...,计划单据审核成功后,采购申请人员可以查看自己申请的货物及计划状态,如果已采购,还可以查看采购到货后分配给自己的数量。 总之,信息管理理的就是数据,一切皆数据,一切皆数据流。
解决方案 »
- c# toolStrip中的按钮toolStripButton我设置成图片但是当鼠标移动到那的时候还是按钮形式可以按
- 求C#的WINFORM MSSQL数据库操作实例,在线等
- 无法将类型为“ArrayList”的对象强制转换为类型“System.String[,]”
- WINform 怎样放flash
- form中关于类之间相互引用的问题
- 求一个系统介绍vs.net web 开发的电子书,下载地址也可以。谢谢!
- 300分求一个关于exchange的问题
- 请教一个WinForm下的DataGrid问题
- 高手请进 GraphicsPath 加入bezier 曲线 后 调用GetBounds() 返回的bounds不对
- gridgrid的使用问题
- C#中的图片插入查询问题
- vs.net2005新建一个本地项目,不能调试?闷。
打开配置,就发现申请单的数据显示视图如下:单据列配置:
No|产品库ID|分类|质量等级|国标代码|片芯型号|规格|型号|需方代码|需方型号|执行标准|品牌型号|品牌|尺寸|组别|电压|容量|端头|引脚|其它特性|最小包装|包装形式|单位|不含税单价|税率|含税单价|数量|不含税金额|含税金额|要求到货日|客户编码|客户名称|客户订单号|紧急程度|扩展一|扩展二|扩展三|扩展四|已计划|待计划|计划状态|小注主表视图:
Select fcOperator,Convert(nchar(10), fdMakeDate,120) ,fcApplicationNo,fcMemo
From bps_Application
Where fcApplicationNo='@ReceiptNo'明细表视图:
Select 产品库ID,分类,质量等级,国标代码,国标型号,规格,型号,需方代码,需方型号,执行标准,品牌型号,品牌,
尺寸,组别,电压,容量,端头,引脚,其它特性,最小包装,包装形式,单位,
fnPrice 不含税单价,fnTaxRate 税率,fnTaxPrice 含税单价,fnQuantity 数量,fnAmount 不含税金额,fnTaxAmount 含税金额,
Convert(char(10),fdIntoGoods,120) As 要求到货日,fcCustomerCode 客户编码,I_Customer.fcName 客户名称,
fcCustomerOrderNo 客户订单号,fcExigentFlag 紧急程度,fcExpandA 扩展1,fcExpandB 扩展2,fcExpandC 扩展3,fcExpandD 扩展4, dbo.GetApplicationQuantityOfPlan(bps_ApplicationDetail.fcApplicationNo,bps_ApplicationDetail.fgProductLibID) As 已计划,
fnQuantity - dbo.GetApplicationQuantityOfPlan(bps_ApplicationDetail.fcApplicationNo,bps_ApplicationDetail.fgProductLibID) As 待计划,
dbo.GetPlanStateForApplication(bps_ApplicationDetail.fcApplicationNo,bps_ApplicationDetail.fgProductLibID) As 计划状态, fcRe 小注
From bps_ApplicationDetail
Inner Join uv_ProductLibSelect
On bps_ApplicationDetail.fgProductLibID=uv_ProductLibSelect.产品库ID
--可能不指定客户,因此为左连接
Left Join I_Customer
On bps_ApplicationDetail.fcCustomerCode=I_Customer.fcCode
Where fcApplicationNo='@ReceiptNo'
Order By DetailSn这样,一张申请单搞定
单据列配置:
No|产品库ID|分类|质量等级|国标代码|国标型号|规格|型号|需方代码|需方型号|执行标准|品牌型号|品牌|尺寸|组别|电压|容量|端头|引脚|其它特性|最小包装|包装形式|单位|不含税单价|税率|含税单价|计划数量|不含税金额|含税金额|到货日期|申请单号|申请人|申请数量|共计划|计划状态|已采购|小注主表视图:
Select fcOperator As 制单人,Convert(nchar(10), fdMakeDate,120) As 制单日期,fcPlanNo As 单据编号,fcMemo As 备注
From bps_Plan
Where fcPlanNo='@ReceiptNo'明细表视图:Select 产品库ID,分类,质量等级,国标代码,国标型号,规格,型号,需方代码,需方型号,执行标准,品牌型号,品牌,
尺寸,组别,电压,容量,端头,引脚,其它特性,最小包装,包装形式,单位,
bps_PlanDetail.fnPrice 不含税单价,bps_PlanDetail.fnTaxRate 税率,bps_PlanDetail.fnTaxPrice 含税单价,
bps_PlanDetail.fnQuantity 数量,bps_PlanDetail.fnAmount 不含税金额,bps_PlanDetail.fnTaxAmount 含税金额,
Convert(nchar(10),bps_PlanDetail.fdIntoGoods,120) 计划到货日期,bps_PlanDetail.fcApplicationNo 申请单号,bps_Application.fcOperator 申请人,
dbo.GetApplicationQuantity(bps_PlanDetail.fcApplicationNo,bps_PlanDetail.fgProductLibID) As 申请数量,
dbo.GetApplicationQuantityOfPlan(bps_PlanDetail.fcApplicationNo,bps_PlanDetail.fgProductLibID) As 共计划,fcPlanState As 计划状态,
dbo.GetPlanQuantityOfPurchase(bps_PlanDetail.fcPlanNo,bps_PlanDetail.fgProductLibID) As 已采购,
bps_PlanDetail.fcRe 小注
From bps_PlanDetail
Inner Join uv_ProductLibSelect
On bps_PlanDetail.fgProductLibID=uv_ProductLibSelect.产品库ID --可能不走申请而直接选产品库,因此为左连接
Left Join bps_Application
On bps_PlanDetail.fcApplicationNo=bps_Application.fcApplicationNo
Where fcPlanNo='@ReceiptNo'
Order By bps_PlanDetail.DetailSn其实配置的列“国标型号”数据源参照选择配置的是一个存储过程名称“up_bps_PlanSelectApplication”up_bps_PlanSelectApplication实现如下:--采购计划中选择申请的产品并且审核有效且未关闭,按产品排序,同一产品按到货日期排,先要到货的先显示
CREATE PROCEDURE up_bps_PlanSelectApplication AS Select 产品库ID,分类,质量等级,国标代码,国标型号,规格,型号,需方代码,需方型号,执行标准,品牌型号,品牌,
尺寸,组别,电压,容量,端头,引脚,其它特性,最小包装,包装形式,单位,
fnPrice 不含税单价,fnTaxRate 税率,fnTaxPrice 含税单价,fnQuantity 数量,fnAmount 不含税金额,fnTaxAmount 含税金额,
Convert(char(10),fdIntoGoods,120) As 要求到货日,bps_Application.fcApplicationNo 申请单号,bps_Application.fcOperator 申请人,
dbo.GetApplicationQuantityOfPlan(bps_ApplicationDetail.fcApplicationNo,bps_ApplicationDetail.fgProductLibID) As 已计划,
fnQuantity - dbo.GetApplicationQuantityOfPlan(bps_ApplicationDetail.fcApplicationNo,bps_ApplicationDetail.fgProductLibID) As 待计划,
fcRe 小注
--GetApplicationQuantityOfPlan(申请单号,产品ID),用于返回计划单中响应的申请单中指定产品数量
From bps_ApplicationDetail
Inner Join bps_Application
On bps_ApplicationDetail.fcApplicationNo=bps_Application.fcApplicationNo
Inner Join uv_ProductLibSelect
On bps_ApplicationDetail.fgProductLibID=uv_ProductLibSelect.产品库ID
Left Join I_Customer
On bps_ApplicationDetail.fcCustomerCode=I_Customer.fcCode
--Where fcApplicationNo='@ReceiptNo'
Where Isnull(fcChecker,'') <> '' --首先是审核人不为空,即要审核了的
And Isnull(fbCancel,0) = 0 --其次是本单据没有被取消
And Isnull(fbDefault,1)= 1 --再次,为了扩展加的条件
--以上是固定条件,下面是其它条件
--计划中响应申请的数量小于申请人申请的数量时显示
And dbo.GetApplicationQuantityOfPlan(bps_ApplicationDetail.fcApplicationNo,bps_ApplicationDetail.fgProductLibID) < bps_ApplicationDetail.fnQuantity
--只要计划终止的,不再显示
And dbo.GetPlanStateForApplication(bps_ApplicationDetail.fcApplicationNo,bps_ApplicationDetail.fgProductLibID)<>'关闭' Order By 产品库ID,fdIntoGoods --按产品排序,同一产品按到货日期排,先要到货的先显示
GO
S_ReceiptSetup 实现每个业务单据如“采购申请”、“采购计划”的界面配置及一些简单的业务逻辑配置,如标题、子标题、ISO文件号、表顶、表头、表脚、表底、多层表头、明细表列、列宽、有效性、完整性验证、格式、动态计算、合计等。S_ReceiptSetup还一个作用就是配置审核程序。
如果单据的主表有fcChecker这个字段,你可以不用在S_ReceiptSetup配置审核程序,而是直接在表S_CheckReceiptConfig中填写,如:采购计划审核(fcCheckName字段) 采购计划(fcReceipName字段)当然,你也可以自己写审核的逻辑:
如“撤销采购计划审核”的逻辑为:
(fcFilterString字段)
SELECT fcPlanNo + '|' + CONVERT(nchar(10), fdMakeDate, 120) + '|' + fcOperator AS t From bps_Plan Where IsNull(fcChecker,'')<>'' And fcPlanNo Not In (Select fcPlanNo From bps_PurchaseDetail Where bps_PurchaseDetail.fcPlanNo = bps_Plan.fcPlanNo)(fcUpdateString字段)Update bps_Plan Set fcChecker='' Where fcPlanNo='@ReceiptNo'采购申请的审核类同上面的“采购计划审核”。所以,申请单据填写后(主表明细表有数据),经过授权主管审核(fcChecker不为空了),采购计划的数据源就有了。工作流:申请--审核申请--计划,而这,就是用数据流做的。
概念,我还以为你有多大的新创造呢!现在市场上有很多工作流中间件,这种中间件都支持数据流的传递,到网上查查什么叫BPM!现在CSDN档次是越来越低了!
不要进行人身攻击!!!把自己的想法拿出来和大家分享,你们能做到吗?关注本贴.
如果说代替,其实是说我们并非要用现在吹得很虚的XXX“工作流”。
大版主的职位了。 ”
(http://feidao.cnblogs.com/archive/2005/10/18/256808.html)
其中有一句:
没有讨论,只有提问,久而久之,也就失去了当年的动力。我现在是要讨论,又不是搞什么学术论文,怎能搞得woaiwanghuan认为是档次太低?--------------------------------------
woaiwanghuan(我不学习是猪)
大哥,你说的这些明明都是工作流,数据流是建立在工作流之上的,你自己不明白,请别乱混淆
概念,我还以为你有多大的新创造呢!现在市场上有很多工作流中间件,这种中间件都支持数据流的传递,到网上查查什么叫BPM!现在CSDN档次是越来越低了!
-----------------------------------------------------------------
bitsbird(一瓢 在路上...)
搂主的意思是不是基于数据库数据操作的工作流,而非工作流引擎的组件?
不过没有必要把代码写这么详细.
-----------------------------------------------------------------
bitsbird(一瓢 在路上...)
搂主的意思是不是基于数据库数据操作的工作流,而非工作流引擎的组件?
工作流的核心应当是数据流的抽象。
---------------------------
ftiger(哈哈鱼)
ChumpKlutz(朽木) 应当更接近工作流的核心,就是业务是常变化的。
工作流的核心应当是数据流的抽象。
图形化工具我现在已在AnyReport上实现了,以后如果项目需要,就搞出一个简单工作流。
------------------------------------
zeusvenus(清柳)(C#/ASP.NET)
这样的东西有意义做。如果要做设计工具等图形化IDE可能会遇到困难。
http://blog.csdn.net/flygoldfish/archive/2006/03/13/623115.aspx正如搞设计模式,本来一个很简单的问题,非要套一些模式,明明一个if就可以搞定,还要考试将来扩展扩展,导至花1块钱的成本要花10块钱甚至更多。总之,正过渡设计一样,我不需要的工作流引擎,用简单的数据流处理,为何需要强加进来?为何还要讲一些大道理?软件,讲究的实用,讲究扩展性,只有快速开发、维护方便的实用软件,才是好的软件。
不知道吹吹吹工作流引擎讲一些大道理的朋友如何 想?
正如搞设计模式,本来一个很简单的问题,非要套一些模式,明明一个if就可以搞定,还要考试将来扩展扩展,导至花1块钱的成本要花10块钱甚至更多。总之,正过渡设计一样,我不需要的工作流引擎,用简单的数据流处理,为何需要强加进来?为何还要讲一些大道理?软件,讲究的实用,讲究扩展性,只有快速开发、维护方便的实用软件,才是好的软件。
------------------------------------------------------------------------------------我非常赞同楼主的这一观点,但是设计模式很多时候重要的原因是因为项目管理,简单地来说,自己做一个程序,用不用设计模式都不重要,只要自己把代码写规整.流程做正确,早点Release 赚到money 就好,但是如果是一个100人同时开发的系统呢?参与开发的人越多往往导致代码量的增加,例如singleTon模式,完全就是因为考虑到每个人都可能去 new一个singleton对象而创造的,从性能上来将根本没有一点好处.我个人认为软件民工(我)和软件工程师(反正不是我)最大的区别就是软件工程师是站在工程的角度去考虑一个程序的,而亲爱的软件民工是站在代码的角度....我在说什么..
我个人认为软件民工(我)和软件工程师(反正不是我)最大的区别就是软件工程师是站在工程的角度去考虑一个程序的,而亲爱的软件民工是站在代码的角度.工程的角度应是项目经理考虑的事情,软件工程师即使是普通的程序员,是用程序完成指定的功能需求。建议搞了一两年程序的人一定要看看设计模式,也许你已用了一些模式,但是为了交流方便以及学习一些前人大师的总结是很有必要的。
说到这,友情链接卢彦一篇:
设计模式学习经历(http://www.agilelabs.cn/blogs/linkin/archive/2006/04/07/853.aspx)
工作流简单或者不标准的时候,工作流怎么处理?
作为产品,现在工作流厂家都在推引擎,组件
和传统erp又怎么结合?
所谓企业再造怎么实现?
送用户一个简单的介绍企业的网站还要用设计模式?
但是像ERP系统那么大的东西不用就不行。
工作流可以说是一个平台。数据流只是在这个平台上的一个应用而已。把数据流替换工作流?那不就是把QQ替换了windows了?
如果把胡说都当作创新,那我们都是超级发明家了!我建议,以后在CSDN上发帖子,必须通过斑竹的审核才能发出来,
不然CSDN都成垃圾堆了,苍蝇漫天飞!
是程序就有变更,企业应用的逻辑更始千变万化,比如更改主表的业务逻辑,楼主的思维是把所有有关的脚本更新一遍?那人工书写的代码不是被覆盖掉了?如果完全没有人工编码,那微软ibm都要附首称臣了