Question 107
You are creating a custom workflow action that will be used in Microsoft SharePoint Designer reusable workflows.
The action will programmatically create a SharePoint site named Site1 at a specific URL.
You need to ensure that users can specify the URL of Site1 in the action.
What should you use?
A. the DependencyProperty class
B. the OnWorkflowActivated.WorkflowProperties property
C. the SPPersistedObject class
D. the SPWorkflowActivationProperties.InitiationData property

解析:
  还是与Question106相同的背景描述,只不过本题从Action元素下的RuleDesigner转向了Property相关的部分。
  我们知道,若要创建基本的自定义活动,可以从 Activity 类或派生类型继承。 若要创建自定义复合活动,可以从 CompositeActivity 类或派生类型继承。而所谓的创建自定义活动就是定义自定义活动的属性、事件和执行逻辑的过程。
  其中,关于执行逻辑:创建自定义活动时,必须通过 Execute 方法显式处理活动的执行逻辑。 可以在活动中根据需要重写其他 Activity 方法。
  关于属性, 我们可以使用各种属性修饰自定义活动以指示各种情况,例如:应加载哪个活动设计器,验证活动时应使用什么验证程序等。对于本题的在创建Site时使用什么URL也自然地要通过属性这个概念来解决,它用于指示我们创建Site的活动将基于什么URL来进行。
在自定义活动中可以使用两种活动属性:元属性和实例属性。
元属性在运行时不可变,因此该属性必须在设计时设置为文本值。
实例属性可以在设计时设置,也可以绑定到实例数据,在后一种情况下要到运行时才能确定实际值。 也可以直接在工作流执行过程中修改实例属性。
   实现实例属性时,可以按通常的 .NET Framework 类属性的实现方式来实现,也可以使用依赖项属性来实现。 只有选择使用依赖项属性(DependencyProperty)来实现时,才可以将其值设置为 ActivityBind,以便绑定到运行时访问的实际值。 
   依赖项属性(DependencyProperty)提供了一个集中的工作流状态存储库。 DependencyObject 实质上是一个哈希表,其中存储了曾经应用于它的任何 DependencyProperty 的当前值。
依赖项属性的实例类型可以绑定到实例数据,在此情况下,实际值要到运行时才能确定。 可以将此类型的依赖项属性的值设置为 ActivityBind,以绑定到在运行时访问的实际值。
ActivityBind 将活动属性绑定到下列任一对象:
.其他活动属性
.字段
.属性
.方法 
   读到这里,你已经能判断选项A是本题想要的答案了。
 那么我们来继续看看其它选项:
选项B. the OnWorkflowActivated.WorkflowProperties property  任何 SharePoint Foundation 工作流都必须以 OnWorkflowActivated 活动开头。OnWorkflowActivated 活动包含一个 WorkflowProperties 属性,该属性返回一个 SPWorkflowActivationProperties 对象。此对象表示工作流在启动时的初始属性,例如添加工作流的用户以及将工作流添加到的列表和项目。当调用 M:Microsoft.SharePoint.Workflow.SPWorkflowManager.StartWorkflow(Microsoft.SharePoint.SPListItem,Microsoft.SharePoint.Workflow.SPWorkflowAssociation,System.String) 方法时,工作流管理器在 SharePoint 项目上创建工作流实例。然后,工作流管理器将使用初始表单收集的数据传递给工作流自身的 OnWorkflowActivated 事件。
  所以,此属性 1.主要用在启动一个工作流时使用。2.是通过初始表单收集初始化信息。因此,不论是使用时机还是使用方式都不适合本题的要求,因此,选项B排除。

选项C. the SPPersistedObject class。the SPPersistedObject 类用于为对象提供自动序列化其状态值并持久保存以及在需要时获取前面所保存的值并反序列化的相关方法。也即,它属于定义自定义管理设置方面的类。
在 Windows SharePoint Services 平台上构建应用程序时,您可能需要创建一个类以定义应用程序的自定义属性设置并提供用于存储这些设置的方法。Windows SharePoint Services 3.0 中的 Microsoft.SharePoint.Administration 命名空间引入了对象持久性,使用它可将派生自基础 SPPersistedObject 类的类保留到 Windows SharePoint Services 数据库中。若要创建保留的对象,您可以创建一个类,该类从 SPPersistedObject 或派生自 SPPersistedObject 的 Microsoft.SharePoint.Administration 命名空间中的某个类继承。此类可以定义一个用于存储 Windows SharePoint Services 数据库中的自定义属性设置的对象模型。例如,您可以创建通过某种方式使用 Windows SharePoint Services 的 Windows 服务,这将需要创建一个继承自 SPWindowsService 类的类,以便存储特定于 Windows 服务的设置。已编译的 DLL 将为客户提供一个可用于检索或保存属性的对象模型。Windows SharePoint Services 提供用于存储设置的方法和位置,并管理它们对服务器场中的所有服务器和过程(包括缓存刷新)的可用性。
   在实际使用中,我们也可用它来保存用户的某些配置信息。它并不用来完成从Sharepoint Designer中获取参数值并传递给自定义工作流活动的,因为它不提供这种机制来完成这个工作。我们只能寻找捆绑到Action自身的属性来完成本题的要求。
  
