Project management systems provide a number of project management and tracking tools, but have no easy or lightweight way to manage an ideation creation and generation process due in part to the limited user access conditions (e.g., project manager access only). Ideation can be described as a process of using wisdom of a group of individuals in attempts to generate valuable collaborative project ideas. For example, a patent incentive program may entice enterprise employees to submit, comment, and vote on ideas, after which project managers review the entries and decide which ideas to pursue as full-fledged projects.
Collaboration systems, on the other hand, provide a natural place to impart ideation processes due in part to access and management abilities offered to multiple users, richer customization options, and a more lightweight solution than project management systems. Additionally, the project management systems are often segregated and detached from the collaboration systems and typically require many manual work hours in attempting to connect an ideation process managed in a collaboration system with a project management process using the project management system.
As one example, a current limited and inefficient method requires that project managers manually create new project entries for each new idea they want to turn into a project, including copying and pasting the relevant data which often results in a very time-consuming and error-prone manual entry and configuration process. Another drawback results in that once a project has been created in the project management system, there is no easy way for a project manager to update an associated project status in a collaboration system. Users who do not have access to the project management system (including potentially the creator of the original idea) are left in the dark about the progress of the project, unless the project manager takes the time to manually update status in both systems.
This summary is provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. This summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended as an aid in determining the scope of the claimed subject matter.
Embodiments are provided that include creating projects based in part on a number of collaborative list items and mapping information, but are not so limited. In an embodiment, a computing environment includes a project management system and a collaboration system that are used in part to manage an ideation to project creation process based in part on mappings used to map collaboration information between the collaboration system and the project management system. A method of an embodiment includes the use of mapping information and/or settings in part to create new projects from collaborative list items, wherein a project creation process includes copying over list item values according to the mapping information, storing an identifier of a collaborative list item in each created project, and/or storing an identifier of a created project as part of a corresponding list item. Other embodiments are also disclosed.
These and other features and advantages will be apparent from a reading of the following detailed description and a review of the associated drawings. It is to be understood that both the foregoing general description and the following detailed description are explanatory only and are not restrictive of the invention as claimed.
The collaboration system 104 can include functionality to provide collaboration services to associated users, while the project management system 102 can include functionality to create and manage projects. As described below, the environment 100 can be used as part of an ideation process to collaborate and generate ideation information to create project information and a number of associated projects. The project generation component 105 of an embodiment resides in the collaboration system 104 and operates in part by creating new projects in the project management system 102 based in part on mappings between list items (e.g., list items 106, 108) of a collaborative list 110 managed by the collaboration system 104. It will be appreciated that there may be large numbers of lists and/or projects. As shown as an example, the project generation component 105 has created a plurality of projects in the project management system 102, including a new project 112 based in part on aspects of list item 106, and a new project 114 based in part on aspects of list item 108.
The project generation component 105 uses mapping information 116 as part of creating the projects in the project management system 102. In one embodiment, the mapping information 116 and/or mapping information 118 provides mappings between fields of collaborative list 110 and fields on a project object of a project server. The project generation component 105 is configured in part to map fields from a collaborative list to any arbitrary project-level field in the project management system 102, including mapping to new and custom fields. For example, mappings can be defined between a list's columns and corresponding fields in a project web access application, including intrinsic fields and custom fields, and used when creating a new project from a list item as part of a manual or automatic project generation process.
The mapping information 116 of an embodiment stores field mapping parameters with the collaborative list 110, enabling the project generation component 105 to create one or more projects using one or more list items, including subsequent creation of new projects based in part on list items. In an embodiment, the project generation component 105 can be configured to create projects from ideas generated from an ideation process managed using aspects of the collaboration system 104. A project workflow or workflow existing in the project management system 102 and running on published or promoted projects can be used to update project progress in the collaboration system 104 and/or collaborative list 110. The project generation component 105 can also be configured to map fields between the project management system 102 and the collaboration system 104. For example, a project workflow 120 can be used to update a field or fields of list item 106 and a project workflow 122 can be used to update a field or fields of list item 108 when updating project progress to the collaborative list 110. Thus, aspects of a collaborative list can be automatically updated using a project-based workflow.
As described below, list items, including data and/or metadata, can be used to create projects, including through the use of manual input and/or the use of an encoded workflow associated with a designated collaborative list. As an example, a list workflow can be used to automatically generate one or more projects based in part on some defined criteria (e.g., number of votes, clicks, etc. exceeded some threshold) using field mappings and/or other settings associated with a number of list items. In one embodiment, a project creation process includes copying over the corresponding list item values according to the mapping information 116, storing an identifier (e.g., globally unique identifier (GUID)) of a collaborative list item in a new project, and/or storing an identifier (e.g., GUID) of the new project as part of the corresponding collaborative list item (e.g., a list item field). For example, a user can use a computer browser to create and manage collaborative idea lists, including the generation of new projects from idea list items and/or a list workflow, and/or use the new projects.
The project generation component 105 of one embodiment comprises encoded instructions included as part of a computer-readable medium that can be executed to: create a representation of an idea based in part on the use of a web ID, collaborative list ID, list item ID, and/or a corresponding project type ID (e.g., enterprise project type ID); validate that a list item or idea has not already been promoted to a project; generate a project data set to be used to create the project including, but not limited to, setting up links to the idea list entry (e.g., web ID, list ID, and/or item ID) in a new project, analyzing mappings or mapping information for an associated list or list item including checking a data type of each field, and/or converting each list item value/field appropriately; ensure that a new project name is unique; call project queuing and/or publishing methods (e.g., the QueueCreateProject and QueuePublish methods); and/or write a resulting project identifier (e.g., Proj_uid) to a corresponding list item.
Suitable programming means include any means for directing a computer system or device to execute steps of a method, including for example, systems comprised of processing units and arithmetic-logic circuits coupled to computer memory, which systems have the capability of storing in computer memory, which computer memory includes electronic circuits configured to store data and program instructions. An exemplary computer program product is useable with any suitable data processing system. While a certain number and types of components are described, it will be appreciated that other numbers and/or types and/or configurations can be included according to various embodiments. Accordingly, component functionality can be further divided and/or combined with other component functionalities according to desired implementations.
At 204, the process 200 of an embodiment operates to generate a mapping between selected list parameters and corresponding project fields. For example, a user can use a mapping dialog accessed using the browser component to manually map list columns of a collaborative list to project fields of a new project as part of generating a customized project according to the defined mappings. As another example, a list workflow can be used to automatically use a default mapping when generating projects from list items. At 206, the process 200 stores the mappings. For example, mapping information can be stored in a collaboration system and/or project management system and/or some other system or component. The mapping information can also be shared by different systems/users.
At 208, the process 200 operates to create one or more projects based in part on the number of list items of the collaborative list. For example, a user can define (e.g., select) which list items are to be used when creating projects. The process 200 of an embodiment at 208 operates to validate list column to project field mappings, including taking any corrective action(s), before creating a project in a project server. At 210, the process 200 operates to update one or more list item parameters using a project workflow. For example, a project workflow can be used to update a list parameter corresponding to status of a newly created and/or modified project. Mapping information can also be updated or modified as part of updating project and/or list item parameters.
It will be appreciated that processing and/or networking features can assist in providing project creation and list-project synchronization features. Aspects of the process 200 can be distributed to and among other components of a computing architecture, and client, server, and other examples and embodiments are not intended to limit features described herein. While a certain number and order of operations is described for the exemplary flow of
An end-user may or may not have permissions to use each feature of the project server 306 and collaboration server 308. For example, a user may have permission(s) to use features of the collaboration server 308 to create projects from collaborative items contained in an idea list, but lack permission(s) to modify a project on the project server 306 once created. As another example, users may have permission to suggest an idea, but not to create a project from that idea. End-users can use different browser applications, such as those used with a smartphones, laptop computers, tablet computers, desktop computers, and/or other computer/communication interface can be used access features of the environment 300.
As described in detail below, components of the exemplary computing environment 300 provide an ability to promote collaborative list items (e.g., SHAREPOINT list items) included in the collaboration server 308 to projects included in the project server 306 (e.g., a dedicated project management server or servers). The promotion operations can be used as part of tracking and executing projects associated with an idea collaboration process, including manual promotion capability, and/or automatic promotion capability using a list-based workflow (e.g., SHAREPOINT workflow).
As shown, the project server 306 includes a project web access (PWA) component 309, a project server interface (PSI) component 310, and/or business objects 312 that include projects, tasks, resources, assignments, etc. The project server 306 infrastructure also includes a draft database 314 and a published database 316. The draft database 314 can include projects yet to be included in the published database 316. The collaboration server 304 includes a project creation component 318, collaborative lists 320, and a project server setting component 322 (e.g., browser page) used in part to store a default field mapping for a list. As described above, collaborative list items, such as collaborative ideas, can be used to generate corresponding projects that can be tracked in both the project server 306 and collaboration server 304.
A project creation process of an embodiment includes defining mappings (e.g., manually and/or automatically) between columns of a collaborative list and project fields, and using an automatic copy operation to copy over data from a list item into a corresponding project based on the mapping. Parameters associated with new projects and/or associated lists/list items can be maintained and/or updated as part of synchronizing and/or updating operations. In an embodiment, control input, by a project manager or other user for example, can be used to automatically update a status column in the collaborative list from a workflow running on the corresponding project (e.g., a project workflow). As an example, components of the computing environment 300 can be used as part of providing demand management (DM) services including collecting demand (e.g., project ideas and/or proposals), gathering features on the proposals when managing using a portfolio management operation (e.g., a triage and/or selection workflow), and/or project executing and tracking using a component or component of the project server 306 (e.g., project management application and/or server).
In an embodiment, components of the exemplary computing environment 300 provide an integrated, easy-to-use infrastructure that provides a method to promote collaborative list items of a collaborative list to projects in a project management application and/or server, but is not so limited. Projects and the associated promoted ideas can be tracked and/or executed by project managers and/or other users/systems/components. As described briefly above, functionality of the exemplary computing environment 300 allows for the specification of a mapping between columns of a collaborative list to fields in project management server, laying the source to target copy mappings to copy over data from a list item to a new project, enabling multiple project fields to be instantly populated.
As an example, mappings, including default and custom mappings, between items in a collaborative list can be pre-generated, such as before project promotion time for example, or can be automatically saved the first time a list item is manually promoted. As described above, the mapping functionality can be enabled both manually (e.g., using SHAREPOINT list view UI) as well as automatically (e.g., using SHAREPOINT workflow on the list of ideas). For example, a manual mapping process can use manual field mapping inputs, including selection of an enterprise project type of the project to be created to indicate a project workflow to start on a new project.
An existing field mapping can be automatically loaded to allow the user to quickly create additional projects. When automatically triggered using a list-based workflow (e.g., a SHAREPOINT workflow), an existing field mapping (e.g., default based on prior mapping to same data type) can be used when promoting list items to corresponding projects. If no mapping exists, a promotion method of one embodiment operates to promote a title field of a list item to be a project name of a new project created for the list item. For example, as part of an idea promotion methodology, certain ideas can be promoted based in part on a potential added value resulting from pursuing a new project.
In an embodiment, the project server 306 is configured to enable users to update a status column of a collaborative ideas list by using a new project workflow or activity. Based in part on the mappings and the knowledge of the project server 306 with respect to a location of the list item of the collaborative list that was used to create a corresponding project, the list item can be updated with a custom status, as specified by the project workflow author for example. A value of the custom status can range from a hardcoded value indicating the stage of the workflow to a custom message based on the value of a field in the project. Components of the exemplary computing environment 300 provide features and functionality that include generating, storing, and/or managing item list to project field mappings, increasing two-way interaction between a project and the list item or items after promotion, and/or flexibility of using different promotion use cases, such as manual promotion and/or using a list workflow to automatically promote a list item or items as examples.
As an example, the exemplary computing environment 300 can be implemented as part of enabling an additional lightweight ideation phase before a proposal phase of portfolio management process. For example, an enterprise user can use a browser or other application to create and/or access a SHAREPOINT list of ideas as part of creating projects in the project server 306 using triaged list items from the collaboration server 308. Thus, as one example, any permitted collaborative list user can create and collaborate on ideas, while one or more project managers who are project server users can triage the ideas and push certain ones into project server for follow-up, tracking, and execution. Users thereby obtain the power and value of a project management server, such as optimization, scheduling, etc., including an ability to initiate the process by collecting ideas in a collaboration system, such as a SHAREPOINT server farm for example.
For example, the components of exemplary computing environment 300 provide the infrastructure to grow ideas using a collaboration server to create projects in a project server, leaving an ideation process or methodology up to the user to define. Users can access the ability to make the ideation and project creation process as simple or powerful absent prescribing a specific list type to use or workflow to follow. For example, voting and commenting information associated with list items can be used by a project manager to triage a list of ideas. In an embodiment, a user can use a browser application or interface to leverage the features and functionality of the exemplary computing environment 300, including existing and/or future standards, cross-browser compatible markup, etc.
As described above, one or more projects can be created based on a collaborative list including one or more list items, but is not so limited. In an embodiment, a project creation component 318, including encoded instructions that can be processed to provide various features, is configured to create individual projects for designated (e.g., selected) list items of a collaborative list. For example, the project creation component 318 can use a create project from list item method (e.g., Public Guid CreateProjectFromListItem(GUID, webID, GUID listID, int itemID, GUID EPTID) as part of creating new projects from list items.
The project creation component 318 of an embodiment operates to 1) create a representation of an idea that includes a web ID, a list ID, a list item ID, and/or an associated project type ID (e.g., enterprise project type ID); 2) validate the idea including ensuring that the idea is not already a promoted project; 3) generate and fill a project data set to be used to create the project, including, but not limited a) setting up links to the idea list entry (e.g., webID, list ID, and item ID) in the new project, and/or b) analyzing mappings or mapping information for the list, performing field filling operations including i) checking each field's data type, and converting each list item value/field appropriately and/or ii) removing invalid characters and/or truncating a name of the project if necessary and/or if no field is specified for name, then use the title field of list item as the default name; 4) ensure the name of the project is unique; 5) call project queuing and/or publishing methods (e.g., the QueueCreateProject and QueuePublish methods); and/or 6) write the resulting project identifier (e.g., Proj_uid) to the list item.
Example code portions that can be used to create a project from a collaborative list include:
Once a new project is created, including the mappings defined between list items and corresponding project fields, the information in the collaborative server 308 can be updated to reflect project-related changes/updates. For example, an idea list item property associated with a new project can be updated as parameters of the project change. In an embodiment, a workflow action can be used to update a collaborative idea list with a project status that references the mapping between the project and idea. For example, the workflow action can be surfaced in SHAREPOINT designer (SPD) and Visual Studio.
In an embodiment, an update activity can be called inside of a workflow on the project web access site, wherein the ideas list is included in the same site collection as the project web app (project web access) site. By default, the workflow can be configured to impersonate a project manager who initiated the workflow when the project was created by having a project server push back a current status and/or any other data and set a field in the list. In an embodiment, the project server 306 can be configured to use a mapping database or other data structure to look up or identify a list item ID associated with a given project and use the lookup information to push the data to the corresponding collaborative list in the collaboration server 308. Thereafter, the collaborative list data can be updated in part using the collaborative object model implemented in the environment 300 (e.g., SHAREPOINT object model).
In an embodiment, a project can be created and updated using encoded instructions that operate in part to map collaborative list items to corresponding new projects and update collaborative list item parameters. For example, collaborative list data can be updated in part using an update idea list item status method (e.g., Public void UpdateIdeaListhemStatus(GUID projectID, string status)). The update idea list item status method of an embodiment operates to: ensure that a user has permission to open a particular project; read the project web ID, list ID, and/or item ID properties; and/or use the project web ID, list ID, and/or item ID properties to access the specified list and list item and set (and add if necessary) the idea list item status column's value to the specified status.
Example code portions that can be used to update collaborative list data include:
List to project mapping information can also be stored, managed, and/or updated as part of keeping the collaborative and project-related operations up to date. For example, mapping information between items of a collaborative list and fields of a newly created project can be stored as part of computer storage, such as by using a database server or other storage medium to manage updates. In an embodiment, the mapped collaborative list columns to project server custom fields can be stored in a computer readable medium, such as one or more mapping database structures for example. In one embodiment, mapping information can be stored in a property bag associated with the collaborative list (e.g., located in the SPList.RootFolder.Properties as a hash table). The project server fields of an embodiment include custom fields and/or intrinsic fields of a project (e.g., project name, start date, finish date, author, project owner, etc.). Mapping information can reflect a mapping to a custom field where the ID is the GUID. Mapping information can also reflect a mapping to an intrinsic field, storing the column name from the corresponding project table (e.g., MSP_PROJECTS table).
The SPField ID of an embodiment comprises the internal name of the field: SPField.InternalName. As an example, the project server custom field IDs are GUIDs, and intrinsic field IDs correspond with the column names.
Key=ProjectFieldMappings
Value=An XML document with following schema:
<Mapping>
<Field SP=“SPField1 Id” PS=“PSField1 Id”/>
<Field SP=“SPField2 Id” PS=“PSField2 Id”/>
. . .
</Mapping>
Storing mapped list item (e.g., an idea type) parameters to project server parameters of an embodiment comprises storing each list item to project mapping in a project server to allow for the project server to update the project status for a corresponding list item which can be communicated to the collaboration system 302. In one embodiment, the updating can be performed by a project server workflow hosted in a site collection. In one alternative embodiment, mapping information can be stored in the collaborative server 304, allowing a list to push updates associated with a list item to the project server. When updated, a mapping can be updated in both systems synchronously, asynchronously, etc. Changes made to parameters associated with a mapping can be managed and/or updated at various times.
As part of a promotion operation, when a collaborative list item is promoted in the project server 306, the list item's ID can be stored in a corresponding project table (e.g., MSP_PROJECTS table). As an example, the table below shows a number of columns that can be included as part of a projects table (e.g., MSP_PROJECTS table):
Exemplary methods can also be configured and used to manipulate list item and project-related mappings. For example, a load mappings method (e.g., LoadMappings( )) can operate to query a collaborative list's properties (e.g., SHAREPOINT list properties) for project field mappings (e.g., ProjectFieldMappings). If the project field mappings exist, the method can operate to parse any extensible markup language (XML) and/or any other information. As another example, a save mappings method (e.g., SaveMappings( )) operates to write the specified mappings in XML and/or other format(s) to the collaborative list's properties associated with the project generated from the collaborate list.
Exemplary conversion methods can be configured and used for various data types. The conversion methods of an embodiment are encoded as part of the functionality of the project server 306 and associated with a PSI component 310 call (e.g., CreateProjectFromListItem). A PSI method of an embodiment manages any conversion operations. A number of exemplary conversion methods are described below, all types not described here can be blocked and an error can be returned if attempting to convert the non-described types.
Exemplary conversion methods include, but are not limited to: Integer To Number (Decimal, double, float, int, . . . ); Text To Text; Note To Text; Date/Time To Date (The Date_Value in Date is implemented as a DateTime); Choice To Text; Boolean To Flag; Number To Number; Currency To Cost (Currency extends Number, and adds CurrencyLocalId that is used to format value, and position the currency symbol and Cost: CustomField.Type enum; Project.CurrencySymbolPosition enum defined by culture in use in the project); URL To Text; User To Text; Lookup To Text; MultiChoice To Text; UserMulti To Text; Lookup Multi To Text; Calculated To Text (e.g., a calculated field using an excel-like formula—the value can be computed when the list item is inserted or modified, import/copy the formula (s), etc.); ContentTypeId To Text; and/or GUID To Text, etc.
In an embodiment, type equivalencies can be used as illustrated in the following table.
As described above, execution of a workflow can be used to call a create project from list item action using the collaborative server 308, a PSI call, and/or a mapping database. A create project from list item action (e.g., CreateProjectFromListItem) of an embodiment uses a project type GUID parameter and includes a main workflow activity that operates to create a project from a collaborative list item, such as an ideas list item. For example, an enterprise project type (EPT) globally unique identifier (GUID) can be used when creating the new project from an idea stored as a list item.
The table below lists examples of mapping parameters used in part to maintain mapping information between collaborative list items and corresponding projects. The mapping information can be stored in a dedicated repository, remotely, and/or locally to serve respective collaborative and project systems. As shown as an example in the table below, three exemplary mappings can be used between entities in a SHAREPOINT list and project server.
For this example, as part of the mapping of SHAREPOINT list items to project server projects, when a list item is promoted to a project, a resulting project's GUID can be stored in a hidden column in the list. In one embodiment, if the column has a value in it, then the list item is considered promoted and precluded from being promoted again unless other circumstances occur. In an embodiment, when a list item is promoted, use a return value of a create project call as the project identifier (e.g., the project's GUID), and store that value in a project web access project ID (PwaProjectID) column in the list.
If the project web access project ID column does not exist for the list, then a new column can be created for the list with the properties shown in the table below, where the new project's GUID can be saved.
Continuing the example, as part of the mapping project server projects to SHAREPOINT list items, when a list item is promoted to a project, the list item's ID can be stored in the corresponding project table (e.g., MSP_PROJECTS table), and the list item ID can be passed as part of a create project call.
The table below lists exemplary columns that can be included as part of a project table (e.g., MSP_PROJECTS) table, having the exemplary properties shown.
A user can use functionality described herein to define a mapping between list columns and project fields of a project web access, including intrinsic fields and enterprise custom fields, wherein the mapping can be used when creating a new project from a list item and/or when updating project and list item parameters. A mapping definition of an embodiment can be configured as a one-way mapping (e.g., from list column to project web access field) that allows mapping to all fields defined in project web access, and stored in the collaboration server 308 as a property on the list itself. If a column maps to a project web access intrinsic field, the name of the field can be stored corresponding to a column name in the MSP_PROJECTS table. If the column maps to an enterprise custom field, the GUID of the custom field can be stored (e.g., MSP_CUSTOM_FIELDS.MD_PROP_UID). As described above, a mapping method can be used as part of storing an XML fragment of all mappings as a property on a list.
An exemplary UI can be used to access a page in list settings where users can go to create, view, and manage a column-field mapping. Once the mapping feature is enabled on the list, a new link can be added to the “General Settings” heading called “project server settings” using a SHAREPOINT custom action for example.
The exemplary link can be used to load a custom project server settings page (e.g., “PwaSettings.aspx”) and enables the user to manage and configure the mapping between list columns and project fields (e.g., project web access fields). The link uses a list GUID as a parameter to show the proper content for a selected list. In an embodiment, a page can be displayed including showing all the columns in a list, wherein a user can select fields of a project or projects that map to each column. The page can be configured to check for a new project permission for the user, and an error message can be displayed if the user doesn't have that permission.
If the user does have permission, encoded instructions can be used to get a list of columns on the list for display with their display name and data type, one per row, including intrinsic and/or custom fields. A first “Type” column is the data type of the SHAREPOINT column, using the display name of SPField.TypeDisplayName (e.g. “Single line of text”, “Date & Time”, “Person or Group” . . . ). The instructions can be encoded to not perform validation on the page until the user affirmatively acts (e.g., clicks “OK”). An error message can be displayed if any field is double-mapped to more than one column.
If the user doesn't have permission to see a list of custom fields, then only the set of intrinsic fields can be used/shown. If there is an existing mapping on the list that includes custom fields, and a user without permissions loads the page, then a process operates to show blank values for any columns that map to custom fields. The user can also cancel out of the page and maintain the existing mapping. As described briefly above, permissions allowing use of the button can be checked in the page itself. For example, the button can be hidden, grayed-out, or otherwise disabled for users who do not have Manage Lists permissions. The buttons can be enabled when items in a view are selected (e.g., one or multiple).
The table below lists a number of exemplary collaborative and project server mapping field types that can be used in various embodiments described herein.
Data types not useful or that do not correspond to a data type in the project server can be blocked. The following table provides a number of exemplary mapping scenarios handled accordingly.
As described above, collaborative list items, including data and metadata, can be used to create projects, including manual creation (e.g., using SHAREPOINT UI) functionality, and automated creation functionality based in part on the use of an encoded workflow associated with a designated items of a collaborative list (e.g., an Ideas List). Mapping information and/or settings are used in part to create a new project from a collaborative list item, wherein a project creation process of one embodiment includes copying over the correct values according to the mapping, storing an identifier (e.g., GUID) of the collaborative list item in the new project, and/or storing an identifier (e.g., GUID) of the new project as part of the collaborative list item.
As an example, of a new project creation process, when a collaborative list item is used to create a project, a collaborative system can operate to create a new column in the associated collaborative list to store a status of the collaborative item tracking aspects of the new project. The table below shows exemplary column properties that can be used.
The table below shows a number of exemplary default values used to populate the field to indicate that the project was promoted. The value can be overwritten once a project manager uses the UpdateIdeaListhemStatus workflow action on the new project.
As an example, when a Create Projects button is clicked, the UI can be configured to show a progress bar or waiting icon, and update all the field mappings with newly selected values if changed. Moreover, for each selected list item, the progress indicator text can be updated with a new item number, create a new project in the project server 306 based in part on a selected project or template type, save a collaborative list item GUID to the project (e.g., stored on the project server), and save the project GUID to the list item as stored in the collaborate server 308. If a mapping exists for a given column, a copy operation copies over the value into the correct field of the new project.
As described above, projects can also be created automatically based in part on a workflow action included with a collaborative list. For example a workflow action can be provided to create a new project in project web access that users can include as part of a list-based workflow. Since the action is part of a list item workflow, the action operates to create a single project at a time based in part on a workflow context. The table below list exemplary properties of the workflow action.
In an embodiment, a workflow action can use a project type GUID (e.g., EPT GUID) as a parameter and, when executed, operate to create a new project with the selected project type, save the list item GUID to the project, save a project GUID to a collaborative list item, read the column-field mapping, and copy over values for each mapped column. If no mapping exists, default to limiting the mapping of a Title column of the collaborative list to a Project Name field in the project server.
In an embodiment, once a project or projects are created based upon one or more collaborative lists, fields in each project can be updated based in part a list item workflow. For example, an UpdateProjectProperty workflow action can be used to update fields in the associated project from the list item workflow. A list-based workflow action can read the PwaProjectID column as part of updating the correct project in project server 306. As an example, using an update idea list item property workflow action (e.g., UpdateIdeaListItemProperty workflow action), users can update fields in a collaborative ideas list using a project-based workflow. When used in the context of a project-based workflow, the action can operate to read the project-related column (e.g., SP_IDEA_LISTITEM_ID column) from the corresponding project as part of updating the correct list item in the collaboration server 308.
As part of exposing manual and automatic project creation features in a collaborative list, a functional computer application can be installed, such as a project web application and/or collaborative list-project cross-functionality application to a site, such as part of providing a computing server farm. In an embodiment, the following functionality can be encoded with or added to all lists in a particular site, including, but not limited to providing a project server settings page under List Settings and/or new ribbon interface buttons. As an example, a SHAREPOINT application can be built to expose any part of or all of the functionality to a site, and requires that a project server or application be installed as a prerequisite. As another example, the functionality can be shipped as a SHAREPOINT feature that users can enable on a particular site.
The table below shows example logging properties for the create project from list item functionality.
In an embodiment, several restrictions can be enforced, such as: creating one project per list item, and once a list item is promoted to a project, store the project GUID in a hidden column on the list, including preventing creation of another project from the same list item. However, if the user deletes the value in that column, another project can then be created from the list item. In an alternative embodiment, project fields can be updated after an initial creation using a project property workflow action (e.g., the UpdateProjectProperty) that can be provided as a regular list workflow. A project service instance can be used for the site collection that the Ideas List lives in/resides which prevents cross-site collection actions. A project queue can be configured to handle throttling of requests as necessary.
As a use example, a project manager accesses a collaborative system using a browser-based application, including those used for desktop, laptop, tablet, and/or smartphone type devices/systems, and creates a collaborative list (e.g., a SHAREPOINT list for ideas), configured according to a particular idea collaboration process. In an embodiment, once a decision is made to grow items of the collaborative list into project server projects, the described features and functionality can be exposed (e.g., using an add-in, accessing isolated code, etc.). In an alternative embodiment, a user can access a project server settings page in List Settings, and set up any mapping from columns of the list to encoded fields of a project server.
While certain embodiments are described herein, other embodiments are available, and the described embodiments should not be used to limit the claims. Exemplary communication environments for the various embodiments can include the use of secure networks, unsecure networks, hybrid networks, and/or some other network or combination of networks. By way of example, and not limitation, the environment can include wired media such as a wired network or direct-wired connection, and/or wireless media such as acoustic, radio frequency (RF), infrared, and/or other wired and/or wireless media and components. In addition to computing systems, devices, etc., various embodiments can be implemented as a computer process (e.g., a method), an article of manufacture, such as a computer program product or computer readable media, computer readable storage medium, and/or as part of various communication architectures.
The term computer readable media as used herein may include computer storage media. Computer storage media may include volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information, such as computer readable instructions, data structures, program modules, or other data. System memory, removable storage, and non-removable storage are all computer storage media examples (i.e., memory storage.). Computer storage media may include, but is not limited to, RAM, ROM, electrically erasable read-only memory (EEPROM), flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store information and which can be accessed by a computing device. Any such computer storage media may be part of device.
The embodiments and examples described herein are not intended to be limiting and other embodiments are available. Moreover, the components described above can be implemented as part of networked, distributed, and/or other computer-implemented environment. The components can communicate via a wired, wireless, and/or a combination of communication networks. Network components and/or couplings between components of can include any of a type, number, and/or combination of networks and the corresponding network components include, but are not limited to, wide area networks (WANs), local area networks (LANs), metropolitan area networks (MANs), proprietary networks, backend networks, etc.
Client computing devices/systems and servers can be any type and/or combination of processor-based devices or systems. Additionally, server functionality can include many components and include other servers. Components of the computing environments described in the singular tense may include multiple instances of such components. While certain embodiments include software implementations, they are not so limited and encompass hardware, or mixed hardware/software solutions. Other embodiments and configurations are available.
Referring now to
Generally, program modules include routines, programs, components, data structures, and other types of structures that perform particular tasks or implement particular abstract data types. Moreover, those skilled in the art will appreciate that the embodiments of the invention may be practiced with other computer system configurations, including hand-held devices, multiprocessor systems, microprocessor-based or programmable consumer electronics, minicomputers, mainframe computers, and the like. The invention may also be practiced in distributed computing environments where tasks are performed by remote processing devices that are linked through a communications network. In a distributed computing environment, program modules may be located in both local and remote memory storage devices.
Referring now to
The mass storage device 14 is connected to the CPU 8 through a mass storage controller (not shown) connected to the bus 10. The mass storage device 14 and its associated computer-readable media provide non-volatile storage for the computer 2. Although the description of computer-readable media contained herein refers to a mass storage device, such as a hard disk or CD-ROM drive, it should be appreciated by those skilled in the art that computer-readable media can be any available media that can be accessed or utilized by the computer 2.
By way of example, and not limitation, computer-readable media may comprise computer storage media and communication media. Computer storage media includes volatile and non-volatile, removable and non-removable media implemented in any method or technology for storage of information such as computer-readable instructions, data structures, program modules or other data. Computer storage media includes, but is not limited to, RAM, ROM, EPROM, EEPROM, flash memory or other solid state memory technology, CD-ROM, digital versatile disks (“DVD”), or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the desired information and which can be accessed by the computer 2.
According to various embodiments of the invention, the computer 2 may operate in a networked environment using logical connections to remote computers through a network 4, such as a local network, the Internet, etc. for example. The computer 2 may connect to the network 4 through a network interface unit 16 connected to the bus 10. It should be appreciated that the network interface unit 16 may also be utilized to connect to other types of networks and remote computing systems. The computer 2 may also include an input/output controller 22 for receiving and processing input from a number of other devices, including a keyboard, mouse, etc. (not shown). Similarly, an input/output controller 22 may provide output to a display screen, a printer, or other type of output device.
As mentioned briefly above, a number of program modules and data files may be stored in the mass storage device 14 and RAM 18 of the computer 2, including an operating system 24 suitable for controlling the operation of a networked personal computer, such as the WINDOWS operating systems from MICROSOFT CORPORATION of Redmond, Wash. The mass storage device 14 and RAM 18 may also store one or more program modules. In particular, the mass storage device 14 and the RAM 18 may store application programs, such as word processing, spreadsheet, drawing, e-mail, and other applications and/or program modules, etc.
It should be appreciated that various embodiments of the present invention can be implemented (1) as a sequence of computer implemented acts or program modules running on a computing system and/or (2) as interconnected machine logic circuits or circuit modules within the computing system. The implementation is a matter of choice dependent on the performance requirements of the computing system implementing the invention. Accordingly, logical operations including related algorithms can be referred to variously as operations, structural devices, acts or modules. It will be recognized by one skilled in the art that these operations, structural devices, acts and modules may be implemented in software, firmware, special purpose digital logic, and any combination thereof without deviating from the spirit and scope of the present invention as recited within the claims set forth herein.
Although the invention has been described in connection with various exemplary embodiments, those of ordinary skill in the art will understand that many modifications can be made thereto within the scope of the claims that follow. Accordingly, it is not intended that the scope of the invention in any way be limited by the above description, but instead be determined entirely by reference to the claims that follow.