SharePoint:扩展DVWP - 第10部分:在表单操作工作流中传递工作流变量
在前面的四篇博文中,我们讨论了如何从数据视图webpart(DVWP)的表单操作链接中创建一个工作流。继续这一话题,我们已经掌握了如何传递表单域到工作流,这一技巧本身确实已经很强大了。但是,如果你需要传递该表单中包含的更多的信息到工作流时怎么做?
这里有一个此类应用。
表单操作
记住,通过一个向导修改过的表单操作中会按照向导中排列的顺序以JavaScript调用的方式体现在该链接的HREF属性中。
1、通过右击链接,并在上下文菜单中选择“表单操作...”来运行表单操作向导(从编辑模板)。
2、为了运行/创建一个工作流,需要添加一个[自定义操作]并点击设置。
3、点击“变量”按钮
我们必须在将要接收我们传递的数据的工作流中创建一个变量。
4、点击“添加...”按钮
5、为我们的变量填写名称和类型
不论你设置为什么类型,工作流都会将类型转换成字符串。(更多细节会在将来的博文中讨论。)
6、为该工作流创建的变量都可以通过“工作流数据”进行访问。下面我们将讨论如何传递数据到这些已经创建好的变量中,并在我们的工作流中使用该数据。
7、让我们在看一下在创建完工作流后表单操作链接的HREF中的JavaScript调用:
之后
<a href="javascript: {ddwrt:GenFireServerEvent(concat('__workflowStart={{A50B3A56-0C82-43E3-917E-D37E2E036F3B},New,{F6244C84-AAE5-45E0-9C71-60F6AB31F584},ff1_x007b__x0024_Pos_x007d_={ff1',$Pos,'}*ff2_x007b__x0024_Pos_x007d_={ff2',$Pos,'}*ff3_x007b__x0024_Pos_x007d_={ff3',$Pos,'}*ff4_x007b__x0024_Pos_x007d_={ff4',$Pos,'}*ff5_x007b__x0024_Pos_x007d_={ff5',$Pos,'}*ff6_x007b__x0024_Pos_x007d_={ff6',$Pos,'}*ff7_x007b__x0024_Pos_x007d_={ff7',$Pos,'}*};__commit'))}">保存文件</a>
我们在前面两篇博文中详细讨论了这块代码的语法。这一次,我们只看一下__workflowStart函数的第四个参数。
还记得吗,第四个参数如下所示:
ff1_x007b__x0024_Pos_x007d_={ff1',$Pos,'}*ff2_x007b__x0024_Pos_x007d_={ff2',$Pos,'}*ff3_x007b__x0024_Pos_x007d_={ff3',$Pos,'}*ff4_x007b__x0024_Pos_x007d_={ff4',$Pos,'}*ff5_x007b__x0024_Pos_x007d_={ff5',$Pos,'}*ff6_x007b__x0024_Pos_x007d_={ff6',$Pos,'}*ff7_x007b__x0024_Pos_x007d_={ff7',$Pos,'}*
工作流变量 - 在上面的代码中所有的变量都是自动添加的,以便我们可以访问表单域的值。幸运的是,我们可以使用相同的语法添加任何我们需要的字段。
比如,如果我们需要传递一个字符串如“Insert”,以便我们可以写一条审计跟踪信息,我们可以简单的添加myVar=Insert*到该名值对列表,这样就可以通过工作流数据以myVar的形式访问该值了。
所以,想要添加我们的变量时,可以简单的添加名/值对到末尾:
ff1_x007b__x0024_Pos_x007d_={ff1',$Pos,'}*ff2_x007b__x0024_Pos_x007d_={ff2',$Pos,'}*ff3_x007b__x0024_Pos_x007d_={ff3',$Pos,'}*ff4_x007b__x0024_Pos_x007d_={ff4',$Pos,'}*ff5_x007b__x0024_Pos_x007d_={ff5',$Pos,'}*ff6_x007b__x0024_Pos_x007d_={ff6',$Pos,'}*ff7_x007b__x0024_Pos_x007d_={ff7',$Pos,'}*myVar=Insert*
由于这是一个很大的由星号分隔(事实上是终止)的字符串,所以不要在两边用引号引起来。换句话说,如果你希望myVar的值中包含一个空格(如"New Item"),星号是该字符串的结束符,所以可以这样写:
…*myVar=New Item*
注意:星号(*)与其说是一个分隔符,倒不如说是终止符更加贴切。换句话说,它并不是用来分隔数据,实际上它标志着每一个名/值对的结束。这也正是为什么最后会以星号结束,而不是只出现在两个名/值对之间。所以,不要忘记最后的星号。
下一次:为什么不是所有的字段都出现在表单域中?接下来的扩展DVWP系列中我们将对此进行详细讨论。
参考资料
SharePoint: Extending the DVWP – Part 10: Passing Workflow Variables to a Form Action Workflow