用VS2005开发审批工作流(1)

更新时间:2023-08-30 00:42:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

用VS2005开发审批工作流(1)

用VS2005开发审批工作流(1)

-----------------------------杨柏山

废话不说,小菜这就带大家直奔主题吧。Let’s Go.

由于小菜本人水平有限,文档中难免有疏漏错误之处,还请各位多加海涵,予以批评指正,谢谢。(还是废话了一把,汗!)

1,前期准备

要用VS2005开发工作流,我们前期需要对开发环境做一些准备,如下:

SharePoint Server 2007 Visual Studio 2005 InfoPath 2007

.NET Framework 3.0 ()

Visual Studio 2005 Extensions for Windows Workflow Foundation (载)

ECM Starter Kit for Visual Studio 2005 () 大家看看自己还差哪些,赶快去下载安装。

哦,有些已经安装好的朋友可能会提出些疑问:俺的工具箱里咋就几个东东嘞,难道是俺人品有问题??

小菜这里明确告诉大家不是诸位的人品问题,呵呵,而是微软的产品还没做到尽善尽美(大家一起鄙视比尔那家伙)。诸位跟着小菜一步一步做就OK了。 A, 先在工具箱上右击一下,选择重置工具箱(这一步看具体情况)。

B, 在Visual Studio 2005工具箱的空白处点击右键 > 添加选项卡 > 添加一个名为 SharePoint Workflow Actions 的选项卡.

C, 在SharePoint Workflow Actions空白处点击右键 > 选择项 > .NET Framework 组件.

D, 添加所有命名空间为Microsoft.SharePoint.WorkflowActions的组件,如图所示: 就是这个样子的

用VS2005开发审批工作流(1)

注: 安装ECM starter kit之后如果出现项目模板丢失的情况请参考<< Visual http://www.77cn.com.cn 2005 新建项目对话框中项目模版消失的解决方案>>

2,正式开工咯,设计下流程界面先

2.1创建项目

在Visual Studio 2005中创建基于SharePoint Sequential Workflow模版的项目LetsGotoWorkfolw.:

项目建好了之后,在解决方案管理器中可以看到当前项目包含的文件:

用VS2005开发审批工作流(1)

就是这个样子的

其中feature.xml,workflow.xml和Install.bat是部署文件,Workflow1.cs是工作流文件。

双击打开Workflow1.cs,进入工作流的Design模式,将看到如图所示的工作流:

就是这个样子的

此时工作流中只有一个onWorkflowActivated活动,所有SharePoint工作流都必须从这个活动开始.

onWorkflowActivated活动有一些属性值得我们注意:

CorrelationToken : Correlation Token 是将若干相关联的活动映射到同一集合的标识符,其作用与某些编程语言中RadioButtion组件的GroupId属性类似,注意不要为任务活动和工作流活动指定相同的CorrelationToken.

OwnerActivityName : 活动的父容器名称,建议设置为活动的最小父容器名称,尤其当活动被包含在While活动中时.

WorkflowProperties : 此属性包含了工作流初始信息,比如启动工作流的人员,列表项,时间等等.

用VS2005开发审批工作流(1)

2.2设计工作流流程图

先简要说明本工作流所要实现的功能,在工作流启动的时候先指定一串审批人的姓名,然后工作流会根据这个名单依次为每个审批者创建任务,每个审批者通过审批才会给下一个审批者创建任务,直到所有审批者通过审批,工作流结束。

(小菜友情提示:如果现在还不是很明白,不要紧,随着我们工作的逐步展开,相信读者到时会说:我靠,这么简单,浪费大爷的时间。 到时还请海涵)

工作流设计好就是这个样子的。

用VS2005开发审批工作流(1)

简单做一下说明:

WhileActivity类似C#语法中的While()循环,不同的是WhileActivity的条件

(Condition)可以是代码(Code Condition),也可以是规则(Delarative Rule Condition).

由于WhileActivity只能包含一个子活动,所以我们还需要在每个WhileActivity中添加一个SequenceActivity作为添加多个活动的”容器”.

这下兄弟姐妹们应该有点明白了,流程里一共两个循环,外层循环控制工作流在一串审批者名单依次往后走,里层循环是走到哪个审批人时判断一下有没有通过审批,通过了就跳出循环,由外层循环带领大家继续往前走,通不过就在原地等吧,直到通过为止。(哦,要是还是不明白,小菜猜想官人肯定游戏过度,脑袋眩晕中,呵呵)

诸位应该都注意到了,流程中有不少红圈圈,聪明的朋友应该想到了,对拉,那是我们还有一些设置没有完成。

上文提及的CorrelationToken和WorkflowProperties等等一些属性没有设置呢。

大家莫急,跟着小菜一起把那些烦人的红圈圈给去掉。Let’s GOOO!

先是CreateTask

A,把CorrelationToken设成taskToken, OwnerActivityName设成SequenceActivity1。 B,再来设下TaskId, 点击

右边的

按钮,在弹出的

