逻辑与流程的变迁

首先说明这是工作流的应用代码,主要包括两个方面--类型和工作流。按一般常理来说,类型主要处理逻辑上的判断,工作流主要做流程上的一个处理,但是在前段时间的工作上,没有做好系统上的分析,导致逻辑与流程混乱。下面就这个问题做一下说明:
首先给出需要操作的对象,目标是通过工作流实现在目标节点添加一个借出归还节点

 1 None.gif // 工作流依附的类型,也就是工作流需要处理的对象:该工作流主要是做仪器仪表的借出归还流程
 2 None.gif // 下面代码是在类型的保存前执行
 3 None.gif // 首先判断该业务对象的连接是否存在
 4 None.gif string  objID  =  p_bd.ID;
 5 None.gif string  asctID  =   " 5F73900F-12BA-411A-AFD4-F75856372E6D " ;
 6 None.gif   
 7 None.gif string  sql  =   string .Format( " select l.link_id from MWT_OM_LINK l where l.tgt_obj_id='{0}' and l.asct_id='{1}' " ,objID,asctID);
 8 None.gifDataSet ds  =  DataAccessService.GetDataSet(sql);
 9 None.gif   
10 None.gifBusinessInvokeResult link  =   new  BusinessInvokeResult();
11 None.gif string  parObjID  =   "" ;
12 None.gif if (ds.Tables[ 0 ].Rows.Count <= 0 )
13 ExpandedBlockStart.gifContractedBlock.gif dot.gif {
14InBlock.gif    if(p_bd["MC"]== DBNull.Value)
15ExpandedSubBlockStart.gifContractedSubBlock.gif    dot.gif{
16InBlock.gif        result.IsSuccessful = false;
17InBlock.gif        result.ResultHint = "请填写借用的仪器仪表";
18InBlock.gif        return result;
19ExpandedSubBlockEnd.gif    }

20InBlock.gif    
21InBlock.gif    parObjID = p_bd["MC"].ToString();
22InBlock.gif    link = BusinessRunTimeService.CreateLink(asctID,parObjID,objID);
23InBlock.gif   //问题就在这里,创建连接应该是在工作流状态的提出要求完成后创建的,但是这里却是在保存对象的时候完成的,与现实世界明显不符合
24InBlock.gif    
25InBlock.gif    if(!link.IsSuccessful)
26ExpandedSubBlockStart.gifContractedSubBlock.gif    dot.gif{
27InBlock.gif        result.IsSuccessful = false;
28InBlock.gif        result.ResultHint = "创建业务对象失败!";
29InBlock.gif        return result;
30ExpandedSubBlockEnd.gif    }
 
31ExpandedBlockEnd.gif}
 
32 None.gif


后来改正如下:

 1 None.gif // 在类型中进行逻辑判断
 2 None.gif if (p_bd[ " MC " ] ==  DBNull.Value)
 3 ExpandedBlockStart.gifContractedBlock.gif dot.gif {
 4InBlock.gif    result.IsSuccessful = false;
 5InBlock.gif    result.ResultHint = "请填写借用的仪器仪表";
 6InBlock.gif     
 7InBlock.gif    return result;
 8ExpandedBlockEnd.gif}

 9 None.gif   
10 None.gif // 获取父对象
11 None.gif string  parObjID  =  p_bd[ " MC " ].ToString();
12 None.gifBusinessInvokeResult link  =  BusinessRunTimeService.LoadBusinessData(parObjID, null , null , null , null );
13 None.gifBusinessData bd  = (BusinessData)link.ResultValue;
14 None.gif
15 None.gif if (bd.ClsID != " 0FE69CE2-4DE5-45ED-A10D-D1E4863F4F84 " )
16 ExpandedBlockStart.gifContractedBlock.gif dot.gif {
17InBlock.gif    result.IsSuccessful = false;
18InBlock.gif    result.ResultHint = "您是否选择了备品件备件分类?"+"\n"+"请选择具体的备品件备件!";
19InBlock.gif     
20InBlock.gif    return result;
21ExpandedBlockEnd.gif}
 
22 None.gif   
23 None.gif if (Int32.Parse(p_bd[ " SL " ].ToString()) > Int32.Parse(bd[ " KJSL " ].ToString()))
24 ExpandedBlockStart.gifContractedBlock.gif dot.gif {
25InBlock.gif    result.IsSuccessful = false;
26InBlock.gif    result.ResultHint = "仪器仪表的借出数量超过仪器仪表的总数量!";
27InBlock.gif      
28InBlock.gif    return result;
29ExpandedBlockEnd.gif}

30 None.gif     
31 None.gif // 更新当前业务数据对象
32 None.gif if (p_bd[ " XH " ].ToString() != bd[ " XH " ].ToString())
33 ExpandedBlockStart.gifContractedBlock.gif dot.gif {
34InBlock.gif    Platform.LogService.Trace(p_bd["XH"].ToString()+" "+bd["XH"].ToString());
35InBlock.gif    p_bd["XH"= bd["XH"];
36ExpandedBlockEnd.gif}

37 None.gif
38 None.gif

下面贴出这个简单的流程和节点对象,笑话了!
                     

 1 None.gif // 在工作流中进行流程上的控制
 2 None.gif BusinessInvokeResult res  =  WorkflowMediator.GetObjIDOfProcessInstance(Context.SourceActivityInstance.ProcessInstanceID);
 3 None.gif string  objID  =  ( string )res.ResultValue;
 4 None.gifres  =  BusinessRunTimeService.LoadBusinessData(objID, null , null , null , null ); // 加载树节点上的业务对象
 5 None.gif if (res.IsSuccessful)
 6 ExpandedBlockStart.gifContractedBlock.gif dot.gif {
 7InBlock.gif    BusinessData bd = (BusinessData)res.ResultValue;
 8InBlock.gif    bd["ZT"= "提出";
 9InBlock.gif    BusinessRunTimeService.SaveBusinessData(bd, null,nullnull);
10InBlock.gif    
11InBlock.gif    string asctID = "5F73900F-12BA-411A-AFD4-F75856372E6D";
12InBlock.gif    string parObjID = bd["MC"].ToString();//获取当前节点的父对象
13InBlock.gif    
14InBlock.gif    BusinessInvokeResult link = BusinessRunTimeService.CreateLink(asctID,parObjID,objID);
15InBlock.gif     
16InBlock.gif    if(!link.IsSuccessful)
17ExpandedSubBlockStart.gifContractedSubBlock.gif    dot.gif{
18InBlock.gif        result.IsSuccessful = false;
19InBlock.gif        result.ResultHint = "创建业务对象失败!";
20InBlock.gif      
21InBlock.gif        return result;
22ExpandedSubBlockEnd.gif    }
 
23ExpandedBlockEnd.gif}

24 None.gif

转载于:https://www.cnblogs.com/lne818/archive/2007/06/30/801307.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值