选项D. the SPWorkflowActivationProperties.InitiationData property。用来把初始化数据传递进工作流实例。该选项其实是选项B的延续。
所以本题目正确选项应该是A
参考:
http://msdn.microsoft.com/en-us/library/ms734499(v=vs.90).aspx
http://msdn.microsoft.com/zh-cn/library/ms481192.aspx

Question 108
You create a custom workflow action named WF1 that copies the content of a document library to another document library.
WF1 is used in a Microsoft SharePoint Designer reusable workflow. You need to ensure that the workflow action is deployed as a sandboxed solution.
Where should you define the workflow action?
A. the Elements.xml file
B. the ReplicatorActivity activity
C. the SPPersistedObject object
D. the WF1.actions file

解析:
 本题的中心意思是以Sandbox Solution方式部署一个工作流活动,此工作流活动要完成从一个文档列表拷贝内容到另一个文档列表。
   在Sharepoint中我们通常使用解决方案包 (.wsp) 文件将 SharePoint 解决方案部署到 SharePoint Server。 可以使用 Visual Studio 将 SharePoint 项目项组织到功能中,并创建一个包来部署 SharePoint 功能
可以使用 Visual Studio 将相关的 SharePoint 元素组合到功能中。 例如,“联系人”列表定义的功能可以包括列表实例和列表定义。 可以将这两个元素合并到单个功能中以进行部署。  接下来,您可以创建一个 SharePoint 解决方案包 (.wsp) 以将多个功能、网站定义、程序集和其他文件捆绑到单个包中,此包会使用 SharePoint 所需的格式来存储文件以将文件部署到服务器。
我们可以利用功能设计器来创建功能、设置作用域以及将其他功能标记为依赖项。 该设计器会显示用于描述每项功能的最后一个 XML 文件(Element.xml)。 而这就是选项A的想法,通过把工作流活动以功能方式打包到Sandbox Solution的解决方案包中进行部署。
我们进一步分析其它选项:
选项B. the ReplicatorActivity activity  ReplicatorActivity用于运行子活动的多个实例,与本题毫不相关。
选项C. the SPPersistedObject object 用于为对象提供自动序列化其状态值并持久保存以及在需要时获取前面所保存的值并反序列化的相关方法。也即,它属于定义自定义管理设置方面的类,也与本题毫不相关。
选项D. the WF1.actions file: 一个工作流活动的Actions文件(.actions)是一个XML格式的文件,它主要用来描述你的工作流活动如何与Sharepoint Designer交互。它与Sandbox Solution的部署没什么关联。
所以本题目正确选项应该是A
参考:
http://www.wictorwilen.se/Post/Sandboxed-workflow-activities-in-SharePoint-2010.aspx
http://msdn.microsoft.com/zh-cn/library/ff798323.aspx

Question 109
You have a SharePoint list named Projects and a site column named PrivateColumn.
You need to prevent users from adding PrivateColumn to the Projects list. Users must be able to add any other site column to the Projects list.
What should you do?
A. Create an event receiver that inherits SPListEventReceiver and override FieldAdded.
B. Create an event receiver that inherits SPListEventReceiver and override FieldAdding.
C. Create an event receiver that inherits SPItemEventReceiver and override ItemAdded.
D. Create an event receiver that inherits SPItemEventReceiver and override ItemAdding.

解析:
 本题大意是:你有一个网站列PrivateColumn,你要阻止它被添加到列表Projects中,但你可以添加其它网站列到此列表。
 先来看各事件的时机:
FieldAdding:  当一个Field的link正在被添加时发生
 FieldAdded:当一个Field的link被添加后发生
ItemAdding:  Item正在被添加时发生
 ItemAdded:  Item被添加后发生
  再来看事件接受器:
 SPListEventReceiver: 针对列表的事件捕获
 SPItemEventReceiver :针对列表项的事件捕获
  我们知道,添加一个Site Column到列表中是基于列表的事件,所以关于SPItemEventReceiver的选项C.D就被排除了。而阻止一个Site Column被添加一定是在它被添加成功前就必须采取的动作,所以选项A被排除。
