已阅读5页,还剩7页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
在在 SharePointSharePoint 20102010 改进改进 PaulPaul AndrewAndrew SharePoint 2007 引入的协作应用程序的工作流 许多组织都有会通过移动到 SharePoint 工作流的手动过程 为什么在软件设计中使用工作流 我们将主要原因是管理长时间运行的进程 而计算机硬件设计完成进程作为可能的等待完成表单的人快速做出决策 或共享的外部的操作的结果 总是花费更长的时间比以使 CPU 处于繁忙状态所需的毫秒响应时间 SharePoint 工作流是软件的自动进行这些手动流程 以前所需的纸张或使 用复杂可以记录和监视长时间运行的任何活动的理想的方法 Windows 流 Foundation 在 2005 年第一次引入和最初包含在 Microsoft NET Framework 3 0 中 今天 SharePoint 2010 提供了许多新改进的 工作流开发人员 并在 SharePoint 2007 中的工作流的普及上生成 对于长时间运行人类工作流位置我们经常等待完成任务的人员建议 SharePoint 工作流 本文将向您介绍关键概念并描述了可用新的功能 首先 我将谈论 SharePoint 2010 中新功能的工作流开发人员 我将在 然后遍历几个新用户方案 工作流模型设计工具改进工作流模型设计工具改进 SharePoint 2010 提供更好地适合那些创建和维护工作流模型的需求加工中更多的选项 工作流开发的工具包括 Visual Studio 2010 SharePoint 设计器 2010 年和 Visio 2010 应当注意的是 SharePoint 2010 需要 net Framework 3 5 下一个版本的 net Framework 4 0 目前正在开发中但产品时间线意味着 SharePoint 2010 不是依赖于它 visual Studio 2010 包括许多加工改进为专门针对工作流项目的 SharePoint 项目 新的 SharePoint 解决方案 WSP 包装可帮助部署您轻松 地到将允许您将 ASPX 工作流启动和关联表单添加到 Visual Studio 2010 工作流项目 的 图图 1 1 下的 SharePoint 服务器的工作流 在本 文中稍后介绍的一个演练演练中我将向您展示如何添加一个启动窗体 图 1 的的 VisualVisual StudioStudio 20102010 SharePointSharePoint 项目模板项目模板 SharePoint 设计器 2010 年还具有新的图形化的工作流设计器设计工作流和直接到 SharePoint 部署它们 它还之前可以使用作为原型设计工具 中 Visual Studio 2010 进一步开发工作流 在设计器 2010 SharePoint 中的另一改进是它现在允许您编辑附带 SharePoint 出的 更改工作流 它也将使用 InfoPath 表单如果安装了 InfoPath 或在 Data Form Web Part 如果未安装 InfoPath 以前 仅 ASPX 窗体已由 SharePoint 设计器 2007 年 现在可以使用 InfoPath 表单 因为它可以很容易非常编辑这些稍后使用以提高它们的 InfoPath 表单 如果指定工作流中的新列它们将自动添加到列表中将与工作流相 关联的架构 这些称为关联列 并且可以在整个 SharePoint 设计器工作流中使用 可以将用户配置文件数据绑定到可以获取有关 SharePoint 用户配置文件的信息使工作流中的属性 渚嬪 您可以查找为审批直接管理器的名称 SharePoint 设计器 2010 年包括一个新的任务进程设计器创建工作流中的活动 但可以灵活地管理所有内的一次活动在审批流程的方式 这包括 定义定义审批要求和如果基础文档更改在审批期间发生的情况的语义的委派的升级进程 工作流模型进行进一步编辑在 SharePoint 设计器 2010 Visio 2010 中创建 Visio 2010 支持业务流程建模表示法 它还支持 sub processes 和分解关系图和验证分析以确保正确构造一个关系图的容器 在在 SharePointSharePoint 20102010 中的新工作流模型中的新工作流模型 站点工作流站点工作流 站点工作流释放从要求列表项目或文档项运行针对工作流工作流开发人员 这可用于当实现工作流过程不能启动作为列表项或文档的结果 这是 开发人员将只是要添加工作流创建虚拟的列表和项以这样一个常见方案 在可视化的 Studio 2010 您只需选择网站流 的 图图 2 2 所示创建工作流 项目项时 图 2 的 站点站点 列表工作流对话框页列表工作流对话框页 可以通过从 SharePoint 中网站操作菜单中选择网站工作流来获取已激活的网站工作流 它可以显示工作新流可以启动任何正在运行的网站的工 作流和已完成的工作流 因为站点工作流 don t 具有列表项目或文档从启动 它们必须手动启动通过 SharePoint 用户界面或通过 SharePoint API 可重用声明式工作流可重用声明式工作流 在 SharePoint 设计器 2010 您可以创建可重用的声明性工作流 在 SharePoint 2007 在 SharePoint 设计器中创建一个工作流模型只可能与 一个列表相关联 这些可重用的工作流不依赖于特定的列表 但可以与任何列表相关联 可重复使用工作流设计 并将其与多个列表相关联 此外 另存为模板命令可用于创建一个包含可重用的工作流可以被移动到另一个 SharePoint 服务器或者 Visual Studio 2010 到其中的 WSP 文 件 在 SharePoint 设计器中 这意味着您 don t 具有访问数据 因为没有特定的列表结构已连接的列表域的访问权限 运行库和宿主改进运行库和宿主改进 高特权工作流高特权工作流 在 SharePoint 2007 中工作流作为登录用户的身份运行 在 SharePoint 2010 具有高特权可以指定的帐户运行工作流 以使其具有附加的工作 流 需要的权限 请参阅 的 图图 3 3 创建工作流在 SharePoint 设计器 2010 年时 可以添加个别步骤 使其运行为而不是登录的用户的工作 流的作者 图 3 的 显示高的特权模拟步骤的显示高的特权模拟步骤的 SharePointSharePoint 设计器工作流设计器工作流 SPTimerSPTimer 位置位置 SharePoint 根据上次的操作的两个位置之一中执行工作流实例 如果工作流中的最后一个操作正在等待用户输入 工作流继续执行上 Web 前端 用户完成该输入的位置 如果工作流续从延迟计时器或从其他地方接收事件 则它将执行 SPTimer 服务中 使用 SharePoint 管理中心中的新 选项 您现在可以设置首选的服务器 SPTimer 服务运行的位置 若要执行此操作单击 SharePoint 管理中心的应用程序管理部分的管理内容数据 库菜单中 然后单击上内容的数据库和向下滚动到首选服务器的计时器作业的设置 如 的 图图 4 4 所示 可以手动停止 SPTimer 服务 don t 希望其运行的任何服务器上 图 4 的 首选服务器的工作流计时器作业的设置首选服务器的工作流计时器作业的设置 工作流消息的改进工作流消息的改进 SharePoint 2010 添加列表基于工作流的四个新工作流事件接收器 启动 已启动 Postponed 和已完成 如 的 图图 5 5 所示 都是在四个 工作流事件接收器可用 这些是类似于其他 SharePoint 事件接收器和它们在响应该事件在服务器上执行代码 若要使开发更容易 Visual Studio 2010 包括使使用相当简单这些事件的事件接收器的项目类型 新的事件将附加到特定的列表 并触发与该列表这意味着这些事件接收器 can t 激发上站点的工作流相关联的工作流实例在发生事件时 事件接收器还要求列表 图 5 的可以在的可以在 VisualVisual StudioStudio 20102010 能生成的事件接收器能生成的事件接收器 SharePoint 2007 进行简单涉及在工作流 中的人 但被难发送和接收与外部系统的邮件 建议的方法就是使用任务项来将消息发送到外部 Web 服务使用的系统并具有外部的系统更新任务 使其返回的结果 SharePoint 2010 添加可插入的工作流服务的支持 这些将是为 Windows 流基础 WF 开发人员所熟悉 并且通过创建包含方法和事件接口定义 此接口连接到一对称为 CallExternalMethod 和 HandleExternalEvent 的活动 一种工具附带 WF 在 NET Framework Framework 中称为 WCA exe 生成强类型用于发送和接收基于该接口上的活动 这些生成的活动可以也使用 SharePoint 工作流中 它们不需要作为属性设置接口 而是可以被拖动直接从工具箱到工作流设计曲面图 由工作流程集成了与 SharePoint 工作流服务代码加载到 gac 中的访问 它需要从 SPWorkflowService 基类继承 并且它需要在 web config 中引用 将使用这些新的活动可以异步消息发送到外部系统从 SharePoint 工作流内右 我将研究创建和使用在第二个演练本文中稍后介绍的这些活动 本演练的构建简单的工作流在本演练的构建简单的工作流在 VisualVisual StudioStudio 20102010 在 SharePoint 工作流中关键的事情是交互人员 以便最简单的做法是将任务分配给某个人 并等待他们响应 以下内容 则显示新的 Visual Studio 2010 SharePoint 工具如何使该任务分配真正易于生成 步骤步骤 1 1 创建新的创建新的 SharePointSharePoint 顺序工作流项目顺序工作流项目 创建新的 SharePoint 工作流项目是很容易的 在 的 图图 1 1 所示以前 请选择新的项目模板选择器上的顺序工作流 这还可以使用状态机工作 流样式来完成 新的工作流项目向导已经有四页 第一个是 SharePoint 的所有工具项目模板都具有共同的页面 您希望使用部署和调试您的解决方案 的 图图 6 6 所示位置标识本地的 SharePoint 网站的 URL 图 6 的 首页的新建的工作流项目向导首页的新建的工作流项目向导 第二个是一个页 其中提供工作流的名称 选择是否将其与列表或作为站点关联 前面 的 图图 2 2 显示此页 第三页是您决定如果 Visual Studio 将自动为您关联工作流 或者可以在已部署后手动执行 如果您选择将保留选中框 它已为列表 如果您 以前选择基于列表的工作流 相关联 工作流历史记录列表 以使用和任务列表用于选择选项 请参阅 图图 7 7 通常 历史记录和任务列表 中不需要更改 图 7 的 第三页的新建的工作流项目向导第三页的新建的工作流项目向导 第四个和最后一页 可以选择如何 请参阅 的 图图 8 8 启动工作流 您不应取消选择所有三个这些或您的工作流将会很难进行启动 对于站 点工作流可以只选择手动启动工作流 为基于列表的工作流也可以选择在创建文档时启动工作流实例或更改文档时启动 图 8 的 第四页的新建的工作流项目向导第四页的新建的工作流项目向导 新的空白的工作流模型如下所示 Visual Studio 2010 在设计图面中的 图图 9 9 激活的工作流活动从 HandleExternalEvent 活动派生 并提供了 从 SharePoint 到工作流实例初始化数据 我将稍后涉及多个 HandleExternalEvent 活动 图 9 的 显示的显示的 WorkflowActivatedWorkflowActivated 活动的默认空白工作流活动的默认空白工作流 步骤步骤 2 2 发起表单添加到该工作流发起表单添加到该工作流 当它们在启动工作流时 可以向用户显示一个启动窗体 它允许工作流 以获取在开始之前收集参数 这可以添加在 Visual Studio 2010 轻松 地在工作流项目在解决方案资源管理器中右键单击 然后选择添加然后新的项 如 的 图图 1010 所示 选择工作流启动表单模板和新的窗体是自动 与工作流相关联 它是您编辑 HTML 中的 ASPX 窗体 请参阅 的 图图 1111 图 10 添加工作流启动表单添加工作流启动表单 调用 GetInitiationData 的一种方法需要在代码隐藏 ASPX 文件中进行编辑 此方法只返回一个字符串 如果多个值则建议您序列化它们到 XML 片段返回它们之前 一旦工作流实例正在运行 可以很容易地获得对此字符串只是通过引用 workflowProperties InitiationData 多个值 需要它们时 序列化 GetInitiationData 中如果将 de serialized 从 XML 片段 图 11 的 默认工作流默认工作流 ASPXASPX 启动窗体启动窗体 启动窗体将添加一个文本域 然后从 GetInitiationData 方法返回该字段 在下面的代码中标记添加第一个 asp 内容标记内 就像这样 GetInitiationData 方法已存在 只需要有代码添加到返回 MyID Text 属性 下面的代码显示了已更新的方法代码 private string GetInitiationData TODO Return a string that contains the initiation data that will be passed to the workflow Typically this is in XML format return MyID Text 第第 3 3 步步 添加工作流日志活动添加工作流日志活动 LogToHistoryList 活动是非常易于使用 创建每个工作流实例有可以在 SharePoint 用户界面中显示一个历史记录列表 活动采用单个字符串 参数 并将项添加到该列表中 它可用于在生产中向用户报告的工作流实例状态 只需将 LogToHistoryList 活动从工具箱拖动到工作流设计和 说明属性设置 请参阅 的 图图 1212 图 12 的 显示显示 SharePointSharePoint 工作流活动的工作流活动的 VisualVisual StudioStudio 工具箱工具箱 在工作流中的属性称为依赖项属性 这些在运行时绑定到另一个活动属性 字段 属性或方法 此过程通常称为布线 它是什么允许即使它们 don t 具有特定类型信息彼此在编译时 一起工作流中的活动 在 Visual Studio 中属性窗口中的每个属性有线类的字段或在工作流类的类属 性 字段是最容易创建和弹出布线的向上为创建新字段 创建新的属性或向现有的布线允许工作流属性对话框 图 13 的 要创建的字段绑定的依赖项属性要创建的字段绑定的依赖项属性 图图 1313 显示添加新字段具有默认名称 以下内容显示到为该属性设置为工作流启动数据活动 MethodInvoking 的事件处理程序添加的代码 public String logToHistoryListActivity1 HistoryDescription1 default System String private void logToHistoryListActivity1 MethodInvoking object sender EventArgs e logToHistoryListActivity1 HistoryDescription1 workflowProperties InitiationData 因为此属性 doesn t 连接活动 之间 但若要了解有关依赖项属性的一点是很好的简单活动 实际上可以直接在代码中设置 HistoryDescription 属性 第第 4 4 步步 添加添加 CreateTaskCreateTask 活动活动 此下一步是称为 SharePoint 任务项的人工工作流程交互的主要部分 创建任务 分配给一个人 然后等待人对该任务所做的更改 CreateTask 活动必须拖动到工作流程设计图面上 并将它们然后配置了所有必需的属性 图图 1414 显示 CreateTask 的属性窗口 只需后对其拖动 到活动 图 14 的 显示的显示的 CreateTaskCreateTask 活动的属性窗格活动的属性窗格 首先需要在此处为该任务的相关标记 相关标记用于在工作流中的消息相关 它提供了使任务对象特定的工作流实例中和在 SharePoint 中的工 作流运行库之间映射的唯一标识符 这用于 以便 SharePoint 接收工作流实例的消息时它可以找到正确的工作流实例内正确的任务 必须配置 CorrelationToken 属性 并且它不推荐使用该 WorkflowToken 的任务 虽然这 isn t 禁止在工具 输入 TaskToken 并按输入的新名称的相关 标记 然后展开 出现 并单击移到右侧 OwnerActivityName 的拖放并选择工作流符号 必须配置在 TaskId 以及新的 GUID 指定的任务 id 这是通过选择 TaskId 属性 然后单击该 以调出属性编辑器的省略号 单击绑定到 新的成员选项卡 选择创建的字段 然后单击确定 相同必须完成 TaskProperties 属性通过再次选择属性 单击省略号上添加新字段 接下来 双击新的 CreateTask 活动 调出 createTask1 MethodInvoking 处理程序代码 并在代码中设置属性工作流在设计图面上 新的任务必须给定一个标题和对于良好的度量值将任务描述设置到字符串中我收到从启动窗体 一旦所有这些属性已被将设置这是添加的代码 public Guid createTask1 TaskId1 default System Guid public SPWorkflowTaskProperties createTask1 TaskProperties1 new Microsoft SharePoint Workflow SPWorkflowTaskProperties private void createTask1 MethodInvoking object sender EventArgs e createTask1 TaskId1 Guid NewGuid createTask1 TaskProperties1 Title Hello createTask1 TaskProperties1 Description workflowProperties InitiationData 步骤步骤 5 5 添加该添加该 OnTaskChangedOnTaskChanged 和和 CompleteTaskCompleteTask 活动活动 使用该时来等待的任务的多个更改 直到看到所需的更改的活动 在 While 活动必须包含如 OnTaskChanged 活动的另一个活动 侦听活动还可 用于通过添加侦听分支内的实际事件接收器活动与一个侦听活动侦听的一次多个事件 鎴栬 咃 您可以只是等待 直到与 OnTaskDeleted 活 动中删除任务 常见的要求是逐步升级或等待事件超时 这是通过使用侦听活动侦听这两个任务使用延迟活动更改消息和计时器消息 第一条消息 以接收的任 何一个包含该工作流和其他活动停止等待活动简历 延迟活动在超时发生时发送一条消息 有很多上面描述的选项 但最简单是使用 OnTaskChanged 将等待任务项的任何更改 然后继续 要配置该 OnTaskChanged 需要在 CorrelationToken 和 TaskId 属性向上连结到作为该 CreateTask 相同的域 上次 添加 CompleteTask 活动和重新设置 CorrelationToken 和 TaskId 属性 的 图图 1515 所示等待消息的活动是绿色的而将消息发送的活动是 蓝色 这是在 SharePoint 工作流的整个内保持一致 图 15 的 已完成的简单任务流模型已完成的简单任务流模型 步骤步骤 6 6 部署和测试工作流部署和测试工作流 现在工作流是几乎完整的因此按 f5 键 并等待部署 按 F5 将编译工作流 打包到一个 WSP 的工作流 到 SharePoint 部署该 WSP 激活 SharePoint 功能 Visual Studio 2010 调试器附加到 SharePoint 并启动 Internet Explorer 与 SharePoint 网站 一旦出现在 SharePoint 网站 请从网站操作菜单上选择网站工作流 您将看到所有的站点工作流 并且您可以单击上您启动它 选中后它将会 看到您的工作流启动表单 的 图图 1616 所示 图 16 的 工作流启动表单工作流启动表单 其他改进可以添加到此基本初学者工作流模型使用内容类型定义分配给一个人使用电子邮件以通知用户他们已被指派一个任务的任务和甚至使用来 创建更复杂的窗体为完成电子邮件中或联机用户的 InfoPath 表单等 本演练的构建可插入的工作流服务本演练的构建可插入的工作流服务 新 SharePoint 2010 中是可插入的工作流服务添加到 SharePoint 能力 这始终已可能在 Windows 流基础 但 SharePoint 承载工作流运行时 已锁定状态 以前 didn t 允许这样 主要可插入的工作流服务被设计为发送和接收消息超出了工作流实例 但是 它们也是有价值的任何长 时间运行系统操作 如长时间运行计算 这是工作流运行时将使用的消息传递归纳作为管理长时间运行的工作机制 只需执行的活动内运行很短的工作 并长时间运行操作已完成或邮件 接收 则表示一个人完成任务之前将一直挂起工作流 因此等待响应人员 时工作流实例被冻结并不会占用 CPU 或 RAM 执行的服务器上的资源 冻结只需工作流实例的状态写入到数据库记录中 rehydrated 的回发 并稍后继续上一方法的方法 所有类型的长时间运行的工作流由都处理相同的方式 首先 它启动长时间运行的工作或发送一条消息 然后它挂起工作流直到完成长时间运行 的工作或收到响应 相关标记用于确保收到响应时恢复正确的工作流实例 作为一个示例考虑两个常见的长时间运行的工作示例 一个示例是同步的 Web 服务请求位置调用方将被阻塞 直到该通道上收到响应 这不是 适合于工作流活动内运行 工作流服务需要等待 Web 服务调用完成 然后为发送的邮件重新与响应一起工作流实例 另一个示例是需要运行一 个 CPU 密集的工作项 但因为它可能要花较长的时间比第二个需要运行之外的工作流活动 再次 您可以使用工作流服务并在工作流服务执行 CPU 密集的工作项中创建线程 回它完成后 新的线程可以发送消息 这些示例的两个实现具有相同的模式 下面的演练演示如何创建新的 SharePoint 顺序流和调用因素来确定多少素数有下 100 000 000 素数一个 可插入的工作流服务 此项工作要花很长时间执行活动的主行内 第第 1 1 步步 创建可插入的工作流服务创建可插入的工作流服务 在 Visual Studio 2010 创建可插入的工作流服务 需要作为接口和类在项目中的实现服务 图图 1717 显示了一个可插入的工作流服务 它可以将 添加到您的项目称为 MyService cs 新的类文件中的一个示例 在代码中接口定义是在 IMyService 中 该接口的实现类 MyService 和 MessageOut 方法中单独的线程上通过匿名方法委托运行大多数逻辑 在单独的线程中对 RaiseEvent 调用将返回到等待 HandleExternalMessage 活动发送邮件 图 17 的 可插入的工作流服务可插入的工作流服务 Interface declaration ExternalDataExchange public interface IMyService event EventHandler MessageIn void MessageOut string msg Arguments for event handler Serializable public class MyEventArgs ExternalDataEventArgs public MyEventArgs Guid id base id public string sAnswer Class for state class FactoringState public SPWeb web public Guid instanceId public FactoringState Guid instanceId SPWeb web this instanceId instanceId this web web Interface implementation class MyService Microsoft SharePoint Workflow SPWorkflowExternalDataExchangeService IMyService public event EventHandler MessageIn public void MessageOut string msg ThreadPool QueueUserWorkItem delegate object state FactoringState factState state as FactoringState DateTime start DateTime Now int topNumber 100000000 BitArray numbers new System Collections BitArray topNumber true for int i 2 i topNumber i if numbers i for int j i 2 j topNumber j i numbers j false int primes 0 for int i 2 i topNumber i if numbers i primes string sAnswer Found primes in Math Round DateTime Now Subtract start TotalSeconds 0 seconds Send event back through CallEventHandler RaiseEvent factState web factState instanceId typeof IMyService MessageIn new object sAnswer new FactoringState WorkflowEnvironment WorkflowInstanceId this CurrentWorkflow ParentWeb Plumbing that routes the event handler public override void CallEventHandler Type eventType string eventName object eventData SPWorkflow workflow string identity System Workflow Runtime IPendingWork workHandler object workItem var msg new MyEventArgs workflow InstanceId msg sAnswer eventData 0 ToString msg WorkHandler workHandler msg WorkItem workItem msg Identity identity If more than one event you d need to switch based on parameters this MessageIn null msg public override void CreateSubscription MessageEventSubscription subscription throw new NotImplementedException public override void DeleteSubscription Guid subscriptionId throw new NotImplementedException 步骤步骤 2 2 更新更新 web configweb config 一旦在构造可插入的工作流服务 它需要使用 SharePoint 中运行的工作流
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年移动硬币的测试题及答案
- 2026年空间逻辑能力测试题及答案
- 2026年小班幼儿社会测试题及答案
- 2026年小学审美测试题及答案
- 2026年桂林毕业测试题及答案
- 2026年爱心在线测试题及答案
- 2026年必修一第二章测试题及答案
- 2026年画角量角测试题及答案
- (新)实验室生物安全管理制度2篇
- 指南考试题目及答案
- 2025年湖北省中考生物、地理合卷试卷真题(含答案)
- 2025河南省安全员-C证考试(专职安全员)题库附答案
- 森林防火工程技术标准
- GB/T 19701.1-2024外科植入物超高分子量聚乙烯第1部分:粉料
- 代谢综合征与运动
- 浙江省居住建筑节能设计标准
- 2024届上海市杨浦区六年级下学期小升初真题数学试卷含解析
- 24春国家开放大学《客户关系管理》形考作业1-4参考答案
- 矿山系统机电技术人员考试题库
- GB/T 43232-2023紧固件轴向应力超声测量方法
- 单层厂房抗震设计
评论
0/150
提交评论