日期:2014-05-17  浏览次数:20816 次

过多的流程,怎么编写程序?
比如有一个业务,先要完成A,再完成B,再完成C,再完成D。假设,每一步都是一个比较复杂的数据库的增删改。
每一步成功则返回1,失败返回0
那么在程序里,就是类似这写法

int k=0;
k=ABLL.DoA;
k=BBLL.DoB;
k=CBLL.DoC;
k=DBLL.DoD;
……

但是,在真实情况下,k=ABLL.DoA;之后,要判断K是否=1,是的话,才能执行下一步,否则就要报错给提示什么的。

那么这样的话,程序写起来岂不是烦得要命?

k=ABLL.DoA;
if (k==1)

    J=BBLL.DoB
    if(J==1)
    {
      ……
     }
    else
    {……}
}
else
{……
}



------解决方案--------------------
你可以使用工作流的方式 或者使用任务编程,使用Task类来为每个业务创建一个任务,然后B任务在任务A完成时才发生,即调用Task.ContinueWith()方法
------解决方案--------------------
朴素的写法:
b=a();
if(!b) return;
b=b();
if(!b) return;
...

集合的写法:
foreach(ITask task in tasks) if(!task.Do()) return;

暴力的写法:
try{ a(); b(); c(); d();} catch{}
a(){ if(...) throw... }

装x的写法:return a() && b() && c() && d()
------解决方案--------------------
职责链模式
http://blog.csdn.net/flyingfalcon/article/details/2310823
------解决方案--------------------
引用:
Quote: 引用:

用一个顺序工作流就搞定了。

求解释

把什么doa dob doc之类的做成Activty,然后建一个WF的Sequence Workflow,把这些Activty拖进来,返回0就跳到最后。分分钟就搞定。