Your Ad Here
首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 编程语言 > .NET > VB.NET > SharePoint Designer 2007 设计工作流三个问题
【标  题】:SharePoint Designer 2007 设计工作流三个问题
【关键字】:SharePoint,Designer,2007
【来  源】:http://blog.joycode.com/liuhuimiao/archive/2007/04/10/100804.aspx

SharePoint Designer 2007 设计工作流三个问题

Your Ad Here

先看 Kaneboy 的《SharePoint Designer 2007, 强大的工作流设计器》。然后,我们针对利用 SPD 2007进行扩展、设计工作流三个常见问题做一些回答。由于开始步入大忙期,时间和精力有限,每个问题我都只点到为止,具体更细节就不累赘。

1、“从用户处收集数据”这个Action中输出的输出变量是什么,做什么用?或者换个问法,我怎么获取用户填写在收集表单里的数据?

A:输出的变量实际上是任务列表中的ItemID。“从用户处收集数据”这个Action是一个强迫工作流暂停以等待用户进行操作的过程。该Action实际是以任务形式在任务列表中新建一条任务向用户派发,然后用户上来编辑任务进行录入数据,以完成任务。这个输出变量ItemID就是用来定位获取用户填写的数据项的。在Conditions中放入“比较任意数据”,选择“任务”列表要查找用户输入值的哪个字段,然后下面把任务ID和输出变量关联即可。

2、初始变量Initiations和变量Variables有何区别?

A:初始变量赋值于工作流启动前,而Variables则赋值于工作流启动后。二者均在整个工作流生命周期内可用。初始变量工作流务必设置默认值,用于当新建就自动触发工作流的情景。无法通过查找获取到的数据,或者多次反复使用的数据都可以存入变量Variables中,以便在Workflow周期里方便使用。

3、自定义扩展Activity中,如何获取当前SPWeb、SPList、SPListItem、SPFile等?比如,最简单的,如何获取当前工作流运作的ListItem数据?

A:完全可以在自定义Activity中通过WorkflowContext上下文获取到当前项或当前SPWeb等信息。除非你要获取其他Site的数据,否则就没必要用去把Site Url、List Guid或ListItem ID等这些数据信息作为输入参数让工作流定制人员来手工输入以获取相关对象。

下面为一个代码模板(LiveWriter不支持代码色彩,就看黑白的代码吧):

public class MyActivity: Activity
{

#region Properties

public static DependencyProperty __ContextProperty = DependencyProperty.Register("__Context", typeof(WorkflowContext), typeof(MyActivity));
[ValidationOption(ValidationOption.Required)]
public WorkflowContext __Context
{
    get
    {
        return (WorkflowContext)base.GetValue(__ContextProperty);
    }
    set
    {
        base.SetValue(__ContextProperty, value);
    }
}

public static DependencyProperty ListItemProperty = DependencyProperty.Register("ListItem", typeof(int), typeof(MyActivity));
[ValidationOption(ValidationOption.Required)]
public int ListItem
{
    get
    {
        return (int)base.GetValue(ListItemProperty);
    }
    set
    {
        base.SetValue(ListItemProperty, value);
    }
}

public static DependencyProperty ListIdProperty = DependencyProperty.Register("ListId", typeof(string), typeof(MyActivity));
[ValidationOption(ValidationOption.Required)]
public string ListId
{
    get
    {
        return (string)base.GetValue(ListIdProperty);
    }
    set
    {
        base.SetValue(ListIdProperty, value);
    }
}

#endregion

protected override ActivityExecutionStatus Execute(ActivityExecutionContext executionContext)
{
    Guid listGuid = Helper.GetListGuid(__Context, ListId);
    SPList list = __Context.Web.Lists[listGuid];
    SPListItem item = __Context.GetListItem(list, ListItem);

    // 做自己的事 :)

    return ActivityExecutionStatus.Closed;
}

