Extensible Mobile Messaging Framework
SharePoint Foundation 2010 takes advantage of the new mobile messaging framework to enhance its Alerts feature. To support the new option, the SPAlert class now has a property that indicates whether the alert is delivered as e-mail or as an SMS message. The SharePoint Foundation Web application is given its own account, which can be programmatically changed, with a mobile messaging service provider.
The mobile messaging framework is itself extensible, so you can create your SharePoint Foundation solutions that incorporate SMS messages that are sent to mobile telephones. You can create a completely customized alert system if you want. If your messaging solution uses the Office Mobile Service (OMS) protocol, most of your development work has already been done for you. A rich set of classes has been added to the object model to represent the Web Methods and response types of the protocol. If your solution requires a different protocol, base classes have been provided with default implementations of essential properties and methods.
Business Connectivity Services
Microsoft Business Connectivity Services (BCS), formerly named the Business Data Catalog, provides read/write access to external data from line-of-business (LOB) systems, Web services, databases, and other external systems within Microsoft SharePoint 2010. SharePoint 2010 has product features that can use external data directly, both online and offline. Developers can gain access to a rich set of features and rapidly build solutions by using familiar tools such as Microsoft Visual Studio 2010 and Microsoft SharePoint Designer 2010.
Business Connectivity Services enhances SharePoint application capabilities and their UI through features, services, and tools. These enhanced capabilities and UI streamline development of solutions with deep integration of external data and services. Power users, developers, and business unit IT professionals can integrate assets from external systems and enable interaction with the external data through many types of applications. The Business Connectivity Services feature set enables rapid development and deployment of scalable and security-rich solutions.
Client Object Model
The new client object models provide an object-oriented system for interoperating with SharePoint data from a remote computer, and they are in many respects easier to use than the already existing SharePoint Foundation Web services. You start by retrieving a client context object that represents the current request context, and through this context, you can obtain access to client objects at site-collection level or lower in the SharePoint Foundation hierarchy. Client objects inherit from the ClientObject class (ECMAScript: ClientObject), and you can use them to retrieve properties for a specific SharePoint object, to retrieve child objects and their properties, or to retrieve child items from a collection.
Custom Field Rendering Enhancements
Microsoft SharePoint Foundation 2010 makes two significant changes to the way that you define how custom field types render.
XSLT Stylesheet Rendering on List Views
In Windows SharePoint Services 3.0, fields were rendered on list view pages by a RenderPattern element in a field definition file, fldtypes*.xml. In SharePoint Foundation 2010, fields are rendered on list view pages by XSLT stylesheets. Consequently, you now define the rendering of your custom field types by creating a custom XSLT stylesheet rather than adding a custom RenderPattern element to a field type definition. See How to: Create a Custom Field Type Definition and Understanding the FldTypes.xml File for more information about field type definitions. See Overview of XSLT List View Rendering System and How to: Customize the Rendering of a Field on a List View for more information about XSLT rendering and how to customize it.
RenderPattern Elements are Now Obsolete
In Windows SharePoint Services 3.0, fields were also typically rendered in Display mode by means of a RenderPattern element in a field definition file. It was also possible, although rare, to render a field in Edit and New modes with a RenderPattern element. It was more common to render fields in Edit and New modes with a user control (ASCX), known as a RenderingTemplate, and it was possible to use a user control to render a field in Display mode. In SharePoint Foundation 2010, custom fields should always be rendered with user controls in all three modes. Although some long-standing built-in fields still use a RenderPattern element, for development of custom fields RenderPattern elements are obsolete.
PropertySchema Elements are Now Obsolete
In Windows SharePoint Services 3.0, when a custom field had a variable property (that is, a property with a different value on different lists), a control was needed on the New Site Column, Change Site Column, Create Column, and Change Column pages so that users could set the property value. One of the ways that custom field designers could define the rendering of this control was with a PropertySchema element in a field definition file. This method is now obsolete. You should create an editing control as a user control (ASCX). Point your custom field to the user control by setting the FieldEditorUserControl property. For more information about such editor controls, see Custom Field Type Property Rendering and How to: Create an Editor Control for a Field Type Property.
If there is no user control (RenderingTemplate) for a field, the runtime looks for a RenderPattern element in the field type definition file and, if found, uses it. One implication of this behavior is that custom fields that you created for versions earlier than SharePoint Foundation 2010 can still use their existing field type definitions with RenderPattern elements for Display, Edit, or New mode.
SharePoint Foundation 2010 will not automatically render your legacy custom fields on list views by using the RenderPattern in the field type definition for the field. However, if you do not want the default rendering that is given to the field by the XSLT stylesheet, you can re-enable the RenderPattern by adding a
What's New in the Event Model New events in SharePoint Foundation 2010 include the following:
• add and delete events on lists.
• add events on Web sites.
• after events can now be either synchronous or asynchronous.
Additionally, new event model capabilities include the following:
• Event registration at the site collection level.
• XML event registration at the site receiver.
• Improved semantics for retrieving event data.
• Improved user interface for form-level events.
Microsoft SharePoint Foundation 2010 introduces SharePoint Health Analyzer, an extensible, rules-based infrastructure that monitors and maintains the health of SharePoint Foundation throughout a server farm. It is designed to check automatically for potential configuration, performance, and security problems and to identify issues to farm administrators.
SharePoint Health Analyzer monitors the farm by applying a set of health rules. A health rule is executable code that is deployed in a compiled assembly at the farm level and registered with SharePoint Health Analyzer by a farm administrator. A number of health rules are included with SharePoint Foundation. You can create and deploy additional rules by writing code that uses the SharePoint Foundation object model.
Microsoft SharePoint Foundation 2010 adds features to the list infrastructure that improve user experience in the case of large lists, and that enhance data integrity.
In enterprise deployments of SharePoint Foundation, list content can often grow into such large collections that, when users access that content through standard operations, the performance of the site diminishes. The new List View Threshold feature addresses this issue by allowing you to specify a maximum number of list items that a database operation can retrieve. If a query exceeds the threshold, the query is blocked because it would adversely affect site performance.
Properties of the SPWebApplication class allow you to set request throttling for operations that return list items. For example, the MaxItemsPerThrottledOperation property specifies the maximum number of items that can be affected by a query or list update; if the number is exceeded, the operation is cancelled. The EnableThrottling property of a list object specifies whether throttling is applied to the list, and SPQuery and SPSiteDataQuery each have a RequestThrottleOverride property. The SPFieldIndex class represents a compound index over one or two fields in a list, which provides support for efficient list item queries that filter by using the fields.
For information about the large list feature, see Handling Large Folders and Lists. For information about how to throttle requests, see Request Throttling.
Referential Integrity for List Items with Lookup Columns
In previous releases of SharePoint Foundation, you could create a loosely defined relationship between lists through a lookup field, where a child list looks up to a parent list. In SharePoint Foundation 2010, items in the parent list are inherently "aware" of related items in the child list, and you can set referential integrity constraints on the child items by specifying a delete behavior. You can define list relationships and specify delete behavior through the user interface or through the object model.
The SPRelatedField class represents a relationship between fields in two lists. You can get a collection of SPRelatedField objects by calling the GetRelatedFields() method of the SPList class. The SPRelationshipDeleteBehavior enumeration is used to specify a deletion constraint: Cascade delete, where deleting a parent list item also deletes all related child items in one transaction; Restrict delete, where an error message is displayed if a user attempts to delete a parent list item with child items that look up to it; or None, which means no delete behavior is enforced (default value). You set a delete behavior through the RelationshipDeleteBehavior property of a lookup field, which is represented by an instance of the SPFieldLookup class.
For more information, see Lookups and List Relationships.
Enforcing Unique Column Constraints
With SharePoint Foundation, you can now provide a primary key on column fields by using (or "enforcing") a new feature named unique column constraints. You can use this feature to enforce uniqueness on values in a list or document library column. Note that not all column types support this feature. See Enforcing Uniqueness in Column Values for lists of supported and unsupported column types.
To support uniqueness constraints, a column must be able to be indexed. Furthermore, when uniqueness is enforced on a lookup column, the list item in the target list can have at most one list item looking up to it from the child list (the list where the Lookup column lives). In other words, uniqueness is not enforced on the projected column of the target list but rather on the ID column.
This feature can also be used programmatically by using a new property on the SPField object named EnforceUniqueValues. The property gets and sets a Boolean to specify whether duplicate values are allowed; the default is to allow duplicate values, so you must explicitly set a column field property EnforceUniqueValues to true.
Microsoft Business Connectivity Services (BCS) introduces the external list, which allows you to access external data in the same way that you access SharePoint Foundation list data. Users can interact with an external list in the same way they interact with other SharePoint lists. For information about external lists, see Building Block: External Content Types and External Lists.
Microsoft Synch Framework
The Microsoft Synch Framework in SharePoint Foundation is a comprehensive and unified synchronization architecture that provides data-agnostic and bidirectional capabilities to developers. Because it was designed to provide cross-application synchronization, implementing the Microsoft Synch Framework allows other Microsoft and third-party applications to synch more easily with SharePoint Foundation 2010 deployments.
The Synch Framework provides three core building blocks:
• Synch Runtime
• Synch Metadata Services
• Synch Provider
Mobile Device Development Enhancements
Microsoft SharePoint Foundation 2010 greatly expands access from mobile devices to SharePoint Foundation pages, lists, and functionality.
Mobile Web Part Adapters
It is now possible to have a mobile page that corresponds in purpose, data, and functionality to a nonmobile Web Parts page. You can adapt any Web Part on a nonmobile page by adding a control to the mobile page that duplicates the Web Part’s functionality. These controls are known as mobile adapters. Some of the major Web Parts that are built into SharePoint Foundation already have adapters. You develop your own adapters for Web Parts that you want to make available on mobile pages. A mobile adapter must be registered in the compat.browser file and registered as a Safe Control. When a mobile device accesses a Web Parts page, SharePoint Foundation redirects the device to the corresponding mobile page. For each Web Part on the Web Part page that has an adapter control, the adapter control will be rendered on the mobile page. For more information about developing mobile adapters, see Mobile Web Part Pages and Adapters, How to: Create a Mobile Adapter, and Walkthrough: Creating a Mobile Adapter.
Your SharePoint Foundation solutions can now incorporate Short Messaging Service (SMS) messages sent to mobile telephones. If your messaging solution uses the Outlook Message Service (OMS) protocol, most of your development work has already been done for you. A rich set of classes has been added to the object model to represent the Web Methods and response types of this protocol. If your solution requires a different protocol, base classes have been provided with default implementations of essential properties and methods.
SharePoint Foundation 2010 takes advantage of the new mobile messaging support to enhance its Alerts feature. Users can now choose to have Alerts sent as SMS messages to a mobile telephone. The SharePoint Foundation Web application is given its own account, which can be programmatically changed, with a messaging service provider. For more information, see Overview of Mobile Messaging Development.
New Mobile Pages and Controls
SharePoint Foundation 2010 adds many new types of mobile pages and over 60 new public mobile controls. These improvements provide new or enhanced support in mobile devices for view filtering, people selection, file uploading, images, wiki pages, Web Parts pages, and other functionality. The appearance of mobile pages is more colorful as well. In general, you can come much closer now to duplicating on a mobile device the full range of appearance, functionality, and data access that your SharePoint Foundation solutions provide to nonmobile users.
Mobile Document Viewers
You can create custom pages that host document viewers that enable mobile users to open, on their mobile device, documents from SharePoint Foundation document libraries even if they have been formatted for a particular desktop application, such as a spreadsheet or word processor application. For more information, see Developing Mobile Document Viewers.
Performance Monitoring and Request Throttling
Microsoft SharePoint Foundation 2010 introduces a programmable system of throttling HTTP requests when the front-end Web server that is handling the requests becomes too busy to handle them all.
Using the system, your server code can do the following:
• Determine which Windows Server 2008 performance counters are used to determine whether a front-end Web server is busy.
• Define what values of a counter are poor enough to cause the worker thread to begin throttling.
• Define which kinds of HTTP requests are throttled and whether they are throttled as soon as the server is busy or only when it has been busy continuously for at least 60 seconds.
• Exempt certain kinds of HTTP requests from throttling.
The system also reports the current health score of the front-end Web server in the HTTP response object, so your client side code can do its own request throttling.
For more information, see Building Block: Performance Monitors and Request Throttles.
New Query Support for Server Side Code
Querying data in server code has become significantly easier and more powerful in SharePoint Foundation 2010.
LINQ to SharePoint Provider
When your code needs to query list data, it is no longer necessary to compose a Collaborative Application Markup Language (CAML) query. SharePoint Foundation 2010 includes a LINQ to SharePoint provider to enable your code to query SharePoint lists from server code by using LINQ syntax. The provider translates your LINQ queries into CAML queries for submission to the content database. Because SharePoint Foundation 2010 also adds a new Join element to the Query Schema, you can have both implicit and explicit joins in your LINQ queries by using the join keyword. (See "List Joins Supported in CAML Queries" below.) You can also write to the lists by using the provider. As always with a LINQ provider, you must have classes that provide an object-oriented interface over the relational content databases. These classes are generated for you by the SPMetal tool that is included with SharePoint Foundation 2010. For more information about the LINQ to SharePoint provider, see Managing Data with LINQ to SharePoint. For more information about SPMetal, see SPMetal.
You can use LINQ syntax in your code even if you are not using the LINQ to SharePoint provider. Any SharePoint Foundation object that implements IEnumerable
List Joins Supported in CAML Queries
You can now join multiple lists in a single query with the new Join Element (View). Use the new ProjectedFields Element (View) element to specify what list fields to include in the results. There are some details that need to be considered when using these elements. For more information, see List Joins and Projections.
Querying in Client Side Code
There have been dramatic changes in the way that client applications access SharePoint Foundation data.
Queries in the Client Object Model
You can query within the client object model in two ways:
• Write CAML queries for use with the SPQuery class.
• Query any SharePoint Foundation object that implements IEnumerable
Support for ADO.NET Data Services Framework
If your client application does not use the new SharePoint Foundation client object model and you only need to query list data, you have the option of querying the content databases by using ADO.NET Data Services Framework.
Avoid Using SharePoint Data Providing Web Services
Earlier versions of the SharePoint Foundation product have provided a set of Web services to enable client interaction with SharePoint Foundation deployments. Some of these services, such as List Data Retrieval Web Service, are still supported, in order to provide backward compatibility and interoperability with Web service clients. For best performance and usability, we recommend that you use either the client object model or the ADO.NET Data Services Framework.
Avoid Making Direct Calls to owssvr.dll
The Microsoft SharePoint Foundation 2010 Software Development Kit (SDK) still includes documentation about client side access to SharePoint Foundation deployments by using RPC calls, but this information is included only to provide troubleshooting assistance to existing client applications that make such calls. To maximize your new client application’s compatibility with future versions of SharePoint Foundation, we recommend that you do not make direct calls to the owssvr.dll file as a method of client access.
The Server ribbon offers new functionality in the Microsoft SharePoint Foundation 2010 user interface. The ribbon serves as the primary command surface that you can use to interact with objects within Microsoft SharePoint Foundation. In earlier product versions, commands were accessed across multiple surfaces and located in varying menus. With the introduction of the ribbon, commands are grouped in a logical manner through the use of tabs and groups, making them easy to find. You can also extend the functionality of the ribbon to include your own custom commands.
For introductory information about the ribbon, see Building Block: Server Ribbon.
A sandboxed solution is a new concept in Microsoft SharePoint Foundation that allows site collection users to upload their own custom code solutions. A sandboxed solution uses a subset of the Microsoft.SharePoint namespace. These objects are marked in the object model to show their availability in a sandboxed solution. All sandboxed solutions are stored in a solution gallery. In addition, there are facilities provided to help server farm administrators monitor and validate solutions that have been uploaded to these galleries. Performance can be monitored by measuring CPU execution time, memory consumption, and database query time. You can also monitor other aspects of operation including abnormal termination, critical exceptions, unhandled exceptions, and data marshaling size.
Claims-based identity is an identity model in SharePoint Foundation and SharePoint Server 2010 that includes features such as authentication across users of Windows-based systems and systems that are not Windows-based, multiple authentication types, stronger real-time authentication, a wider set of principal types, and delegation of user identity between applications.
When a user signs in to SharePoint Foundation and SharePoint Server 2010, the user's token is validated and then used to sign in to SharePoint. The user's token is a security token issued by a claims provider. There are five supported sign-in or access modes in SharePoint Foundation and SharePoint Server 2010:
• Windows Classic–Mode Sign-In
• Windows Claims–Mode Sign-In
• SAML Passive Sign-in Mode
• ASP.NET Membership and Role Passive Sign-In
• Anonymous Access
Automatic Password Change and Managed Accounts
The new automatic password change feature in SharePoint Foundation enables you to update and deploy passwords without having to perform manual password update tasks across multiple accounts, services, and Web applications. This makes managing password in SharePoint Foundation simpler. You can use the automatic password change feature to determine whether a password is about to expire and to reset the password by using a long, cryptographically-strong random string.
You use managed accounts to implement the automatic password change feature. Managed accounts in SharePoint Foundation improves security and ensures application isolation.
For more information about the managed account API, see:
Effective Permission API
In Windows SharePoint Services 3.0, it is difficult to get a user’s effective permission on securable objects, such as SPWeb, SPList, SPListItem, and so on. Over time, the site can have very complex permission settings, especially when many objects do not inherit permissions from the parents (unique scope). It is difficult for administrators to determine the effective permission of a specific user and how the user gets the permission on a particular object. SharePoint Foundation introduced a new ribbon command named Check Permissions and a set of effective permission APIs that provide a quick way to enumerate all role assignments for a specific user in a specific scope.
Secure Store Service
The Secure Store Service replaces the Microsoft Office SharePoint Server 2007 Single Sign On feature. Secure Store Service is a service that provides storage and mapping of credentials such as account names and passwords. It enables you to securely store data that provides credentials that are required for connecting to external systems and for associating those credentials to a specific identity or group of identities. It is common for solutions to try to authenticate to an external system in which the current user is known differently or has a different account for authentication. In such cases, Secure Store Service can be used to store and map user credentials that are required by the external system. You can configure Secure Store Service so that multiple users can access an external system by using a single set of credentials on that external system.
Service Application Framework
The Service Application Framework provides a platform that allows developers to build scalable middle-tier applications that are hosted in Microsoft SharePoint Foundation 2010. These services can provide data or processing resources to other SharePoint features. The Service Application Framework enables services to be shared between computers on a server farm; it also helps load balance and manage services in SharePoint.
The Service Application Framework provides over 20 services that are built into the core product. For example, SharePoint Search is implemented by Service Application Framework. The Service Application Framework is an API that is provided to build services that are hosted by back-end application servers and consumed by front-end Web servers.
The Service Application Framework replaces the Shared Services Provider in Microsoft Office SharePoint Server 2007. The Service Application Framework model is much more flexible than the Shared Services Provider model. Service applications can be used by a single server farm or shared across farms, allowing centralized shared computing investments. Service Application Framework applications are easily scaled out for load balancing high-demand service applications.
Silverlight Integration and Cross-Domain Data Access
In Windows SharePoint Services 3.0, you could host a Microsoft Silverlight application in a Web Part. Microsoft SharePoint Foundation 2010 goes beyond by providing a built-in, extensible, Silverlight Web Part specifically designed to host Silverlight applications. Closely related to the new Web Part is Silverlight Cross-Domain Data Access (Silverlight CDA) that enables secure, cross-domain, integration between Silverlight applications and SharePoint Foundation deployments, and Silverlight CDA can be used by non-Silverlight external applications as well.
Silverlight Web Part
Adding a Silverlight application to your SharePoint Foundation solution need not require any SharePoint Foundation development at all in the simplest case: Users install your Silverlight application on the same domain as their SharePoint Foundation Web application and add the hosting Silverlight Web Part through the UI. All they need supply is the URL of the application. If the Silverlight application accesses SharePoint Foundation data and is hosted on a server outside the domain of the Web application, you create External Application XML that users, in turn, use to register the hosting Silverlight Web Part. A built-in Silverlight Tool Part is also part of SharePoint Foundation 2010. For more information, see SilverlightWebPart, SilverlightToolPart, How to: Create External Application XML Markup, and the other topics under the Web Parts that Host External Applications Such As Silverlight node of this SDK.
Silverlight Cross-Domain Data Access
It can be a great advantage to SharePoint Foundation users to be able to host applications that are in a different domain from the SharePoint Foundation Web application, because many such applications can be hosted on an application server and made available to all Web applications in the farm. SharePoint Foundation 2010 introduces Silverlight CDA to make this scenario possible in a secure way. Silverlight CDA enables administrators to control the permissions of the external applications without unduly restricting the ability of users to add Web Parts hosting these applications to Web Part pages. The application logs on to the SharePoint Foundation Web application as a distinct type of user known as an application principal. The application’s permissions are the intersection of the permissions that the administrator has granted this special user and the permissions of the real user who opened the Web page containing the Web Part that hosts the application. For more information about development with Silverlight CDA, see Overview of Integrating External Applications with Web Parts and the other topics under the Web Parts that Host External Applications Such As Silverlight node of this SDK.
The user interface (UI) in Microsoft SharePoint Foundation has been upgraded significantly. This includes the introduction of the Server ribbon, a revamped master page, and new cascading style sheets (CSS). Each of these enhancements creates a more consistent experience for users across pages and makes it easier to work with objects inside SharePoint Foundation.
User Interface Improvements
The following elements have been upgraded in SharePoint Foundation.
The Server Ribbon
The Server ribbon was introduced to make the command surfaces in SharePoint Foundation easier to use. The commands are logically grouped into tabs and groups to help users find commands more easily. The ribbon can also be extended to include customized tabs, groups, and commands. For more information about the ribbon, see Building Block: Server Ribbon.
In SharePoint Foundation application pages now reference the site master page. Site and application pages now contain the same content placeholders in SharePoint Foundation. Administrators can turn off custom master pages for application pages as well. For more information about master pages, see Default Master Pages in SharePoint Foundation.
Cascading Style Sheets
The cascading style sheets in SharePoint Foundation have been revamped. The CSS has been divided into multiple files to enable more targeted customization scenarios and to improve page loading performance. For more information, see Cascading Style Sheets Class Usage in SharePoint Foundation.
This topic introduces the new logging features available to Microsoft SharePoint Foundation 2010 developers, as well as the improvements made to the existing logging mechanisms.
New for Logging
The following features are new to logging in SharePoint Foundation.
The SPMonitoredScope is a code attribute that, when applied to a class or method, allows a developer to write logging information to the SharePoint Foundation usage database with complete application information and custom strings.
Request Usage Database
The request usage database allows the capture of every SharePoint Foundation resource request that is made as a page is rendered.
The developer dashboard is a utility that a developer can enable when debugging a SharePoint Foundation Web page. Similar in concept to ASP.NET tracing, this dashboard displays all the details of the request to the user.
In Windows SharePoint Services 3.0, the only way to write to SharePoint Trace Logs and Unified Logging System (ULS) Logs was to implement the IDiagnosticsManager interface, which required additional code to implement. However, in SharePoint Foundation, the preferred method is to use the SPDiagnosticsServiceBase class, which contains simpler and more efficient ways to interact with ULS Logs, specifically, the WriteEvent and WriteTrace methods that are simple to implement.
Windows PowerShell for SharePoint
Windows PowerShell™ command-line interface is a new command-line tool and supporting scripting language from Microsoft that complements Cmd.exe in the Windows administration context. In the SharePoint administration context, Windows PowerShell supersedes the Stsadm.exe administration tool. Moving forward, you should use Windows PowerShell scripting technology to develop any new command-line scripts in SharePoint Foundation 2010.
In Windows SharePoint Services 3.0, the Windows Workflow Foundation provided a highly extensible workflow model to the SharePoint platform. Microsoft SharePoint Foundation 2010 continues to build upon the functionality available in Windows SharePoint Services 3.0 and improves and expands your options so that you can build rich workflows that can accommodate even more complex business scenarios. This topic presents the new features that are available for workflows in SharePoint Foundation 2010.
The following is a list of the improvements and additions that have been added to the new product version.
New Workflow Activities
New workflow actions are built into the core installation of SharePoint Foundation. Workflow activities (also known as actions) are the building blocks of all workflows, and the addition of new activities gives you greater flexibility in your workflow design.
New Workflow Activities for SharePoint Foundation
Pluggable Workflow Services
Pluggable workflow services are now available that allow you to create workflows that interact and receive data from external sources.
Pluggable Workflow Services
Workflows in Windows SharePoint Services 3.0 were built to respond to a limited number of events. In SharePoint Foundation, workflows can interact with even more events. SharePoint Foundation also gives you the ability to create your own custom events and event receivers.
New Workflow Events
New site workflows break the dependency that Windows SharePoint Services 3.0 workflows had on list items. Site workflows now allow you to develop workflows that can be associated with specified events and other workflow activities.
Reusable Declarative Workflows
In the previous version, workflows were associated only with a specified list or document library and could not be packaged and deployed or copied to other lists or document libraries. In SharePoint Foundation, declarative workflows are reusable, which allows you to apply your workflow development efforts for one list to multiple places.