因此本题目正确选项应该是B
参考:
http://msdn.microsoft.com/zh-cn/library/microsoft.sharepoint.splisteventreceiver.fieldadding(v=office.12).aspx
http://msdn.microsoft.com/zh-cn/library/ms195594(v=office.12).aspx

Question 110
You create a workflow named WF1. WF1 is attached to a list named List1.
You need to receive an e-mail notification if WF1 is postponed.
What should you do?
A. Use a ReceiveActivity activity in WF1.
B. Use a HandleExternalEvent activity in WF1.
C. Attach an SPItemEventReceiver event receiver to List1.
D. Attach an SPWorkflowEventReceiver event receiver to List1.

解析:
 本题是创建一个基于列表的工作流WF1,如果此工作流被延迟了那么就需要发送通知邮件。
 根据题意可以判断,本题的操作需要事件接收器的参与,因为是当“工作流被延迟”时需要后续处理,所以此事件接收器应该是基于工作流的。由此,直接定位在了选项D。
 进一步分析其它选项:
选项A. Use a ReceiveActivity activity in WF1. 本选项的ReceiveActivity 活动实现由 Windows Communication Foundation (WCF) 服务协定定义的操作的服务活动。即:实现工作流中的服务协定操作。在给定服务协定的情况下,ReceiveActivity 活动将一直等待,直到客户端连接到服务为止,然后运行其包含的子活动。在安排 ReceiveActivity 活动运行之后,该活动将侦听来自服务终结点上的客户端的传入连接。从其信息传向能力来看,此活动也只具有接收侦听和接收信息的能力,不具有向外发送邮件等信息的能力,所以即使对此活动不甚了了,也足够判断取舍了。
选项B. Use a HandleExternalEvent activity in WF1. 工作流中的HandleExternalEvent活动是用来接收宿主发出的事件用的。它也不具备对外发送Email的能力。

选项C. Attach an SPItemEventReceiver event receiver to List1. 关于SPItemEventReceiver类,它是常规EventHandler编写继承的基类之一,并列于:SPItemEventDataCollection、SPItemEventReceiver、SPItemEventProperties之中。该基类提供了丰富的支持列表项,文档库项【Item】的支持,支持事件包含:ItemAdded、ItemAdding、ItemAttachmentAdded、ItemAttachmentAdding、ItemAttachmentDeleted、ItemAttachmentDeleting、ItemCheckedIn、ItemCheckedOut、ItemCheckingIn、ItemCheckingOut、ItemDeleted、ItemDeleting、ItemFileConverted、ItemFileMoved、ItemFileMoving、ItemUncheckedOut、ItemUncheckingOut、ItemUpdating、ItemUpdated,我们可以在重写该事件中增加我们的逻辑,增加各种业务逻辑。不管怎样,这个类不是基于工作流事件的,所以也应该排除。
 
所以本题目正确选项应该是D
参考:
http://msdn.microsoft.com/zh-cn/library/bb628503(v=vs.90).aspx
http://msdn.microsoft.com/zh-cn/magazine/ee335710.aspx

