2009-07-24 63 views
3

我是SharePoint新手,但我学得很快。如何通过仅更新列表项中的值(已批准,未批准)来触发SharePoint工作流?

我想仅在列表项中更新值时触发工作流,但不是每次更改项时都会触发工作流。例如,我有一个批准/不批准的列,我希望这是触发器而不是项目中的其他值。因此,如果有其他更改,工作流程将不会启动,除非“批准”值为。

所有帮助表示赞赏!

谢谢,

回答

3

如果你想以编程方式做到这一点...

  1. 创建ItemUpdating事件处理程序,并将其连接到你的目标名单。我会创建一个功能和功能接收器来完成附件。

  2. 在ItemUpdating事件处理程序中,有两个值,你想看看: properties.ListItem [“审批”]这会给你原来值 properties.AfterProperties [“审批”]这是更新值

检查,如果两个值不相等,如果更新值等于“批准”。如果两个都是真的,在列表项目启动工作流programmatically-这里有一些链接,帮你:

http://www.tonytestasworld.com/post/Howto-Start-a-Sharepoint-Workflow-Programmatically.aspx

编码愉快!

7

您可以在SharePoint Designer中执行此操作。

  • 打开您在SharePoint Designer网站
  • 单击文件新的工作流程
  • 选择列表/库
  • 添加一个条件:比较LISTNAME现场(你可以在你的情况比较字段值的批准列)

希望它有帮助。

+0

阿里, 谢谢,但是这是我已经成立。问题在于,在更新值之后,每当项目发生更改(其他列触发工作流程的那一列)时,工作流程就会重新执行,并且在我的情况下会重新发送一封电子邮件(它已设置为操作:发送电子邮件)。其他建议? 谢谢, – Marius 2009-07-25 01:13:47

1

你可能需要两个工作流,一个隐藏字段和“启动另一个工作流活动”(可在CodePlex找到)

工作流程1是被设定,当一个项目发生变化,开始一个辅助的工作流程: 它检查是否status等于隐藏字段 如果是出口 如果没有,那么启动工作2和隐藏字段设置为状态的当前值

工作流程2是那么真正的工作流程这是你想要的时候状态是什么改变了

1
  1. 首先创建一个名为“工作流状态”隐藏的数字字段设置为默认值设置为“0”

  2. 创建工作流程,将启动双方的创造和项目,并在修改

  3. 工作流程的第一步是将字段“工作流程状态”增加“1”

  4. 第二步是验证值是2,它应该表明工作流程第一次被修改d。

只是表示状态。

工作流程状态= 1:项目已创建 2:项目已经第一次修改 3:项目已被第二次修改。

1

@Marius:工作流中的第一步应该是比较字段值并提供逻辑分支。如果这个值等于你想要的值,那么运行worlflow。如果没有,请停止工作流程或执行其他操作。如果收到的电子邮件有任何修改,那么你的流量就会出错。

Martin的解决方案非常简单,但您也可以通过使用内容类型进行扩展,以允许执行其他操作的审批流程。

相关问题