场景:有个配置列表用来配置每步的审批人,配置列表字段如下:

Title: 工作流名称

Level1Approver:第一步审批人

Level2Approver:第二步审批人

操作步骤:

请先了解ExecuteCode活动:http://www.cnblogs.com/jianyi0115/archive/2011/04/17/2018872.html

新建工作流,加两个string类型工作流变量:level1Approverlevel2Approver

拖一个ExecuteCode活动,拖两个Task活动,task活动的User属性分别绑定到level1Approverlevel2Approver

画线连接Start->ExecuteCode-Task1->Task2.

双击ExecuteCode,写脚本如下:

QueryField titleField = new QueryField("Title");

SPList cfgList = this.Web.Lists["审批人配置"]; //获取列表

var cfgItem = ListQuery.From(cfgList).Where(titleField=="名片申请").GetItems()[0]; //获取到配置项

//获取字段值

SPFieldUserValue user1Value = cfgItem .Fields.GetField("Level1Approver").GetFieldValue(cfgItem["Level1Approver"].ToString()) as SPFieldUserValue;

var level1User = user1Value.User.LoginName;

this.Log("getLevel1Approver:" + level1User); //写调试日志

this.SetVariable("level1Approver", level1User); //设置变量

//获取字段值

SPFieldUserValue user2Value = cfgItem .Fields.GetField("Level2Approver").GetFieldValue(cfgItem["Level2Approver"].ToString()) as SPFieldUserValue;

var level2User = user2Value.User.LoginName;

this.Log("getLevel2Approver:" + level2User);

this.SetVariable("level2Approver", level2User);

工作流:

添加变量:

Code

 备注:

1) 若有能力在自定义表单中写代码,那么还是尽量把代码写的表单提交前,通过工作流变量传入需要的数据。

因为工作流内部执行代码出错,将造成整个工作流失败,并且无法挽回。只能重启流程。

posted on 2013-05-14 09:18  jianyi  阅读(869)  评论(1编辑  收藏  举报