CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  C#

准备写一篇工作流的文章,标题就是“数据流代替工作流解决方案”,请大家讨论一下工作流/数据流

楼主flygoldfish(长江支流)2006-05-10 12:52:24 在 .NET技术 / C# 提问

前段时间以“开源:企业管理信息系统完全DIY,短平快,.NET源码大放送   ”为题在我的Blog上发在,布并被CSDN主页收录头条精华后,很多人来信问我“如何实现数据流代替工作流解决”?  
   
  其实在公布的WebMIS快速开发的平台程序中已给出了答案,可能是有些朋友还没有下载的数据库分析的原因没有找到答案。  
   
  前些天抽空帮着原客户维护了一下,想总结一下。  
  准备写一篇工作流的文章,标题就是“数据流代替工作流解决方案”。  
  如果大家有这方面的格式模板,请给我一个,不胜感激。  
   
  在此简单的说下原理:  
   
  例如,市场人员因为查看库存没有要的货物,于是填了一张采购申请单,要求某时要货给客户,这时,这张单据状态是未审核,所以,还不能进行采购计划(计划条件一:审核人不为空)。相关部门自动接收采购申请单数据(条件:审核人为空),于是根据实际情况审核。  
   
    采购计划人员在制作计划筛选的时候,发现有已审核的采购申请,于是可以实施下一步的工作流程,在制单过程中,数据源为已审核的采购申请数据。  
   
    采购计划后,也是根据情况审核...下一步工作...,计划单据审核成功后,采购申请人员可以查看自己申请的货物及计划状态,如果已采购,还可以查看采购到货后分配给自己的数量。  
   
    总之,信息管理理的就是数据,一切皆数据,一切皆数据流。  
  问题点数:50、回复次数:77Top

1 楼flygoldfish(长江支流)回复于 2006-05-10 12:57:12 得分 0

代码:  
   
  其实有了这个平台,代码就不用写了,配置就搞定,要写就写SQL,业务逻辑和工作流就体现在这里。  
   
   
  打开配置,就发现申请单的数据显示视图如下:  
   
  单据列配置:  
  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   计划状态,  
   
              fcRemark   小注  
  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  
   
  这样,一张申请单搞定Top

2 楼MonkWang(象写情书一样写程序)回复于 2006-05-10 12:58:43 得分 0

关注   学习Top

3 楼flygoldfish(长江支流)回复于 2006-05-10 13:02:00 得分 0

工作流的下一步主要工作就是采购计划,采购计划数据流来源依据于很多,其中之一就是申请。  
   
   
  单据列配置:  
  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.fcRemark   小注  
  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   待计划,  
              fcRemark   小注  
              --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  
   
  Top

4 楼flygoldfish(长江支流)回复于 2006-05-10 13:12:58 得分 0

由存储过程up_bps_PlanSelectApplication可知,逻辑包含在此,并实现工作流其实是采购计划数据流(来流)。  
   
  数据库表  
  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不为空了),采购计划的数据源就有了。  
   
  工作流:申请--审核申请--计划,而这,就是用数据流做的。  
  Top

5 楼flygoldfish(长江支流)回复于 2006-05-10 13:13:32 得分 0

希望以上的简单描述能给大家以启示。Top

6 楼storm2003(storm)回复于 2006-05-10 14:28:56 得分 0

不是很明白标题的意思,文字也写得不是很好懂,楼主所指的“被替代的”“工作流”系统里难道没有“数据流”的存在?  
   
  “数据流”这个概念可是所有MIS系统都具备的,没听说过独立的“数据流”系统呀  
  Top

7 楼woaiwanghuan(我不学习是猪)回复于 2006-05-10 14:28:58 得分 0

大哥,你说的这些明明都是工作流,数据流是建立在工作流之上的,你自己不明白,请别乱混淆  
  概念,我还以为你有多大的新创造呢!  
   
  现在市场上有很多工作流中间件,这种中间件都支持数据流的传递,到网上查查什么叫BPM!  
   
  现在CSDN档次是越来越低了!Top

8 楼dongguacha(清甜可口的冬瓜茶呦)回复于 2006-05-10 14:48:12 得分 0

