代码改变世界

使用Infopath调用WebService实现查询AD用户信息

2011-04-22 21:15  雪中风筝  阅读(902)  评论(2编辑  收藏  举报

客户的工作流中有这样一个需求,使用者在提交流程的时候需要自动根据提交流程的计算机的登录用户来填充InfoPath表单中的UserName字段和Department(所在部门)字段,下面简单描述下我们的做法和思路:

  自己写了一个webService这个webservice输入参数为accountId(代表当前登录的域用户),webservice执行在AD中的查询返回一个UserInfo的类,这个类包含两个字段:UserName和Department,部署webservice。下面说明如何在InfoPath中调用这个webService,在infoPath表单中新建数据连接

  

点击添加按钮,选择接受数据

选择SOAP Web 服务

指定webservice的地址

这里显示webservice里的方法

参数中显示的是webservice里接受的参数,在这里通过点击设置值可以设置这个等参数的值,这里我们不手动指定

输入一个数据连接的名称,去掉在打开表单时自动检索数据,点击完成。这样就创建了一个数据连接。

下面我们来完成参数的输入和表单中字段值的绑定,在表单中点击数据选项卡然后点击表单加载,看到如下规则添加画面

点击新建操作,如下图

创建一个表单加载时的规则,我这里起名叫GetUserInfo

我这里指定一个规则触发的条件,如下图

条件添加完成以后的界面如下图

在这个规则里按照如下顺序创建操作:第一步  给webservice传值,第二步 根据传入的值查询数据   第三步  将查询结果和表单中的值绑定

选择设置域值

在域中选择要传入的参数对应的域

设置这个参数对应的值

点击插入函数

选择用户中的userName函数

添加查询数据操作

操作类型选择查询数据,选择刚才建立的数据连接,点击确定

以下绑定webservice返回值和InfoPath表单中的数据,添加设置域值操作

在主域中选择申请人的域点击确定

 在值中选择插入域或组,如下图

 选择GetUserInfo辅助域

 获取Name字段的值

 如下图

 部门的绑定操作和名称一样

 部门绑定完成以后规则如下图所示

表单中的数据和webservice中的数据就绑定好了,发布表单到SharePoint 2010 库中,新建表单,就可以获取到当前登录的域用户和所在的部门了。如下图

到这里整个过程就完了。