首先说明这是工作流的应用代码,主要包括两个方面--类型和工作流。按一般常理来说,类型主要处理逻辑上的判断,工作流主要做流程上的一个处理,但是在前段时间的工作上,没有做好系统上的分析,导致逻辑与流程混乱。下面就这个问题做一下说明:
首先给出需要操作的对象,目标是通过工作流实现在目标节点添加一个借出归还节点
1
//工作流依附的类型,也就是工作流需要处理的对象:该工作流主要是做仪器仪表的借出归还流程
2
//下面代码是在类型的保存前执行
3
//首先判断该业务对象的连接是否存在
4
string objID = p_bd.ID;
5
string asctID = "5F73900F-12BA-411A-AFD4-F75856372E6D";
6
7
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
DataSet ds = DataAccessService.GetDataSet(sql);
9
10
BusinessInvokeResult link = new BusinessInvokeResult();
11
string parObjID = "";
12
if(ds.Tables[0].Rows.Count<=0)
13
{
14
if(p_bd["MC"]== DBNull.Value)
15
{
16
result.IsSuccessful = false;
17
result.ResultHint = "请填写借用的仪器仪表";
18
return result;
19
}
20
21
parObjID = p_bd["MC"].ToString();
22
link = BusinessRunTimeService.CreateLink(asctID,parObjID,objID);
23
//问题就在这里,创建连接应该是在工作流状态的提出要求完成后创建的,但是这里却是在保存对象的时候完成的,与现实世界明显不符合
24
25
if(!link.IsSuccessful)
26
{
27
result.IsSuccessful = false;
28
result.ResultHint = "创建业务对象失败!";
29
return result;
30
}
31
}
32![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
2
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
3
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
4
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
5
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
6
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
7
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
8
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
9
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
10
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
11
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
12
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
13
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
14
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
15
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
16
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
17
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
18
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
19
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
20
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
21
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
22
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
23
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
24
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
25
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
26
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
27
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
28
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
29
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
30
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
31
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
32
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
后来改正如下:
1
//在类型中进行逻辑判断
2
if(p_bd["MC"]== DBNull.Value)
3
{
4
result.IsSuccessful = false;
5
result.ResultHint = "请填写借用的仪器仪表";
6
7
return result;
8
}
9
10
//获取父对象
11
string parObjID = p_bd["MC"].ToString();
12
BusinessInvokeResult link = BusinessRunTimeService.LoadBusinessData(parObjID,null,null,null,null);
13
BusinessData bd =(BusinessData)link.ResultValue;
14![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
15
if(bd.ClsID!="0FE69CE2-4DE5-45ED-A10D-D1E4863F4F84")
16
{
17
result.IsSuccessful = false;
18
result.ResultHint = "您是否选择了备品件备件分类?"+"\n"+"请选择具体的备品件备件!";
19
20
return result;
21
}
22
23
if(Int32.Parse(p_bd["SL"].ToString())>Int32.Parse(bd["KJSL"].ToString()))
24
{
25
result.IsSuccessful = false;
26
result.ResultHint = "仪器仪表的借出数量超过仪器仪表的总数量!";
27
28
return result;
29
}
30
31
//更新当前业务数据对象
32
if(p_bd["XH"].ToString()!=bd["XH"].ToString())
33
{
34
Platform.LogService.Trace(p_bd["XH"].ToString()+" "+bd["XH"].ToString());
35
p_bd["XH"] = bd["XH"];
36
}
37![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
38![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
2
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
3
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
4
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
5
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
6
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
7
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
8
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
9
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
10
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
11
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
12
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
13
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
14
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
15
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
16
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
17
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
18
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
19
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
20
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
21
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
22
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
23
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
24
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
25
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
26
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
27
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
28
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
29
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
30
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
31
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
32
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
33
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
34
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
35
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
36
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
37
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
38
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
下面贴出这个简单的流程和节点对象,笑话了!
1
//在工作流中进行流程上的控制
2
BusinessInvokeResult res = WorkflowMediator.GetObjIDOfProcessInstance(Context.SourceActivityInstance.ProcessInstanceID);
3
string objID = (string)res.ResultValue;
4
res = BusinessRunTimeService.LoadBusinessData(objID,null,null,null,null);//加载树节点上的业务对象
5
if(res.IsSuccessful)
6
{
7
BusinessData bd = (BusinessData)res.ResultValue;
8
bd["ZT"] = "提出";
9
BusinessRunTimeService.SaveBusinessData(bd, null,null, null);
10
11
string asctID = "5F73900F-12BA-411A-AFD4-F75856372E6D";
12
string parObjID = bd["MC"].ToString();//获取当前节点的父对象
13
14
BusinessInvokeResult link = BusinessRunTimeService.CreateLink(asctID,parObjID,objID);
15
16
if(!link.IsSuccessful)
17
{
18
result.IsSuccessful = false;
19
result.ResultHint = "创建业务对象失败!";
20
21
return result;
22
}
23
}
24![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
2
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
3
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
4
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
5
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
6
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
7
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
8
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
9
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
10
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
11
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
12
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
13
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
14
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
15
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
16
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
17
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
18
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
19
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
20
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
21
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
22
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
23
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
24
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)