posts - 21,comments - 64,views - 25007

sharepoint工作流的开发其实有好多东西可以讲,但是我觉得这个可能是初学者比较模糊的地方,因此单独拿出来说下。如果没有做过工作流开发可能看以下的内容会觉得有点不知所云,唉~慢慢来吧,我其实是想写一个系列,可是也不知道从哪里开头。

使用vs2005或者vs2008开发sharepoint工作流,通常表单部分使用Infopath设计,Infopath的数据存储其实就是一个XML文件,当用户填写完Infopath表单,该XML传递到sharepoint宿主环境,这个时候可通过SPWorkflowTaskProperties.ExtendedProperties[域名]访问用户填写的内容,同时也可以给它赋值从而改变Infopath表单中的内容。自己做了一个图,简单说明一下数据是如何在对象模型和Infopath之间传递的。

 

首先说明几个概念:

1、在Infopath中有主数据源和辅助数据源,主数据源只有一个,辅助数据源可以有多个。

2、为了与vs传递数据必须在Infopath中建立一个辅助数据源,名称必须是ItemMetadata,XML格式必须是<z:row xmlns:z="#RowsetSchema" ows_域名1="" ows_域名2="" ... ... />

3、主数据源中的域名要与辅助数据源中的域名一一对应,如:域名1、域名2... ...

 

理解了上面的基本知识后就可以开始通过对象模型来读取和设置Infopath表单的值了。

1、读值:

string 变量1 = SPWorkflowTaskProperties.ExtendedProperties["域名1"].ToString(); , 变量1是Infopath表单中主数据源中域名1的值

2、赋值:

SPWorkflowTaskProperties.ExtendedProperties["域名1"] = 变量2,  Infopath表单中辅助数据源的ows_域名1的值变成了变量2,注意该操作将改变的是辅助数据源中的值,主数据源中的值并未改变。

 

从上面我们可以了解到赋值过程并未改变主数据源中的值,这不是我们想要的,我们需要改变主数据源的值,那怎么做呢?再接着往下看。

在Infopath表单中,设置主数据源中域名1的默认值为@ows_域名1,这样当打开表单时主数据源中域名1的值就被改成与辅助数据源中域名1的值一致了。

 

好了,到此我们就清楚了,Infopath表单提交给宿主时,SPWorkflowTaskProperties.ExtendedProperties["域名1"]中保存的是主数据源中的值。SPWorkflowTaskProperties.ExtendedProperties["域名1"]再次传递到Infopath表单中时,不是直接传递给主数据源,而是给了辅助数据源,因此我们要设置主数据源的默认值为对应的辅助数据源,这样才能最终将值传递到主数据源。

 

今天舌头有点结巴,也不知道说清楚没有,唉~ 好久没打字,都退化了。

 

 

posted on   王庭安  阅读(2331)  评论(13编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
< 2010年3月 >
28 1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31 1 2 3
4 5 6 7 8 9 10

点击右上角即可分享
微信分享提示