 其对应在 WSS.ACTIONS 中的节点配置如下:

<Action Name="测试Activity"
ClassName="TestActivities.MyActivity"
Assembly="TestActivities, Version=1.0.0.0, Culture=neutral, PublicKeyToken=dd27a7cb343a4cac"
AppliesTo="list"
Category="我的自定义操作">
    <RuleDesigner Sentence="输出 %1 到数据库">
         <FieldBind Field="ListId,ListItem" Text="此列表" Id="1" DesignerType="ChooseDoclibItem" />
    </RuleDesigner>
    <Parameters>
        <Parameter Name="__Context" Type="Microsoft.SharePoint.WorkflowActions.WorkflowContext, Microsoft.SharePoint.WorkflowActions" Direction="In"/>
        <Parameter Name="ListId" Type="System.String, mscorlib" Direction="In" />
        <Parameter Name="ListItem" Type="System.Int32, mscorlib" Direction="In" />
    </Parameters>
</Action>

几点说明:

  • AppliesTo="list" 表示应用到列表,还可以有 AppliesTo="all" 表示应用到包括列表在内的所有sharepoint库表。
  • Category="我的自定义操作",就表示你在 SPD 2007中看到的 Actions 的分类。
  • Action 内属性还有 ListModeration="true" 表示是否要显示未经审核的项,UsesCurrentItem="true" 表示直接使用当前项。
  • DesignerType="ChooseDoclibItem" 表示点“此列表”后弹出选择对话框(ChooseDoclibItem限文档库,列表可用ChooseListItem),以选择参数 ListId 和 ListItem。DesignerType表示SPD 2007支持的各种类型,如整数Integer、字符串String,电子邮件Email(含Email关键参数,类似Field="To,CC,Subject,Body"),单个人员SinglePerson,多个人员Person,参数类型ParameterNames,待更新项类型UpdateListItem(类似Field="ListId,ListItem,ItemProperties"),还有一个我们第一个问题用的“向用户收集数据”用到的类型Survey。SPD 2007设计器都支持这些类型的直接设计,因为也才体现出其强大之处(当然也有不足,如不支持InfoPath,不支持调试,不支持StateMachine等)。
  • Id="1" 表示对应 Sentence 中的 %1。比如上面效果,你在SPD 2007将看到显示为“输出 此列表 到数据库”,点此列表后,将弹出让你选择你要的项。
  • 下面Parameters节点里就比较好理解了,只要注意 Direction 有 In 和 Out 作为输入参数和输出参数即可。

 SPD 2007 设计工作流基本也就这些东西,主要要扩展的还是需要你用 VS2005 来自定义 Activity 配合,才能达到最大灵活性。

剩下的就是发挥想象力动手吧。

移山之道 - beta:【上一篇】
超流量拒绝?!:【下一篇】
【相关文章】
  • RedHat9下面Qt Designer的开发实例
  • Apache、Tomcat、mysql与Java Web开发环境学习记录(20070410)
  • 【论文】整理思路 / 2007-4-9
  • 【论文】学习中 / 2007-04-10
  • 基于axis开发web服务的步骤 -2007年4月9日 12时20分
  • ActiveBPEL Designer整合到Eclipse
  • 2007.04.09继续优化
  • 5-3 把自定义控件集成到Qt Designer中(Integrating Custom Widgets with Qt Designer)
  • 2007.04.11 Resample优化
  • ActiveReports工作总结12——用Designer控件实现用户自定义报表印刷
  • 【随机文章】
  • 针对大量小文件数据环境的备份策略
  • how to dnd 1-2
  • 基础_Linux磁盘命令
  • Winrunner测试工具的使用
  • 口的URL链接,将下列信息正确地填入空白
  • 盗帅下载程序安全性分析
  • Apache服务器配置全攻略(三)
  • 《大话李白》创作全过程
  • 服务器安全设置
  • ~~老生长叹(Web安全第一)
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 软讯网络 All Rigths Reserved.