对话框中选择 Bind to a new member ,设置 new member name为taskId, Choose a type of member to create 选择 Create Field , 点击 OK 确定,如图所示:

用VS2005开发审批工作流(1)

D,以同样的方法创建名为 taskProps 的 TaskProperties 属性.

恩,这样啊,简单得很(四川口音)。

我们就依葫芦画瓢给OnTaskChanged.和CompleteTask给设一下,CorrelationToken和TaskId还是跟前面一样的,我们只需把OnTaskChanged的两个属性AfterProperties和BeforeProperties分别设成afterProps和beforeProps就可以拉。

OK,搞定。现在整个流程只有两个循环上还有红圈圈,因为循环肯定有控制条件,而小菜还没给设,所以。。。。这个好办,我们只要在代码里写两个函数,然后回到界面点点鼠标就好了。

至此界面设计已经大功告成了,香一个。------韦小宝语 跑了,郁闷。。。。

3,InfoPath表单设计

我们采用InfoPath表单作为工作流的表单来收集信息,这样做的一个好处是它不仅可以显示在SharePoint Server 站点上,还可以在Office客户端应用程序中显示,这样用户不用打开浏览器就可以参与工作流了.

我们一共需要设计两张表单,一张用于初始化,启动工作流,指定审批者名单。还有一张给审批者审批用。

A, 下面我们来设计第一张表单,用于启动工作流的Init表单.

先来新建一张表单

打开 InfoPath 2007 > 设计表单模板 > 选择 空白 模板并勾选 仅启用浏览器兼容性功能 设计好了就是这个样子的

嘿嘿,难看吧,没办法,小菜没有学过美工,就请海涵了。

我们一共只使用了三个控件,两个文本框,一个按钮。

在 设计任务面板 中点击 数据源 ,打开 数据源面板 ,修改域组的名称由

用VS2005开发审批工作流(1)

myFields修改为 Init.

这样做的原因是 InfoPath表单模板中主数据源的根域组名称 = 表单架构的根元素名称 = 表单类名称 :

两个文本框只要给它们改下名字就好了,那个启动按钮有点麻烦。Follow Me.

双击 按钮 控件,将其标签修改为 启动工作流 ,点击 规则

:

点击 添加

:

点击 添加操作 :

用VS2005开发审批工作流(1)

在 操作 下方选择 使用数据连接进行提交 ,点击 添加

:

选择 新建连接 > 仅提交数据 ,点击 下一步

:

用VS2005开发审批工作流(1)

选择 提交到宿主环境… , 点击 下一步 > 完成 > 确定

.

点击 添加操作 > 选择 关闭表单 > 点击 确定 > 确定 > 确定 > 确定 .

选择 工具 菜单下的 表单选项 , 打开 安全和信任 页,取消勾选 自动确定安全级别 ,勾选 域 或者 完全信任 ,如图所示

:

保存表单模板为 Init.xsn .

再把这个表单发布一下

选择 文件 菜单下的 发布 > 选择 网络位置 > 点击 下一步 :

用VS2005开发审批工作流(1)

点击 浏览 将表单模板发布到工作流项目文件夹中,点击 下一步

:

将可访问路径清空,点击 下一步 > 发布 > 关闭 :

用VS2005开发审批工作流(1)

选择 文件 菜单下的 另存为源文件 ,InfoPath 2007将在指定的文件夹内生成如图所示的文件

:

打开 Visual Studio 2005 命令提示 工具 > 运行下面的命令:

Xsd “myschema.xsd的完整路径” /c /o:”工作流项目文件夹的完整路径”

此操作会在工作流项目文件夹中生成一个名为myschema.cs的文件,该文件包含代表Init表单模板的类Init.

将其改名为init.cs并包含到我们的工作流项目中.这样我们就可以在编码时通过反序列化onWorkflowActivated.workflowProperties.InitiationData来访问初始表单中的信息了.

图片一路狂截下来,眼睛冒金星了。喘口气先。(此处省略200字)

用VS2005开发审批工作流(1)

B,设计给审批者审批用的表单

哈,哈哈,哈哈哈(小菜仰天长笑三声),有了Init表单的设计经验,这个表单就还不容易。名字就叫TaskEdit.xsn吧 设计好就是这个样子的(难看依旧)

一共有两个文本框,两个按钮。文本框还是改下名字,按钮有点点变化。因为这两个按钮决定通过与否,所以我们先要在数据源里添加一个布尔型的变量isFinished.

给按钮添加操作时就先要添加一个操作,就是设定这个isFinished,通过按钮当然是设为true了

数据连接和关闭表单的操作同上:

用VS2005开发审批工作流(1)

取消按钮只是设置域值时,isFinished=”false”而已,其余都是大同小异拉。 最后别忘了把安全级别设为完全信任,好了,可以发布表单了。。

至此表单设计就完成了,下面进入编码环节,不要走开,后面的内容更精彩。谢谢。

本文来源:https://www.bwwdw.com/article/tg2i.html

Top