Sharepoint学习笔记—习题系列--70-573习题解析 -(Q107-Q110)的更多相关文章

  1. Sharepoint学习笔记—ECM系列—文档列表的Metedata Navigation与Key Filter功能的实现

    如果一个文档列表中存放了成百上千的文档,想要快速的找到你想要的还真不是件容易的事,Sharepoint提供了Metedata Navigation与Key Filter功能可以帮助我们快速的过滤和定位 ...

  2. Sharepoint学习笔记—ECM系列--文档集(Document Set)的实现

    文档集是 SharePoint Server 2010 中的一项新功能,它使组织能够管理单个可交付文档或工作产品(可包含多个文档或文件).文档集是特殊类型的文件夹,它合并了唯一的文档集属性以及文件夹和 ...

  3. Sharepoint学习笔记—习题系列--70-576习题解析 --索引目录

        Sharepoint学习笔记—习题系列--70-576习题解析  为便于查阅,这里整理并列出了70-576习题解析系列的所有问题,有些内容可能会在以后更新. 需要事先申明的是:     1. ...

  4. Sharepoint学习笔记—习题系列--70-573习题解析 --索引目录

                  Sharepoint学习笔记—习题系列--70-573习题解析 为便于查阅,这里整理并列出了我前面播客中的关于70-573习题解析系列的所有问题,有些内容可能会在以后更新, ...

  5. Deep Learning(深度学习)学习笔记整理系列之(五)

    Deep Learning(深度学习)学习笔记整理系列 zouxy09@qq.com http://blog.csdn.net/zouxy09 作者:Zouxy version 1.0 2013-04 ...

  6. Deep Learning(深度学习)学习笔记整理系列之(八)

    Deep Learning(深度学习)学习笔记整理系列 zouxy09@qq.com http://blog.csdn.net/zouxy09 作者:Zouxy version 1.0 2013-04 ...

  7. Deep Learning(深度学习)学习笔记整理系列之(七)

    Deep Learning(深度学习)学习笔记整理系列 zouxy09@qq.com http://blog.csdn.net/zouxy09 作者:Zouxy version 1.0 2013-04 ...

  8. Deep Learning(深度学习)学习笔记整理系列之(六)

    Deep Learning(深度学习)学习笔记整理系列 zouxy09@qq.com http://blog.csdn.net/zouxy09 作者:Zouxy version 1.0 2013-04 ...

  9. Deep Learning(深度学习)学习笔记整理系列之(四)

    Deep Learning(深度学习)学习笔记整理系列 zouxy09@qq.com http://blog.csdn.net/zouxy09 作者:Zouxy version 1.0 2013-04 ...

  10. Deep Learning(深度学习)学习笔记整理系列之(三)

    Deep Learning(深度学习)学习笔记整理系列 zouxy09@qq.com http://blog.csdn.net/zouxy09 作者:Zouxy version 1.0 2013-04 ...

随机推荐

  1. ExtJs TreePanel 使用帮助

    tree :树 node:节点 1.全部展开 tree.expandAll(); 2.全部收缩 tree.collapseAll(); 3.得到父节点 node.parentNode 4.判断是否有父 ...

  2. 字符集与Mysql字符集处理(二)

    接着上篇文章继续讲字符集的故事.这一篇文章主要讲MYSQL的各个字符集设置,关于基础理论部分,参考于这里.   1. MYSQL的系统变量 – character_set_server:默认的内部操作 ...

  3. HTML注释引起的问题

    因为规范要求需要对页面进行说明,添加作者等信息,所以在cshtml的代码中添加了html注释,包括之前使用jsp也是这样做的: 在页面布局的时候,需要对高度进行动态计算,IE8以上没有问题,主要是在I ...

  4. 快乐的JS正则表达式(开篇)

    我不喜欢一开始就去讨论某某有多强大,因为我觉得那样没意思,首先我们的知道它是干什么,对我们有啥用,再去讨论它的强大之处也不迟.那和往常一样我们先来看几个例子. var arr = [1,4,2,5,2 ...

  5. 轻应用、Web app 、Native app三者区别关系是什么?

    [龙友导读]最近百度公司在大会上宣布推出“轻应用”.轻应用到底是什么呢,和我们说的web app.native app到底有什么区别?是新生物的诞生还是概念的炒作?所以,今天特意为大家整理分享一篇这方 ...

  6. Web 项目可能会用到的20款优秀的开源工具

    开源的应用程序和它们的源代码可以免费获得,因为版权是属于任何进行过修改或者提交代码的人.大多数提供开源软件的公司都可以建立行业标准,因此可以获得有利的竞争优势. 很多的开源应用程序和工具都有很强的替代 ...

  7. VueJs2.0建议学习路线

    最近VueJs确实火了一把,自从Vue2.0发布后,Vue就成了前端领域的热门话题,github也突破了三万的star,那么对于新手来说,如何高效快速的学习Vue2.0呢. 既然大家会看这篇文章,那么 ...

  8. 关于解决JQUERY对INPUT元素Change事件不兼容的问题

    最近开发一个项目,需要实现用户在WEB表单里的多个INPUT框中输入数量后,立即自动计算加总各项输入的数量之和,并显示在指定的INPUT框中,这个功能实现的原理是简单的,就是只需要在INPUT的onc ...

  9. 【Spark】---- Spark 硬件配置

    存储系统 Spark任务需要从一些外部的存储系统加载数据(如:HDFS 或者 HBase),重要的是存储系统要接近Spark系统,我们有如下推荐:   (1)如果可能,运行Spark在相同的HDFS节 ...

  10. Android中的依赖问题(五种依赖、eclipse、AS、添加第三方库、jar)

    这篇文章的主题是: 依赖是什么 eclipse中的依赖 AS中的依赖(有一篇详细的文章讲得非常好,这里就不再写了http://blog.csdn.net/yy1300326388/article/de ...