晕,我也来一篇,《Ajax技术代替JavaScript网络技术》Top

9 楼veryhappy(wx.net)回复于 2006-05-10 15:33:49 得分 0

强烈关注……  
   
  woaiwanghuan(我不学习是猪)   你也可以把你的创新思想写一下来看看,flygoldfish这种精神很好不是所有人都能做的到啊Top

10 楼bitsbird(一瓢 在路上...)回复于 2006-05-10 15:46:13 得分 0

搂主的意思是不是基于数据库数据操作的工作流,而非工作流引擎的组件?Top

11 楼dongguacha(清甜可口的冬瓜茶呦)回复于 2006-05-10 15:56:00 得分 0

那样的话就是倒退了....Top

12 楼caoqinghua(生活就是互相折磨着)回复于 2006-05-10 15:57:16 得分 0

to:woaiwanghuan(我不学习是猪)   《Ajax技术代替JavaScript网络技术》  
  不要进行人身攻击!!!  
   
  把自己的想法拿出来和大家分享,你们能做到吗?  
   
  关注本贴.Top

13 楼lih163(做自己喜欢的事)回复于 2006-05-10 16:12:15 得分 0

数据流反映的不就是工作流程的信息化吗,我喜欢称他为信息流,还是基于实际的工作流的吗,我们要做的其实是用数据流来反映工作流,并且规范化不标准业务流程,怎么说可以替代呢,难道在数据库里插两条数据,money就出来了.Top

14 楼Fooo(四月·来也勿勿·去也冲冲)回复于 2006-05-10 16:13:56 得分 0

 
  能代替?Top

15 楼flygoldfish(长江支流)回复于 2006-05-10 16:32:14 得分 0

可能不叫代替吧,不是说了“总之,信息管理理的就是数据,一切皆数据,一切皆数据流”么?  
  如果说代替,其实是说我们并非要用现在吹得很虚的XXX“工作流”。Top

16 楼flygoldfish(长江支流)回复于 2006-05-10 16:39:24 得分 0

市场上确实吹的不少,什么XXX工作流,那是吹给用户听的,实质,不还是数据控制的。  
   
  现在CSDN档次是越来越低了!?  
   
  也许确实如此吧,今天刚刚看到飞刀的Blog,难怪飞刀“已经向CSDN提出辞职,不再担任了.Net  
  大版主的职位了。   ”  
  (http://feidao.cnblogs.com/archive/2005/10/18/256808.html)  
   
   
  其中有一句:  
  没有讨论,只有提问,久而久之,也就失去了当年的动力。  
   
  我现在是要讨论,又不是搞什么学术论文,怎能搞得woaiwanghuan认为是档次太低?  
   
  --------------------------------------  
  woaiwanghuan(我不学习是猪)    
  大哥,你说的这些明明都是工作流,数据流是建立在工作流之上的,你自己不明白,请别乱混淆  
  概念,我还以为你有多大的新创造呢!  
   
  现在市场上有很多工作流中间件,这种中间件都支持数据流的传递,到网上查查什么叫BPM!  
   
  现在CSDN档次是越来越低了!  
  Top

17 楼cime63(流浪的孩子)回复于 2006-05-10 16:42:21 得分 0

记号先Top

18 楼chenz322556(努力学习.Net)回复于 2006-05-10 16:48:21 得分 0

学习  
  Top

19 楼flygoldfish(长江支流)回复于 2006-05-10 16:49:17 得分 0

bitsbird一语道破  
  -----------------------------------------------------------------  
  bitsbird(一瓢   在路上...)    
  搂主的意思是不是基于数据库数据操作的工作流,而非工作流引擎的组件?Top

20 楼boy_north(北方的豹子)回复于 2006-05-10 16:55:04 得分 0

MarkTop

21 楼bufan2162(永远保持前进状态)回复于 2006-05-10 16:55:19 得分 0

好贴,关注Top

22 楼hydonlee(青山情)回复于 2006-05-10 16:59:51 得分 0

楼主这是工作流吗?   好像只有数据流啊.  
   
  而且,   所有MIS/CRM/ERP都会有这样的东东吧.    
   
  没有什么新意,   本来就和工作流不搭边的东西,   非要扯上一个工作流(有审核就是工作流?),   回头才发现逻辑没有那么复杂,   居然"以数据流代替工作流"...晕啊晕.  
   
  支持楼主的分享精神.  
  不过没有必要把代码写这么详细.Top

23 楼storm2003(storm)回复于 2006-05-10 17:05:00 得分 0

工作流机的脱离是一种进步,完全基于数据库数据操作的工作流系统伸展性和性能都不行呀  
   
   
   
  ------------------------------------------------------------------------------  
   
    flygoldfish(长江支流)   (   )   信誉:97     2006-05-10   16:49:00     得分:   0      
   
  bitsbird一语道破  
  -----------------------------------------------------------------  
  bitsbird(一瓢   在路上...)    
  搂主的意思是不是基于数据库数据操作的工作流,而非工作流引擎的组件?Top

24 楼ChumpKlutz(朽木)回复于 2006-05-10 17:16:18 得分 0

工作流如果有变动怎么办,岂不是要对数据流进行很多更改  
   
  应该数据流随工作流而改变  
   
  我觉得做工作流比数据流来的抽象Top

25 楼ChumpKlutz(朽木)回复于 2006-05-10 17:17:27 得分 0

难道楼主的数据流就是单纯的更改数据库吗,我觉得不合适吧,最起码要有FLAT   FILE做依据吧Top

26 楼xyunsh(学海无涯,回头是岸)回复于 2006-05-10 19:03:21 得分 0

markTop

27 楼crisscrosss(羽毛)回复于 2006-05-10 19:59:16 得分 0

做个记号Top

28 楼zeusvenus()回复于 2006-05-10 22:27:38 得分 0

这样的东西有意义做。  
   
  如果要做设计工具等图形化IDE可能会遇到困难。Top

29 楼panzi667(迅雷免费电影下载社区http://www.woyaola.net)回复于 2006-05-11 00:20:26 得分 0

markTop

30 楼ftiger(哈哈鱼)回复于 2006-05-11 02:28:06 得分 0

ChumpKlutz(朽木)   应当更接近工作流的核心,就是业务是常变化的。  
  工作流的核心应当是数据流的抽象。Top

31 楼axiisagod()回复于 2006-05-11 08:53:40 得分 0

赞成楼上的!Top

32 楼leo2003(【健者天行】谁伴我闯荡)回复于 2006-05-11 08:59:49 得分 0

支持楼主的分享精神.  
  Top

33 楼pureair()回复于 2006-05-11 09:03:47 得分 0

upTop

34 楼Nowish(看我能忍耐多久)回复于 2006-05-11 09:18:20 得分 0

Mark~Top

35 楼flygoldfish(长江支流)回复于 2006-05-11 09:22:52 得分 0

ftiger说的有些道理,配置准备保存到XML或数据库。  
  ---------------------------  
  ftiger(哈哈鱼)    
  ChumpKlutz(朽木)   应当更接近工作流的核心,就是业务是常变化的。  
  工作流的核心应当是数据流的抽象。  
   
   
  图形化工具我现在已在AnyReport上实现了,以后如果项目需要,就搞出一个简单工作流。  
  ------------------------------------  
  zeusvenus(清柳)(C#/ASP.NET)  
  这样的东西有意义做。  
   
  如果要做设计工具等图形化IDE可能会遇到困难。  
  Top

36 楼onemonth(CSDN真烦)回复于 2006-05-11 09:42:45 得分 0

数据流代替工作流?具体代替抽象?楼主脑花是散的。Top

37 楼superhasty(鸟儿自空中飞过)回复于 2006-05-11 10:26:55 得分 0

这样的工作流似乎简单了点。工作流的难点是高度抽象,而又能够具体化。就是用户或者维护人员能够自定义工作流。Top

38 楼flyboywang(我本楚狂人)回复于 2006-05-11 10:38:58 得分 0

高啊,把逻辑写在数据操作里,一点抽象出来的高层逻辑都没有,还号称要用这种具体的“数据流”代替抽象的工作流,楼主,醒醒罢,现在2006年了Top

39 楼flygoldfish(长江支流)回复于 2006-05-11 11:25:20 得分 0

哈哈,都成了圣人了。  
  逻辑写在数据里看是针对什么了?  
  逻辑写在数据库里又有什么不好的?关键看看你是如何写?如果这个逻辑的存储过程是通过外围工具,有何不可?这样,变死的为活的,难道不行么?  
  通过项目经验,完全轻松可行,而且不用我再去改C#代码,也不用编译,直接通过外围工具配置完成软件。头几个贴就是用工具配置成的。  
   
  有代码自动生成工具,为什么就不可以用数据编辑工具?  
  况且,你代码自动生成工具生成的代码还编译,每次给用户升级就要重编译,而用配置工具,我去不用重编译,只要把用配置工具做成的脚本在用户机上调用程序执行,升级简单,维护方便.何乐而不为?  
   
  不要总是拿工作流引擎之类的讲一些大道理,现在的人都成圣人了?Top

40 楼flygoldfish(长江支流)回复于 2006-05-11 11:31:29 得分 0

看看这个贴,根本不用写程序,为何要搞个工作流引擎?  
  http://blog.csdn.net/flygoldfish/archive/2006/03/13/623115.aspx  
   
  正如搞设计模式,本来一个很简单的问题,非要套一些模式,明明一个if就可以搞定,还要考试将来扩展扩展,导至花1块钱的成本要花10块钱甚至更多。  
   
  总之,正过渡设计一样,我不需要的工作流引擎,用简单的数据流处理,为何需要强加进来?为何还要讲一些大道理?  
   
  软件,讲究的实用,讲究扩展性,只有快速开发、维护方便的实用软件,才是好的软件。  
  不知道吹吹吹工作流引擎讲一些大道理的朋友如何   想?Top

41 楼sdwf(学习.NET中)回复于 2006-05-11 12:36:16 得分 0

markTop

42 楼prentice1001(徒弟)回复于 2006-05-11 12:48:14 得分 0

把思路拿来分享是值得肯定的,不过不要把问题搞那么高深Top

43 楼storm2003(storm)回复于 2006-05-11 13:09:44 得分 0

觉得superhasty(鸟儿自空中飞过)   的一句话说得FIT,“工作流的难点是高度抽象,而又能够具体化。就是用户或者维护人员能够自定义工作流。”,用楼主的想法来实现工作流,似乎比较难做到这点。Top

44 楼bearocean(helloworld)回复于 2006-05-11 14:03:01 得分 0

------------------------------------------------------------------------------------  
  正如搞设计模式,本来一个很简单的问题,非要套一些模式,明明一个if就可以搞定,还要考试将来扩展扩展,导至花1块钱的成本要花10块钱甚至更多。  
   
  总之,正过渡设计一样,我不需要的工作流引擎,用简单的数据流处理,为何需要强加进来?为何还要讲一些大道理?  
   
  软件,讲究的实用,讲究扩展性,只有快速开发、维护方便的实用软件,才是好的软件。  
  ------------------------------------------------------------------------------------  
   
  我非常赞同楼主的这一观点,但是设计模式很多时候重要的原因是因为项目管理,简单地来说,自己做一个程序,用不用设计模式都不重要,只要自己把代码写规整.流程做正确,早点Release   赚到money   就好,但是如果是一个100人同时开发的系统呢?参与开发的人越多往往导致代码量的增加,例如singleTon模式,完全就是因为考虑到每个人都可能去   new一个singleton对象而创造的,从性能上来将根本没有一点好处.  
   
  我个人认为软件民工(我)和软件工程师(反正不是我)最大的区别就是软件工程师是站在工程的角度去考虑一个程序的,而亲爱的软件民工是站在代码的角度.  
   
  ...我在说什么..  
   
  Top

45 楼bearocean(helloworld)回复于 2006-05-11 14:13:03 得分 0

继续...  
  我自己从生理上是排斥设计模式的,最乐意地就是噼里啪啦地产代码.  
  但是从需求上有不得不去掌握设计模式.  
  设计模式更多的是经验的问题.不是单靠学习就能学到的.有的东西需要领悟和时间.  
  有的人把设计模式的准则背的滚瓜烂熟,宣称自己精通软件架构,这个人就非常危险了.  
  所以经常看到国外的大公司,真正在做关键价构的都是40岁的老人.  
  Top

46 楼theforever(碧海情天)回复于 2006-05-11 15:12:03 得分 0

至少是多数人都习惯了张口吃国外的东西。无论谈什么都引经据典张口一概念闭口一术语。  拌这种嘴皮子的仗有意义吗?  
    先了解实际的工作方式(要注意中国方式和国外方式还是有不同之处的),再想想自己能给出的最佳方案是怎样的,和目前已有哪种类似,和它是差多少还是好多少。再进行修正。  
    也就是说,对模式和理论的研究应该象对一个未知领域的软件开发一样,经过全面准确的调研,经过系统性的精细化的分析设计,经过测试修正,才能得到符合实际并具有说服力的结果。  
    这不是批评楼主,或反对楼主的人。而是所有“传声筒”,当流传的东西太多时,往往就容易在不知不觉中脱离事实很远还满怀自信。  
    对楼主的建议是,写份好点的文档,配以图片。多好的东西,你自己没表达好也不算好。要点就是别翻炒名词术语。听那些四五专业技术都不懂的人大代表经过“保先”教育都纷纷拽术语,你不觉得现在已经是概念泛滥的时代了吗?Top

47 楼flygoldfish(长江支流)回复于 2006-05-11 15:20:53 得分 0

同意楼上,国内招人老这个条件那个条件的,很多无知的人宣称30岁搞不了软件了。  
   
  不同下如下观点:  
  我个人认为软件民工(我)和软件工程师(反正不是我)最大的区别就是软件工程师是站在工程的角度去考虑一个程序的,而亲爱的软件民工是站在代码的角度.  
   
  工程的角度应是项目经理考虑的事情,软件工程师即使是普通的程序员,是用程序完成指定的功能需求。  
   
  建议搞了一两年程序的人一定要看看设计模式,也许你已用了一些模式,但是为了交流方便以及学习一些前人大师的总结是很有必要的。  
  说到这,友情链接卢彦一篇:  
  设计模式学习经历(http://www.agilelabs.cn/blogs/linkin/archive/2006/04/07/853.aspx)Top

48 楼flygoldfish(长江支流)回复于 2006-05-11 15:22:50 得分 0

在一些小的公司,程序员往往完成从需求调研到设计、开发、简单测试与实施维护的整个周期,你说他是民工还是项目经理还是软件工程师?他就是一个程序员。Top

49 楼storm2003(storm)回复于 2006-05-11 17:03:56 得分 0

长江支流,我想呢误会helloworld的话了,他对“软件工程师”和“软件民工”的区分不是从职位或要干多少活干什么活的角度,而是从对软件工程的设计分析角度来进行区别的,一个是宏观、一个是微观。  
   
  另外,项目经理考虑的是项目管理,而不是工程设计Top

50 楼bearocean(helloworld)回复于 2006-05-11 17:38:24 得分 0

呵呵,大家都激动了.  
  我说的软件民工并没有包含贬义和别的意思.  
  个人见解,也不存在对错.  
   
  我也并不反对学习设计模式,而且提倡学习他.  
  我反对的是滥用设计模式.如果从一个项目的角度来考虑,就不单是程序员的事情了.还有人力,物资,时间.   每一项都很重要.对一个项目而不是程序来说.  
  大家都经常看见宣传的东西上写某某公司因为没有使用某某设计模式结果导致局面混乱管理失控最后导致项目失败大量裁员高层改组...但是实际上设计模式的滥用同样容易产生问题.  
   
  项目都是有时间限制的(少数没有的忽略:)   如果在时间紧张,成员对该模式不熟悉且理解不同的情况下,你做为一个项目经理,能够信心百倍地告诉我说:使用该模式100%一定比不使用好吗?   还是使用过去熟悉的方式来开发保证项目按期按量完成?  
   
  至于模式的使用,更应该提到企业的培训中.因为实践证明它确实是有用的.这次我们没有使用对项目合理的设计模式,至少在经过摸索后在新的,同样适用的项目中使用.  
   
  毕竟大家,或则像您所说的程序员最后的目标都是使程序实现商业价值(少数研究性质的忽略)为目标的吧.能很好地实现这个,对我来说,也就足够了.Top

51 楼stevenhzj(潇湘冷月)回复于 2006-05-11 18:01:42 得分 0

先来登记一下.Top

52 楼befree(似有似无)回复于 2006-05-11 18:02:56 得分 0

好,有人提概念  
  工作流简单或者不标准的时候,工作流怎么处理?  
  作为产品,现在工作流厂家都在推引擎,组件  
  和传统erp又怎么结合?  
  所谓企业再造怎么实现?Top

53 楼AlphaGroup(AlphaTeam)回复于 2006-05-11 19:45:40 得分 0

本来任何东西不能绝对化。  
  送用户一个简单的介绍企业的网站还要用设计模式?  
  但是像ERP系统那么大的东西不用就不行。Top

54 楼zoti(潇湘浪子)回复于 2006-05-11 21:08:58 得分 0

同意“bearocean(helloworld)”!Top

55 楼powerwolf(大灰狼)回复于 2006-05-11 21:26:14 得分 0

绝对支持楼主的共享精神。  
  不过最好能把问题先概括、抽象一下,象数据结构这类东西,讲一讲内外键字段、索引、关联、关系就够了,大家从事的行业不同,就算行业相同,客户需求也会有很大差别,讲的太细,共同点少、难于参与讨论,也不利突出重点,理解起来费劲,象那一长串代码,谁有精神去看。如果真觉得有必要,最好拿出数据库关系图来,这样才好理解。  
   
  大家也注意不要话题扯远了,就事论事才好,尤其对一些概念(IT行业尤其好玩概念),本来就从来没有严格定义,大家理解不同一点不出奇,加强沟通才有建设性,千万不要扯到水平高低上去。注意礼貌用语,这才有助于凝聚这里的学术氛围。  
   
   
  Top

56 楼bgu(彼岸)回复于 2006-05-11 23:52:14 得分 0

工作流和数据流是两个不同的东西。  
  工作流可以说是一个平台。数据流只是在这个平台上的一个应用而已。  
   
  把数据流替换工作流?那不就是把QQ替换了windows了?Top

57 楼zahuifan(杂烩饭)回复于 2006-05-12 08:37:06 得分 0

我觉得数据流和工作流应该是分开的.因为工作流发生变更的可能性更大,应该做成可以由用户自己来更改.  
   
  搂主的意思是把工作流信息存储在数据库中,和"数据流代替工作流"这一提法好像不是一回事.Top

58 楼lidong6(立冬)回复于 2006-05-12 08:50:16 得分 0

无论如何,能分享就得支持一下.Top

59 楼timelyraining(Henry)回复于 2006-05-12 10:58:20 得分 0

XXXTop

60 楼woaiwanghuan(我不学习是猪)回复于 2006-05-12 11:00:13 得分 0

CSDN需要的是创新,是有价值的创新,不是胡说!  
  如果把胡说都当作创新,那我们都是超级发明家了!  
   
  我建议,以后在CSDN上发帖子,必须通过斑竹的审核才能发出来,  
  不然CSDN都成垃圾堆了,苍蝇漫天飞!Top

61 楼zeng_c_h(不喜欢Coding的程序员)回复于 2006-05-12 11:16:49 得分 0

确实,强烈支持楼主的共享精神,偶向你敬礼,呵...     ...Top

62 楼ehxz(郝晓宗)回复于 2006-05-12 12:15:54 得分 0

企业信息化发展到一定程序的产物?Top

63 楼szc21(卖炭翁)回复于 2006-05-12 21:24:55 得分 0

先支持楼主的共享精神,楼主发帖也是重在讨论学习,大家有不同意见很正常,但带人身攻击或者不文明的词最好自己少说,别自我贬低。Top

64 楼netcup(茶杯)回复于 2006-05-13 16:17:49 得分 0

支持楼主的共享精神,大家不要人身攻击嘛,有问题要讨论嘛Top

65 楼jyk(今天由我来写的代码,明天就让程序自己完成!喜欢编程。和气生财。共同提高。共同进步!)回复于 2006-05-13 19:37:17 得分 0

上网的时间少了,看到这么好的帖子的时候有点晚了,呵呵。Top

66 楼sp1234(asp.net不是一个语言,是一个操作系统)回复于 2006-05-14 02:32:09 得分 0

从此没有专业了,大家都混吧,也不要什么设计了!  
   
  呵呵......CSDNTop

67 楼fangxinggood(JustACoder)回复于 2006-05-15 09:33:38 得分 0

对于客户来说哪有什么数据库,关联,主键,外键。他们眼里只有他们业务领域的工作,对于他们来说工作流就是对他们工作的最好抽象。  
   
  可是对于开发程序的程序员来说,哪有什么业务啊,全是跟数据库打交道的程序。所以在程序员里数据流是关键。  
   
  Top

68 楼zhaojs()回复于 2006-05-15 09:46:44 得分 0

程序员都改行去做业务,很多软件都不需要开发的,这样多省事。Top

69 楼zhaojs()回复于 2006-05-15 09:49:24 得分 0

不过专著数据流的角度分析问题,更容易分析出本质,最终简化出漂亮的流程。不过不要把话题扯那么大吧。Top

70 楼GmLibra(平常心)回复于 2006-05-15 10:22:03 得分 0

markTop

71 楼kingR100(白云城主)回复于 2006-05-15 10:37:08 得分 0

面向对象很重要的一点就是让程序语言与业务模型更接近,其设计方式无疑更接近正常的思维方式,是为了解放程序设计人员,让他们更多专著于业务逻辑  
   
  lz反其道而行之,把所有业务逻辑归并为sql语句,对于小规模业务软件来说,代码书写量小且运行效率高,但是随着程序规模的扩大,代码可读性差的缺点就逐渐暴露,并且牵一发可动全身,对大型系统确是在灾难  
   
  程序员如果每天纠缠于非常难读的sql语句,难免体虚力戒,三十而衰怕是难于避免了  
   
  hibernate之流的风采,设计模式的巧妙,都被楼主废除了,不知是好是坏  
  Top

72 楼JahaSoft()回复于 2006-05-15 10:37:51 得分 10

关注,不错Top

73 楼kingR100(白云城主)回复于 2006-05-15 10:46:57 得分 0

娱乐圈的人喜欢这样说:电影是上乘艺术,电视是下乘艺术,电影电视同样是挣钱,却的确有高下之分,柏林嘎那奥斯卡都是给电影的,很少听说导电视剧的成名导  
   
  用sql确实同样可以实现所有逻辑,但是向往大项目走确实不易,程序员的高下也许就从这里成了分水岭Top

74 楼ip928(赵晓骏)回复于 2006-05-15 10:54:26 得分 10

markTop

75 楼kingR100(白云城主)回复于 2006-05-15 11:14:10 得分 10

自动生成代码只能解决编写的问题,终归是编写程序的辅助,很多逻辑还是要由人完成,楼主说的完全不用写也太夸张了吧?  
  是程序就有变更,企业应用的逻辑更始千变万化,比如更改主表的业务逻辑,楼主的思维是把所有有关的脚本更新一遍?那人工书写的代码不是被覆盖掉了?如果完全没有人工编码,那微软ibm都要附首称臣了Top

76 楼shystar(shystar)回复于 2006-05-15 11:36:40 得分 10

楼主的想法很有新意,但是工作流现在也不是正在完善之中吗?以一个核心的工作流机,实现各流程的协调统一运行,本身就是一个很不错的方法.Top

77 楼arn()回复于 2006-05-16 11:22:32 得分 10

markTop

相关问题

关键词

得分解答快速导航

  • 帖主:flygoldfish
  • JahaSoft
  • ip928
  • kingR100
  • shystar
  • arn

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo