US20080115195A1 - Remote workflow schedule authoring - Google Patents

Remote workflow schedule authoring Download PDF

Info

Publication number
US20080115195A1
US20080115195A1 US11/598,573 US59857306A US2008115195A1 US 20080115195 A1 US20080115195 A1 US 20080115195A1 US 59857306 A US59857306 A US 59857306A US 2008115195 A1 US2008115195 A1 US 2008115195A1
Authority
US
United States
Prior art keywords
workflow
schedule
computer
actions
workflow schedule
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Abandoned
Application number
US11/598,573
Inventor
Alexander Malek
Phillip David Allen
Stuart B. Kolodner
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Priority to US11/598,573 priority Critical patent/US20080115195A1/en
Priority to US11/606,431 priority patent/US8146017B2/en
Publication of US20080115195A1 publication Critical patent/US20080115195A1/en
Assigned to MICROSOFT TECHNOLOGY LICENSING, LLC reassignment MICROSOFT TECHNOLOGY LICENSING, LLC ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: MICROSOFT CORPORATION
Abandoned legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/10Office automation; Time management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/06Resources, workflows, human or project management; Enterprise or organisation planning; Enterprise or organisation modelling
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S715/00Data processing: presentation processing of document, operator interface processing, and screen saver display processing
    • Y10S715/961Operator interface with visual structure or function dictated by intended use
    • Y10S715/965Operator interface with visual structure or function dictated by intended use for process control and configuration
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S715/00Data processing: presentation processing of document, operator interface processing, and screen saver display processing
    • Y10S715/961Operator interface with visual structure or function dictated by intended use
    • Y10S715/965Operator interface with visual structure or function dictated by intended use for process control and configuration
    • Y10S715/966Computer process, e.g. operation of computer
    • Y10S715/967Visual or iconic programming

Definitions

  • a workflow defines a series of tasks within an organization to produce a final outcome. Workflows allow for business process formalization and management.
  • a collaborative workgroup computing application allows different workflows to be defined for different types of jobs. For example, in a publishing setting, a document may be automatically routed from writer to editor to proofreader to production. At each stage in the workflow, one individual or group is responsible for a specific task. Once the task is complete, the workflow application ensures that the individuals responsible for the next task are notified and receive the data needed to execute the next stage of the process.
  • a workflow schedule authoring tool enables a user to author a workflow by arranging building blocks in a particular order.
  • Building blocks may correspond to events, conditions, or actions.
  • Each building block is associated with source code that defines an action to be taken when the building block is executed.
  • the order of the building blocks determines the workflow schedule process that will be performed when the workflow schedule is executed by a workflow execution engine on a server computer.
  • Some building blocks may be predefined for commonly used actions.
  • Other building blocks may be customized to execute a specific function or to provide a solution to a unique problem.
  • the building blocks simplify workflow schedule authoring because the user does not need to write any code.
  • Previous workflow schedule authoring tools require all of the building blocks utilized in a workflow schedule to be stored on both the server and the remote computer that is utilized to author the workflow. This requirement, however, may be a barrier to deploying new building blocks on the server computer. Additionally, in remote workflow authoring systems where multiple users are permitted to concurrently edit the same workflow, conflicts can arise as a result of different versions of the same workflow being stored on the server computer. Moreover, in such systems no safeguards are provided for ensuring that the workflow engine cannot execute unauthorized building blocks.
  • Methods and computer-readable media are provided herein for remotely authoring a workflow schedule.
  • the building blocks utilized in creating a workflow schedule do not need to be stored at the remote computer that is utilized to author the workflow.
  • Safeguards are also provided at various stages in the authoring process to ensure that each building block has been authorized for use and execution by a workflow schedule, and to eliminate conflicts between different versions of workflow schedules.
  • a method for remotely authoring a workflow schedule.
  • a workflow schedule authoring tool (referred to herein as the “authoring tool”) is provided that includes a user interface and associated functionality for creating workflow schedules by arranging building blocks, called workflow actions, in a particular order. Workflow actions may correspond to events, conditions, or actions.
  • the authoring tool is executed at a client computer and workflow schedules created at the client computer are transmitted to a server computer for execution.
  • the authoring tool is operative to receive a list of available workflow actions from the server computer. In response to receiving the list, the authoring tool then determines whether the workflow actions are present on the client computer. If the workflow actions are not present on the client computer, the authoring tool transmits a request to the server computer for data from which workflow action proxies for the missing workflow actions may be created.
  • a workflow action proxy is an object that includes the properties of the associated workflow action but does not include an implementation for its methods.
  • the workflow action proxies are utilized at the client computer during authoring to simulate the interfaces and properties of the corresponding workflow action.
  • the server computer utilizes the actual workflow actions to perform the associated workflow processing. In this manner, workflow schedules can be remotely authored without transferring all of the required executable workflow actions from the server computer to the client computer. Only the data for constructing the workflow action proxies is transferred.
  • the server computer determines whether the identified workflow actions are authorized for use in a workflow schedule. This may be accomplished, for instance, by examining a safe workflow actions list that includes data identifying workflow actions as either being safe or unsafe for execution. If the identified workflow actions are safe for execution, the server computer returns the data for creating the workflow action proxies in response to the request. If the identified workflow actions are not safe for execution, however, the server computer will not return the data.
  • the authoring tool constructs the workflow action proxies.
  • the proxies may then be utilized during the workflow schedule authoring process in place of the actual workflow actions.
  • Workflow actions stored at the client computer may also be utilized during creation of the workflow schedule.
  • the client computer transmits the workflow schedule to the server computer for storage.
  • the authoring tool may also transmit a request to the server computer to verify the contents of the workflow schedule.
  • the server computer In response to receiving a request to verify the workflow schedule, the server computer performs processing operations to verify the contents of the workflow schedule. In particular, in one implementation the server computer identifies the workflow actions identified in the workflow schedule. The server computer then determines whether the workflow actions in the workflow schedule are authorized for use in a workflow schedule. As described above, the server computer may examine a safe workflow actions list to make this determination. If the workflow actions in the workflow schedule are authorized for use, the server computer returns a success indication to the client computer in response to the request. If the workflow actions in the workflow schedule are not authorized for use, however, the server computer will return a failure response to the client computer.
  • the workflow schedule may be instantiated and executed. This may occur, for instance, in response to the occurrence of an event or in response to a manual request to execute the workflow schedule.
  • the server computer Prior to executing the workflow schedule, however, the server computer again determines whether the workflow actions in the workflow schedule to be executed are authorized for use. If the workflow actions in the workflow schedule to be executed are authorized for use, the workflow schedule is instantiated. If the workflow actions in the workflow schedule to be executed are not authorized for use, the server computer will not instantiate the unsafe workflow actions.
  • the server computer stores workflow schedules in a versioned document library.
  • each version of a workflow schedule is assigned a version number. Newly created instances of workflow schedules utilize the most recent version of the workflow schedule. Previously instantiated instances, however, continue to utilize the version of the workflow schedule that was utilized when the workflow schedule was first instantiated. In this manner, each instance of a workflow schedule utilizes the same version of the workflow schedule during its entire lifespan, thereby eliminating conflicts between different versions of workflow schedules.
  • FIG. 1 is a network and software diagram showing an illustrative operating environment for the processes and computer systems described herein and several of the software components utilized by the computer systems described herein;
  • FIGS. 2A-2C and 3 are flow diagrams illustrating various processes provided herein for remotely authoring a workflow schedule
  • FIGS. 4A and 4B are user interface diagrams showing illustrative user interfaces provided herein for declarative data binding in a system for remotely authoring a workflow schedule;
  • FIG. 5 is a flow diagram showing an illustrative process for declaratively binding workflow properties to data sources.
  • FIG. 6 is a computer architecture diagram showing one computer architecture suitable for implementing the various computer systems described herein.
  • a workflow schedule authoring tool is provided that can utilize workflow action proxies instead of the workflow actions themselves during authoring. This eliminates the need to transfer executable workflow actions from a server computer to the client computer executing the authoring tool. Moreover, functionality is described herein for performing authorization checks at the server computer during the authoring process to ensure that only authorized workflow actions are utilized and executed. The server computer is also operative to provide versioning functionality for the workflow schedules to thereby eliminate the possibility of conflicts occurring between different versions of a workflow schedule. Additional details regarding each of these subject areas will be provided below with respect to the FIGURES.
  • program modules include routines, programs, components, data structures, and other types of structures that perform particular tasks or implement particular abstract data types.
  • program modules include routines, programs, components, data structures, and other types of structures that perform particular tasks or implement particular abstract data types.
  • program modules include routines, programs, components, data structures, and other types of structures that perform particular tasks or implement particular abstract data types.
  • the subject matter described herein 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.
  • FIG. 1 is a network diagram illustrating aspects of an illustrative operative environment for the subject matter described herein that includes a client computer 102 , a network 106 , and a server computer 104 .
  • the client computer 102 and the server computer 104 are communicatively coupled to one another through respective connections to the network 106 .
  • the network 106 comprises the Internet.
  • the network 106 may comprise a LAN, WAN, or other type of network suitable for connecting the client computer 102 and the server computer 104 .
  • FIG. 1 also illustrates a number of software components utilized by the client computer 102 and the server computer 104 .
  • the client computer 102 includes an operating system 108 suitable for controlling the operation of a networked desktop or laptop computer.
  • the server computer 104 includes an operating system 108 suitable for controlling the operation of a networked server computer.
  • both the client computer 102 and server computer 104 may utilize the WINDOWS XP or WINDOWS VISTA operating systems from MICROSOFT CORPORATION of Redmond, Wash.
  • Other operating systems such as the LINUX operating system or the OSX operating system from APPLE COMPUTER, INC. may be utilized.
  • the embodiments presented herein are described in the context of a desktop or laptop client computer 102 and a remote server computer 104 , many other types of computing devices and systems may be utilized to embody the various aspects presented herein.
  • the client computer 102 also includes a Web browser program (referred to herein as a “browser”) 118 .
  • the browser 118 is operative to request, receive, and display information pages, such as Web pages, from the server computer 104 .
  • the browser 118 is operative to establish a connection to a collaborative application 124 executing on the server computer 104 .
  • the browser 118 may request information pages provided by the collaborative application 124 .
  • the collaborative application 124 is a computer software program that enables multiple users to collaborate on documents, projects, tasks, and other matters.
  • the collaborative application 124 also supports workflow processes.
  • a workflow is an abstraction of how work flows through a business process. This abstract notion of workflow has been modeled in computer programs and computer software for supporting workflow through a business process has become known as “workflow.”
  • workflow refers to such a software model (i.e., a software program that supports the modeling of how work flows through a business process).
  • the collaborative application 124 is the MICROSOFT OFFICE SHAREPOINT SERVER 2007 from MICROSOFT CORPORATION of Redmond, Wash. It should be appreciated, however, that the implementations described herein may be utilized with any type of computer system that supports workflow processes.
  • the server computer 104 includes the .NET FRAMEWORK 3.0 122 from MICROSOFT CORPORATION.
  • the .NET FRAMEWORK 3.0 122 is a framework for building, deploying, and running Web services and other applications.
  • the .NET FRAMEWORK 3.0 122 includes the WINDOWS WORKFLOW FOUNDATION (“WF”) 120 .
  • the WF 120 is a programming model, engine, and tools for building and executing workflow enabled applications.
  • the WF 120 allows a developer to more easily model and support business processes. Details regarding the .NET FRAMEWORK 3.0 122 and the WF 120 are publicly available from the MICROSOFT DEVELOPERS NETWORK (“MSDN”) and from other sources.
  • MSDN MICROSOFT DEVELOPERS NETWORK
  • the WF 120 includes a workflow engine for instantiating and executing instances of workflows created using authoring tools, such as the workflow authoring tool 110 .
  • the workflow engine runs a workflow by advancing the workflow through a workflow schedule 112 .
  • the workflow schedule 112 is a data structure containing data that identifies the workflow actions 116 that should be executed as a part of the workflow, workflow logic, and various metadata.
  • the workflow authoring tool 110 may be utilized to author the workflow schedule 112 .
  • the workflow schedule 112 may then be transmitted to the server computer 104 for execution as a part of the collaborative services provided by the collaboration application 124 . Additional details regarding this process are provided below.
  • the client computer 102 also includes the .NET FRAMEWORK 3.0 122 and WF 120 for use during the workflow authoring process described herein.
  • the implementations presented herein are described in the context of the .NET FRAMEWORK 3.0 122 and the WF 120 , other similar programming frameworks and workflow modeling tools available from other manufacturers may be utilized on the client computer 102 and server computer 104 to implement the embodiments presented herein. Additional details regarding the provision of and use of workflow in a collaborative application can be found in U.S. patent application Ser. No. 11/117,808, filed on Apr. 29, 2005 and entitled “Workflow Hosting Computing System Using a Collaborative Application,” U.S. patent application Ser. No.
  • the client computer 102 is operative to execute a workflow authoring tool 110 .
  • the authoring tool 110 is an application program that provides facilities for visually creating workflows that can be executed by the collaborative application 124 .
  • a user can graphically create a workflow schedule 112 . Additional details regarding the operation of the workflow authoring tool 110 can be found in U.S. patent application Ser. No. 10/955,659, filed on Sep. 30, 2004 and entitled “Workflow Schedule Authoring Tool,” which is assigned to the assignee of the instant application and expressly incorporated herein by reference in its entirety.
  • the workflow schedule 112 references various workflow actions 116 that are the building blocks that perform the actual processing for the various steps of the workflow.
  • the workflow actions 116 are executable components that may correspond to events, conditions, or actions within a workflow process. As shown in FIG. 1 , the workflow actions 116 are stored on the server computer 104 for use when the workflow schedule 112 is executed. Some of the workflow actions 116 may also be stored on the client computer 102 for use during the authoring of a workflow schedule 112 .
  • workflow actions 116 available at the server computer 104 it is impracticable or undesirable for all of the workflow actions 116 available at the server computer 104 to be stored on the client computer 102 .
  • new workflow actions 116 may be added to the server computer 104 after deployment.
  • the authoring tool 110 is operative to determine which workflow actions 116 are not stored thereon and to request data from which workflow action proxies 114 may be constructed for the missing workflow actions 116 .
  • the workflow action proxies 114 are software objects that include the properties of the associated workflow action 116 but that do not include an implementation for its methods.
  • the workflow action proxies 114 are utilized at the client computer 102 during authoring to simulate the interfaces and properties of the corresponding workflow action 116 .
  • the server computer 104 utilizes the actual workflow actions 116 to perform the associated workflow processing. In this manner, workflow schedules 112 can be remotely authored without transferring all of the required executable workflow actions 116 from the server computer 104 to the client computer 102 . Only the metadata needed by the client computer 102 to construct the workflow action proxies 114 is transferred.
  • the authoring tool 110 constructs the workflow action proxies 114 .
  • the proxies 114 may then be utilized during the workflow schedule authoring process in place of the actual workflow actions 116 .
  • Any workflow actions 116 that are stored at the client computer 102 may also be utilized during creation of the workflow schedule 112 .
  • the client computer 102 transmits the workflow schedule 112 to the server computer 104 for storage.
  • the server computer 104 stores workflow schedules 112 in a versioned document library 128 provided by the collaborative application 124 .
  • each version of a workflow schedule 112 is assigned a version number. Newly created instances of workflow schedules 112 utilize the most recent version of the workflow schedule 112 . Previously instantiated instances, however, continue to utilize the version of the workflow schedule 112 that was utilized when the workflow schedule 112 was first instantiated. In this manner, each instance of a workflow schedule 112 utilizes the same version of the workflow schedule 112 during its entire lifespan. Additional details regarding this process will be provided below with reference to FIG. 3 .
  • the workflow schedule 112 may be instantiated and executed. This may occur, for instance, in response to the occurrence of an event or in response to a manual request to execute the workflow schedule 112 .
  • the workflow actions 116 are utilized to perform the actual processing for the workflow. If a workflow action proxy 114 was utilized during authoring, the corresponding workflow action 116 is utilized at run time to perform the workflow processing.
  • the server computer 104 is operative to verify that each of the workflow actions 116 referenced by a workflow schedule 112 have been authorized for execution. This may occur, for instance, at the time the authoring client 110 requests data for creating the workflow action proxies 114 , at the time a workflow schedule 112 is verified by the server computer 104 , and at run time. Additional details regarding these security mechanisms will be provided below with reference to FIGS. 2A-2C .
  • FIGS. 2A-2C are flow diagrams illustrating the operation of the client computer 102 and the server computer 104 according to one implementation.
  • the routine 200 illustrates processing operations performed by the client computer 102 while the routine 250 illustrates processing operations performed by the server computer 104 .
  • the routines 200 and 250 will be described in conjunction with one another.
  • the logical operations described herein are 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.
  • the logical operations described herein are referred to variously as operations, structural devices, acts, or modules. These operations, structural devices, acts and modules may be implemented in software, in firmware, in special purpose digital logic, and any combination.
  • the routine 200 begins at operation 202 , where the workflow authoring tool 110 is launched on the client computer 102 . Once the workflow authoring tool 110 has been launched, the routine 200 continues to operation 204 , where the workflow designer portion of the workflow authoring tool 110 is launched.
  • the workflow designer is a portion of the workflow authoring tool 202 that provides functionality for visually defining a business workflow without programming. Several aspects of a user interface provided by the workflow designer are described below with reference to FIGS. 4A-4B and 5 .
  • the routine 200 continues to operation 206 , where the workflow authoring tool 110 retrieves a list of available workflow actions 116 from the server computer 104 .
  • the server computer 104 transmits the list of available workflow actions 116 to the client computer at operation 252 of the routine 250 .
  • the authoring tool 110 compares the actions identified in the received list to the workflow actions 116 already stored at the client computer 102 . In this manner, the authoring tool 110 can determine the assemblies already present and loaded on the client computer 102 and the workflow actions 116 that are available from the server computer 104 that are not present on the client computer 102 .
  • the workflow authoring tool 110 determines whether any workflow actions 116 are needed from the server computer 104 . If no workflow actions 116 are needed, the routine 200 branches from operation 208 to operation 216 , described below. If workflow actions 116 are needed, the routine 200 continues from operation 208 to operation to 210 . At operation to 210 , the workflow authoring tool 110 transmits a request for the data necessary to build the workflow action proxies 114 to the server computer 104 . As discussed briefly above, rather than downloading all of the needed workflow actions 116 , the workflow authoring tool 110 builds proxies 114 for each of the needed workflow actions 116 .
  • the workflow action proxies 114 are objects that model a corresponding workflow action 116 .
  • the proxies 114 include the properties of the corresponding workflow action 116 and the appropriate interfaces. However, the workflow action proxies 114 do not provide any implementation for the methods contained in the corresponding workflow action 116 . In this manner, the workflow action proxies 114 appear to the authoring tool 110 to be valid workflow actions 116 that can be utilized in a workflow schedule 112 . The workflow action proxies 114 can therefore be utilized when creating a workflow schedule 112 . As will be described in greater detail below, the actual workflow actions 116 are utilized by the server computer 104 when the workflow schedule 112 is instantiated.
  • the server computer 104 receives the request for the workflow action proxy data at the operation 254 of the routine 250 .
  • the routine 250 continues to operation 256 where the server computer 104 identifies the actions that are authorized for use in a workflow schedule 112 . This may be accomplished, for instance, by examining the contents of the safe workflow actions list 126 .
  • the safe workflow actions list 126 comprises a list of all of the workflow actions 116 that are authorized for use in a workflow schedule 112 .
  • a workflow action 116 that is identified in the safe workflow actions list 126 as being authorized for use in a workflow schedule 112 is referred to herein as being “safe” for use.
  • the server computer 104 determines whether each of the workflow actions 116 for which proxy data has been requested are safe. The server computer 104 will not return proxy data for any workflow action 116 that is not safe.
  • routine 250 continues to operation 258 where the server computer 104 serializes the properties, methods, and other information necessary to generate the workflow action proxies 114 for each of the safe workflow actions 116 into an extensible markup language (“XML”) document.
  • the routine 250 then continues to operation 260 where the XML document is transmitted to the workflow authoring tool 110 .
  • the authoring tool 110 receives the XML document containing the metadata necessary to build the workflow action proxies 114 for each of the needed workflow actions 116 . Once the XML document has been received, the routine 200 continues to operation 214 , where the authoring tool 110 builds the workflow action proxies 114 for each of the needed workflow actions 116 . Once the proxies 114 have been created, the authoring tool 110 loads the proxies 114 into memory for use.
  • routine 200 continues to operation to 218 , where the workflow designer may be utilized by a user to create the workflow schedule 112 .
  • the workflow designer provides a user interface through which workflow actions 116 can be visually arranged to create the workflow schedule 112 .
  • the workflow action proxies 114 are used in place of the workflow actions 116 to which they correspond.
  • the routine 200 continues from operation 220 to operation 222 .
  • the authoring tool 110 validates the workflow schedule 112 .
  • the routine 200 then continues to operation 224 where the authoring tool 110 transmits the workflow schedule 112 to the server computer 104 .
  • the server computer 104 receives the workflow schedule 112 at operation 262 of the routine 250 and saves the workflow schedule 112 to the document library 128 .
  • the document library 128 comprises a versioned document storage library provided by the collaborative application 124 . When a workflow schedule 112 is stored in the document library 128 , it is assigned a version number.
  • each workflow schedule 112 is utilized to ensure that an instance of a particular version of a workflow schedule 112 is executed until it completes. This ensures that newer versions of a workflow schedule 112 will not conflict with the execution of a previous version of the same workflow schedule 112 . Additional details regarding this process will be described below with reference to FIG. 3 .
  • the routine 200 continues to operation 226 where the authoring tool 110 transmits a request to the server computer 104 to validate the workflow schedule 112 .
  • the server computer 104 may expose a remote application programming interface (“API”) for this purpose.
  • API application programming interface
  • the server computer 104 validates the workflow schedule 112 and verifies that all of the workflow actions 116 identified in the workflow schedule 112 are safe.
  • the routine 250 then continues to operation 266 where the server computer returns a success message to the authoring tool 110 if the workflow schedule 112 is valid. If the workflow schedule 112 is not valid, the server computer 104 returns a failure response to the authoring tool 110 .
  • the authoring tool 110 receives the response to the validation request from the server computer 104 .
  • the authoring tool 110 determines if the response indicated that the workflow schedule 112 included errors. If the workflow schedule 112 has errors, the routine 200 branches from operation 230 to operation 232 , where the errors are displayed. The routine 200 then continues from operation 232 to operation 218 .
  • the workflow designer may be utilized to correct any errors in the workflow schedule 112 .
  • the routine 200 continues from operation 230 to operation 232 .
  • the authoring tool 110 calls a remote API on the server computer 104 for associating the workflow schedule 112 with a list on the server computer 104 .
  • workflow schedules 112 are executed against items and documents identified within various lists. Multiple workflow schedules 112 may be executed against a given document or item in a list.
  • the server computer 104 performs the association request at operation 270 . Once the association request has been completed, the routines 200 and 250 continue to operations 234 and 272 , respectively, where they end.
  • routine 300 begins at operation 302 , where a decision is made as to whether a workflow schedule 112 should be executed.
  • a workflow may be executed in response to an item in a list changing, an item being added to a list, or in response to a manual request.
  • instantiated workflows may be paused during execution. The occurrence of events or other conditions identified in the workflow may cause the previously instantiated workflow to continue execution.
  • the determination made at operation 302 is whether to execute a new instance of a workflow schedule 112 or to continue the execution of a previously instantiated version of a workflow schedule 112 . If a workflow schedule 112 is to be executed, the routine 300 continues from operation 302 to operation 304 .
  • routine 300 continues from operation 310 to operation 312 .
  • the workflow schedule 112 is compiled into an executable assembly.
  • the routine 300 then continues to operation 314 , where the compiled workflow assembly is passed to the workflow execution engine in the WF 120 for execution.
  • operation 316 the instance of the workflow schedule 112 is executed. From operation 316 , the routine 300 continues to operation 318 , where it ends.
  • the routine 300 branches from operation 304 to operation 306 .
  • the previously instantiated version of the workflow is executed using the version of the workflow schedule 112 stored in the document library 128 .
  • each instance of a workflow continues executing using the appropriate version of the workflow schedule 112 until the instance has completed its execution. In this manner, the workflow schedule 112 can be edited and modified while instances of the workflow schedule 112 are executing without causing a conflict.
  • the routine 300 continues to operation 318 , where it ends.
  • FIGS. 4A and 4B an illustrative user interface provided by the workflow authoring tool 110 for declaratively binding data sources to parameters in workflow actions 116 will be described.
  • FIGS. 4A-4B show several illustrative user interfaces 400 and 450 that can be utilized by a workflow designer to graphically bind data sources to the various parameters utilized by a workflow action 116 .
  • workflow schedules 112 can include decision logic that allows actions to be performed when certain conditions are met. For instance, a rule may be created within a workflow schedule 112 that assigns an expense report to a manager for approval when the total amount of the expense report is less than a certain amount.
  • the user interfaces 400 and 450 shown in FIGS. 4A-4B allow the workflow designer to specify the properties of such a rule in a graphical manner. Through these user interfaces, the user has the option of specifying a static value for each property or choosing to make the parameter data-driven so that at runtime the value loaded into the parameter is looked up dynamically. Parameters may be assigned to data fields within any list maintained by the collaborative application 124 .
  • the user interface 400 shown in FIG. 4A is displayed when a user is graphically creating the conditions and actions for two rules 404 A and 404 B that define one step of a workflow.
  • the user is defining a process for the approval of a business expense.
  • an icon is displayed adjacent to the parameter thereby indicating that the parameter can be specified or bound to a data value.
  • the user interface 450 described below with respect to FIG. 4B is presented.
  • the parameters are illustrated in the user interface 400 with underlining to indicate that they are a hyperlink that can be selected and modified.
  • the parameters 402 A- 402 E have been underlined, thereby indicating that they are selectable parameters that have been bound to a data source or manually specified.
  • the parameters 402 A- 402 E can be selected to modify the specified value or source of the data bound value.
  • FIG. 4B shows an illustrative user interface 450 for binding the parameters to a list, the value from a previous action, or to an input parameter.
  • the user interface 450 includes drop-down menus 452 A and 452 B through which a user may choose the data source and field of the data source to perform the lookup on for the associated data parameter.
  • the drop-down menu 452 A is utilized to specify the data source and the drop-down menu 452 B is utilized to specify the field of the selected data source.
  • the drop-down menu 452 A provides a list of available data sources and the drop-down menu 452 B provides a list of fields within the data source selected in the drop-down menu 452 A.
  • the data source may comprise an item in the current list or come from an external source, such as another list maintained by the collaborative application 124 .
  • the user interface 450 includes two additional drop-down menus 452 C and 452 D.
  • the drop-down menu 452 C lists the set of fields in the external list chosen in the manner described above.
  • the drop down menu 452 D identifies the set of workflow parameters and the set of fields in the associated list when selected.
  • the drop-down menu 452 D is also editable so that the user can type in a value.
  • the user interface 450 also includes a button 453 that allows a user to databind multiple levels of the user interface 450 .
  • selection of the button 453 allows a user to input an expression that defines the item in the lookup list that should be bound to.
  • the user interface 450 may also include a button for clearing the contents of the fields of the user interface 450 . It should be appreciated that although drop-down menus and buttons have been utilized in the illustrative user interface 450 shown in FIG. 4B , other types of suitable user interface controls may be utilized that allow a user to select from a list of data sources and fields.
  • routine 500 for declaratively binding a workflow action parameter to a data source and for propagating the data type for data returned from a data source to the data type of the parameter.
  • the routine 500 begins at operation 502 , where the authoring tool 110 displays the user interface 400 shown in FIG. 4A for specifying the actions and conditions of the workflow.
  • the routine 500 then continues to operation 504 , where a determination is made as to whether a user has requested that a parameter be bound to a data source. This may occur, for instance, in response to a user selecting one of the parameters 402 A- 402 E displayed in the user interface 400 . If a user does request that a workflow action parameter be bound to a data source, the routine 500 continues from operation 504 to operation 506 .
  • the workflow authoring tool 110 displays the user interface 450 for declaratively binding a data source to a workflow parameter shown in FIG. 4B .
  • the user is then permitted to select the drop-down menus 452 A and 452 B to select the data source to which the selected workflow parameter will be bound.
  • the drop-down menus 452 A and 452 B will only include sources and fields having data types that are compatible with the data type of the selected workflow parameter. This occurs at operation 508 of the routine 500 .
  • a “friendly” data lookup allows data of one data type to be converted to data of another data type. For instance, if the source is a number type while the target is a string type, the number type may be converted to a string upon lookup. Other data transformations may also be provided by the friendly lookup procedure. In this manner, the data type of the target is propagated to data retrieved from the source.
  • routine 500 continues from operations 512 and 514 to operation 516 where the workflow property is bound to the selected data source. Using either the direct lookup or the friendly lookup described above, data from the data source is retrieved and utilized in the workflow parameter at runtime. From operation 516 , the routine 500 continues to operation 518 , where it ends.
  • the computer architecture shown in FIG. 6 illustrates a conventional desktop, laptop computer, or server computer.
  • the computer architecture shown in FIG. 6 includes a central processing unit 602 (“CPU”), a system memory 608 , including a random access memory 614 (“RAM”) and a read-only memory (“ROM”) 616 , and a system bus 604 that couples the memory to the CPU 602 .
  • the computer 600 further includes a mass storage device 610 for storing an operating system 108 , application programs, and other program modules, which are described in detail above with reference to FIG. 1 .
  • the mass storage device 610 is connected to the CPU 602 through a mass storage controller (not shown) connected to the bus 604 .
  • the mass storage device 610 and its associated computer-readable media provide non-volatile storage for the computer 600 .
  • computer-readable media can be any available media that can be accessed by the computer 600 .
  • computer-readable media may include 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-readable 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”), HD-DVD, BLU-RAY, 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 600 .
  • the computer 600 may operate in a networked environment using logical connections to remote computers through a network 106 , such as the Internet.
  • the computer 600 may connect to the network 106 through a network interface unit 606 connected to the bus 604 . It should be appreciated that the network interface unit 606 may also be utilized to connect to other types of networks and remote computer systems.
  • the computer 600 may also include an input/output controller 612 for receiving and processing input from a number of other devices, including a keyboard, mouse, or electronic stylus (not shown in FIG. 6 ). Similarly, an input/output controller may provide output to a display screen, a printer, or other type of output device (also not shown in FIG. 6 ).
  • a number of program modules and data files may be stored in the mass storage device 610 and RAM 614 of the computer 600 , including an operating system 108 suitable for controlling the operation of a networked desktop or server computer, such as the WINDOWS XP operating system from MICROSOFT CORPORATION of Redmond, Wash., or the WINDOWS VISTA operating system, also from MICROSOFT CORPORATION.
  • the mass storage device 610 and RAM 614 may also store one or more program modules.
  • the mass storage device 610 and the RAM 614 may store a Web browser program 110 , a collaborative application 124 , and the other program modules described above with respect to FIG. 1 .
  • Other program modules may also be stored in the mass storage device 610 and utilized by the computer 600 .

Abstract

Methods, systems, apparatus, and computer-readable media are provided herein for remotely authoring a workflow schedule. According to one method, a workflow schedule authoring tool is provided that may utilize workflow action proxies in place of actual workflow actions during authoring. Safeguards are also provided at various stages in the authoring process to ensure that each workflow action utilized in a workflow schedule has been authorized for use in and execution by a workflow schedule. Workflow schedules may also be provided with version numbers to ensure that the same version of a workflow schedule is utilized throughout the entire lifespan of a workflow instance.

Description

    BACKGROUND
  • A workflow defines a series of tasks within an organization to produce a final outcome. Workflows allow for business process formalization and management. A collaborative workgroup computing application allows different workflows to be defined for different types of jobs. For example, in a publishing setting, a document may be automatically routed from writer to editor to proofreader to production. At each stage in the workflow, one individual or group is responsible for a specific task. Once the task is complete, the workflow application ensures that the individuals responsible for the next task are notified and receive the data needed to execute the next stage of the process.
  • A workflow schedule authoring tool enables a user to author a workflow by arranging building blocks in a particular order. Building blocks may correspond to events, conditions, or actions. Each building block is associated with source code that defines an action to be taken when the building block is executed. The order of the building blocks determines the workflow schedule process that will be performed when the workflow schedule is executed by a workflow execution engine on a server computer. Some building blocks may be predefined for commonly used actions. Other building blocks may be customized to execute a specific function or to provide a solution to a unique problem. The building blocks simplify workflow schedule authoring because the user does not need to write any code.
  • Previous workflow schedule authoring tools require all of the building blocks utilized in a workflow schedule to be stored on both the server and the remote computer that is utilized to author the workflow. This requirement, however, may be a barrier to deploying new building blocks on the server computer. Additionally, in remote workflow authoring systems where multiple users are permitted to concurrently edit the same workflow, conflicts can arise as a result of different versions of the same workflow being stored on the server computer. Moreover, in such systems no safeguards are provided for ensuring that the workflow engine cannot execute unauthorized building blocks.
  • It is with respect to these considerations and others that the disclosure made herein is provided.
  • SUMMARY
  • Methods and computer-readable media are provided herein for remotely authoring a workflow schedule. Through the embodiments presented herein, the building blocks utilized in creating a workflow schedule do not need to be stored at the remote computer that is utilized to author the workflow. Safeguards are also provided at various stages in the authoring process to ensure that each building block has been authorized for use and execution by a workflow schedule, and to eliminate conflicts between different versions of workflow schedules.
  • According to one aspect presented herein, a method is provided for remotely authoring a workflow schedule. According to one method, a workflow schedule authoring tool (referred to herein as the “authoring tool”) is provided that includes a user interface and associated functionality for creating workflow schedules by arranging building blocks, called workflow actions, in a particular order. Workflow actions may correspond to events, conditions, or actions. The authoring tool is executed at a client computer and workflow schedules created at the client computer are transmitted to a server computer for execution.
  • According to one aspect, the authoring tool is operative to receive a list of available workflow actions from the server computer. In response to receiving the list, the authoring tool then determines whether the workflow actions are present on the client computer. If the workflow actions are not present on the client computer, the authoring tool transmits a request to the server computer for data from which workflow action proxies for the missing workflow actions may be created. A workflow action proxy is an object that includes the properties of the associated workflow action but does not include an implementation for its methods. As described in detail herein, the workflow action proxies are utilized at the client computer during authoring to simulate the interfaces and properties of the corresponding workflow action. At execution time, however, the server computer utilizes the actual workflow actions to perform the associated workflow processing. In this manner, workflow schedules can be remotely authored without transferring all of the required executable workflow actions from the server computer to the client computer. Only the data for constructing the workflow action proxies is transferred.
  • In response to receiving the request for data from which workflow action proxies may be created, the server computer determines whether the identified workflow actions are authorized for use in a workflow schedule. This may be accomplished, for instance, by examining a safe workflow actions list that includes data identifying workflow actions as either being safe or unsafe for execution. If the identified workflow actions are safe for execution, the server computer returns the data for creating the workflow action proxies in response to the request. If the identified workflow actions are not safe for execution, however, the server computer will not return the data.
  • Using the data received from the server computer, the authoring tool constructs the workflow action proxies. The proxies may then be utilized during the workflow schedule authoring process in place of the actual workflow actions. Workflow actions stored at the client computer may also be utilized during creation of the workflow schedule. Once the workflow schedule has been completed, the client computer transmits the workflow schedule to the server computer for storage. The authoring tool may also transmit a request to the server computer to verify the contents of the workflow schedule.
  • In response to receiving a request to verify the workflow schedule, the server computer performs processing operations to verify the contents of the workflow schedule. In particular, in one implementation the server computer identifies the workflow actions identified in the workflow schedule. The server computer then determines whether the workflow actions in the workflow schedule are authorized for use in a workflow schedule. As described above, the server computer may examine a safe workflow actions list to make this determination. If the workflow actions in the workflow schedule are authorized for use, the server computer returns a success indication to the client computer in response to the request. If the workflow actions in the workflow schedule are not authorized for use, however, the server computer will return a failure response to the client computer.
  • Once the workflow schedule has been verified, the workflow schedule may be instantiated and executed. This may occur, for instance, in response to the occurrence of an event or in response to a manual request to execute the workflow schedule. Prior to executing the workflow schedule, however, the server computer again determines whether the workflow actions in the workflow schedule to be executed are authorized for use. If the workflow actions in the workflow schedule to be executed are authorized for use, the workflow schedule is instantiated. If the workflow actions in the workflow schedule to be executed are not authorized for use, the server computer will not instantiate the unsafe workflow actions.
  • According to other aspects provided herein, the server computer stores workflow schedules in a versioned document library. Through facilities provided by the document library, each version of a workflow schedule is assigned a version number. Newly created instances of workflow schedules utilize the most recent version of the workflow schedule. Previously instantiated instances, however, continue to utilize the version of the workflow schedule that was utilized when the workflow schedule was first instantiated. In this manner, each instance of a workflow schedule utilizes the same version of the workflow schedule during its entire lifespan, thereby eliminating conflicts between different versions of workflow schedules.
  • The above-described subject matter may also be implemented as a computer-controlled apparatus, a computer process, a computing system, or as an article of manufacture such as a computer-readable medium. These and various other features will be apparent from a reading of the following Detailed Description and a review of the associated drawings.
  • 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 to be used to limit the scope of the claimed subject matter. Furthermore, the claimed subject matter is not limited to implementations that solve any or all disadvantages noted in any part of this disclosure.
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • FIG. 1 is a network and software diagram showing an illustrative operating environment for the processes and computer systems described herein and several of the software components utilized by the computer systems described herein;
  • FIGS. 2A-2C and 3 are flow diagrams illustrating various processes provided herein for remotely authoring a workflow schedule;
  • FIGS. 4A and 4B are user interface diagrams showing illustrative user interfaces provided herein for declarative data binding in a system for remotely authoring a workflow schedule;
  • FIG. 5 is a flow diagram showing an illustrative process for declaratively binding workflow properties to data sources; and
  • FIG. 6 is a computer architecture diagram showing one computer architecture suitable for implementing the various computer systems described herein.
  • DETAILED DESCRIPTION
  • The following detailed description is directed to systems, methods, apparatus, and computer-readable media for remotely authoring a workflow schedule. As will be described in greater detail herein, a workflow schedule authoring tool is provided that can utilize workflow action proxies instead of the workflow actions themselves during authoring. This eliminates the need to transfer executable workflow actions from a server computer to the client computer executing the authoring tool. Moreover, functionality is described herein for performing authorization checks at the server computer during the authoring process to ensure that only authorized workflow actions are utilized and executed. The server computer is also operative to provide versioning functionality for the workflow schedules to thereby eliminate the possibility of conflicts occurring between different versions of a workflow schedule. Additional details regarding each of these subject areas will be provided below with respect to the FIGURES.
  • While the subject matter described herein is presented in the general context of program modules that execute in conjunction with the execution of an operating system and application programs on a computer system, those skilled in the art will recognize that other implementations may be performed in combination with other types of program modules. 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 subject matter described herein 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 subject matter presented herein is also described as being practiced in a distributed computing environment where tasks are performed by remote processing devices that are linked through a communications network and wherein program modules may be located in both local and remote memory storage devices. It should be appreciated, however, that the implementations described herein may also be utilized in conjunction with stand-alone computer systems and other types of computing devices. It should also be appreciated that although reference is made herein to the Internet, the embodiments presented herein may be utilized with any type of local area network (“LAN”) or wide area network (“WAN”).
  • In the following detailed description, references are made to the accompanying drawings that form a part hereof, and which are shown by way of illustration specific embodiments or examples. Referring now to the drawings, in which like numerals represent like elements through the several figures, aspects of a computing system and methodology for remote authoring of a workflow schedule will be described. In particular, FIG. 1 is a network diagram illustrating aspects of an illustrative operative environment for the subject matter described herein that includes a client computer 102, a network 106, and a server computer 104.
  • As shown in FIG. 1, the client computer 102 and the server computer 104 are communicatively coupled to one another through respective connections to the network 106. According to one implementation, the network 106 comprises the Internet. However, it should be appreciated that the network 106 may comprise a LAN, WAN, or other type of network suitable for connecting the client computer 102 and the server computer 104.
  • FIG. 1 also illustrates a number of software components utilized by the client computer 102 and the server computer 104. In particular, the client computer 102 includes an operating system 108 suitable for controlling the operation of a networked desktop or laptop computer. The server computer 104 includes an operating system 108 suitable for controlling the operation of a networked server computer. For instance, according to implementations, both the client computer 102 and server computer 104 may utilize the WINDOWS XP or WINDOWS VISTA operating systems from MICROSOFT CORPORATION of Redmond, Wash. Other operating systems, such as the LINUX operating system or the OSX operating system from APPLE COMPUTER, INC. may be utilized. It should be appreciated that although the embodiments presented herein are described in the context of a desktop or laptop client computer 102 and a remote server computer 104, many other types of computing devices and systems may be utilized to embody the various aspects presented herein.
  • According to one implementation, the client computer 102 also includes a Web browser program (referred to herein as a “browser”) 118. The browser 118 is operative to request, receive, and display information pages, such as Web pages, from the server computer 104. In particular, the browser 118 is operative to establish a connection to a collaborative application 124 executing on the server computer 104. Through the connection, the browser 118 may request information pages provided by the collaborative application 124. The collaborative application 124 is a computer software program that enables multiple users to collaborate on documents, projects, tasks, and other matters.
  • The collaborative application 124 also supports workflow processes. In general, a workflow is an abstraction of how work flows through a business process. This abstract notion of workflow has been modeled in computer programs and computer software for supporting workflow through a business process has become known as “workflow.” Hereinafter, the term workflow refers to such a software model (i.e., a software program that supports the modeling of how work flows through a business process). In one implementation, the collaborative application 124 is the MICROSOFT OFFICE SHAREPOINT SERVER 2007 from MICROSOFT CORPORATION of Redmond, Wash. It should be appreciated, however, that the implementations described herein may be utilized with any type of computer system that supports workflow processes.
  • In order to support the provision of workflow, in one implementation the server computer 104 includes the .NET FRAMEWORK 3.0 122 from MICROSOFT CORPORATION. The .NET FRAMEWORK 3.0 122 is a framework for building, deploying, and running Web services and other applications. The .NET FRAMEWORK 3.0 122 includes the WINDOWS WORKFLOW FOUNDATION (“WF”) 120. The WF 120 is a programming model, engine, and tools for building and executing workflow enabled applications. The WF 120 allows a developer to more easily model and support business processes. Details regarding the .NET FRAMEWORK 3.0 122 and the WF 120 are publicly available from the MICROSOFT DEVELOPERS NETWORK (“MSDN”) and from other sources.
  • The WF 120 includes a workflow engine for instantiating and executing instances of workflows created using authoring tools, such as the workflow authoring tool 110. The workflow engine runs a workflow by advancing the workflow through a workflow schedule 112. The workflow schedule 112 is a data structure containing data that identifies the workflow actions 116 that should be executed as a part of the workflow, workflow logic, and various metadata. As will be described in greater detail below, the workflow authoring tool 110 may be utilized to author the workflow schedule 112. The workflow schedule 112 may then be transmitted to the server computer 104 for execution as a part of the collaborative services provided by the collaboration application 124. Additional details regarding this process are provided below.
  • As shown in FIG. 1, the client computer 102 also includes the .NET FRAMEWORK 3.0 122 and WF 120 for use during the workflow authoring process described herein. It should be appreciated that although the implementations presented herein are described in the context of the .NET FRAMEWORK 3.0 122 and the WF 120, other similar programming frameworks and workflow modeling tools available from other manufacturers may be utilized on the client computer 102 and server computer 104 to implement the embodiments presented herein. Additional details regarding the provision of and use of workflow in a collaborative application can be found in U.S. patent application Ser. No. 11/117,808, filed on Apr. 29, 2005 and entitled “Workflow Hosting Computing System Using a Collaborative Application,” U.S. patent application Ser. No. 11/212,207, filed on Aug. 25, 2005 and entitled “Workflow Tasks in a Collaboration Application,” and U.S. patent application Ser. No. 11/087,123, filed on Mar. 22, 2005 and entitled “Workflow Association in a Collaborative Application,” each of which is assigned to the assignee of the instant application and expressly incorporated herein by reference in its entirety.
  • As discussed briefly above, the client computer 102 is operative to execute a workflow authoring tool 110. The authoring tool 110 is an application program that provides facilities for visually creating workflows that can be executed by the collaborative application 124. In particular, through the facilities provided by the authoring tool 110, a user can graphically create a workflow schedule 112. Additional details regarding the operation of the workflow authoring tool 110 can be found in U.S. patent application Ser. No. 10/955,659, filed on Sep. 30, 2004 and entitled “Workflow Schedule Authoring Tool,” which is assigned to the assignee of the instant application and expressly incorporated herein by reference in its entirety.
  • The workflow schedule 112 references various workflow actions 116 that are the building blocks that perform the actual processing for the various steps of the workflow. The workflow actions 116 are executable components that may correspond to events, conditions, or actions within a workflow process. As shown in FIG. 1, the workflow actions 116 are stored on the server computer 104 for use when the workflow schedule 112 is executed. Some of the workflow actions 116 may also be stored on the client computer 102 for use during the authoring of a workflow schedule 112.
  • In certain scenarios, it is impracticable or undesirable for all of the workflow actions 116 available at the server computer 104 to be stored on the client computer 102. For instance, new workflow actions 116 may be added to the server computer 104 after deployment. In many cases it is impracticable or undesirable to transmit these workflow actions 116 to the client computer 102. In previous workflow authoring systems, this would result in the client computer 102 being unable to use any workflow actions 116 that were not stored directly thereon. In order to address this problem, the authoring tool 110 is operative to determine which workflow actions 116 are not stored thereon and to request data from which workflow action proxies 114 may be constructed for the missing workflow actions 116.
  • The workflow action proxies 114 are software objects that include the properties of the associated workflow action 116 but that do not include an implementation for its methods. The workflow action proxies 114 are utilized at the client computer 102 during authoring to simulate the interfaces and properties of the corresponding workflow action 116. At execution time, however, the server computer 104 utilizes the actual workflow actions 116 to perform the associated workflow processing. In this manner, workflow schedules 112 can be remotely authored without transferring all of the required executable workflow actions 116 from the server computer 104 to the client computer 102. Only the metadata needed by the client computer 102 to construct the workflow action proxies 114 is transferred.
  • Using the metadata received from the server computer 104, the authoring tool 110 constructs the workflow action proxies 114. The proxies 114 may then be utilized during the workflow schedule authoring process in place of the actual workflow actions 116. Any workflow actions 116 that are stored at the client computer 102 may also be utilized during creation of the workflow schedule 112. Once the workflow schedule 112 has been completed, the client computer 102 transmits the workflow schedule 112 to the server computer 104 for storage.
  • In one implementation, the server computer 104 stores workflow schedules 112 in a versioned document library 128 provided by the collaborative application 124. Through the use of versioning facilities provided by the document library 128, each version of a workflow schedule 112 is assigned a version number. Newly created instances of workflow schedules 112 utilize the most recent version of the workflow schedule 112. Previously instantiated instances, however, continue to utilize the version of the workflow schedule 112 that was utilized when the workflow schedule 112 was first instantiated. In this manner, each instance of a workflow schedule 112 utilizes the same version of the workflow schedule 112 during its entire lifespan. Additional details regarding this process will be provided below with reference to FIG. 3.
  • Once the workflow schedule 112 has been stored in the document library 128, the workflow schedule 112 may be instantiated and executed. This may occur, for instance, in response to the occurrence of an event or in response to a manual request to execute the workflow schedule 112. When the workflow schedule 112 is instantiated, the workflow actions 116 are utilized to perform the actual processing for the workflow. If a workflow action proxy 114 was utilized during authoring, the corresponding workflow action 116 is utilized at run time to perform the workflow processing.
  • As will be described in greater detail below, according to implementations, the server computer 104 is operative to verify that each of the workflow actions 116 referenced by a workflow schedule 112 have been authorized for execution. This may occur, for instance, at the time the authoring client 110 requests data for creating the workflow action proxies 114, at the time a workflow schedule 112 is verified by the server computer 104, and at run time. Additional details regarding these security mechanisms will be provided below with reference to FIGS. 2A-2C.
  • Referring now to FIGS. 2A-2C, additional details will be provided regarding the embodiments presented herein for remotely authoring a workflow schedule 112. In particular, FIGS. 2A-2C are flow diagrams illustrating the operation of the client computer 102 and the server computer 104 according to one implementation. The routine 200 illustrates processing operations performed by the client computer 102 while the routine 250 illustrates processing operations performed by the server computer 104. The routines 200 and 250 will be described in conjunction with one another.
  • It should be appreciated that the logical operations described herein are 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. Accordingly, the logical operations described herein are referred to variously as operations, structural devices, acts, or modules. These operations, structural devices, acts and modules may be implemented in software, in firmware, in special purpose digital logic, and any combination.
  • The routine 200 begins at operation 202, where the workflow authoring tool 110 is launched on the client computer 102. Once the workflow authoring tool 110 has been launched, the routine 200 continues to operation 204, where the workflow designer portion of the workflow authoring tool 110 is launched. The workflow designer is a portion of the workflow authoring tool 202 that provides functionality for visually defining a business workflow without programming. Several aspects of a user interface provided by the workflow designer are described below with reference to FIGS. 4A-4B and 5.
  • From operation 204, the routine 200 continues to operation 206, where the workflow authoring tool 110 retrieves a list of available workflow actions 116 from the server computer 104. The server computer 104 transmits the list of available workflow actions 116 to the client computer at operation 252 of the routine 250. In response to receiving the list of available workflow actions 116, the authoring tool 110 compares the actions identified in the received list to the workflow actions 116 already stored at the client computer 102. In this manner, the authoring tool 110 can determine the assemblies already present and loaded on the client computer 102 and the workflow actions 116 that are available from the server computer 104 that are not present on the client computer 102.
  • At operation 208, the workflow authoring tool 110 determines whether any workflow actions 116 are needed from the server computer 104. If no workflow actions 116 are needed, the routine 200 branches from operation 208 to operation 216, described below. If workflow actions 116 are needed, the routine 200 continues from operation 208 to operation to 210. At operation to 210, the workflow authoring tool 110 transmits a request for the data necessary to build the workflow action proxies 114 to the server computer 104. As discussed briefly above, rather than downloading all of the needed workflow actions 116, the workflow authoring tool 110 builds proxies 114 for each of the needed workflow actions 116.
  • The workflow action proxies 114 are objects that model a corresponding workflow action 116. The proxies 114 include the properties of the corresponding workflow action 116 and the appropriate interfaces. However, the workflow action proxies 114 do not provide any implementation for the methods contained in the corresponding workflow action 116. In this manner, the workflow action proxies 114 appear to the authoring tool 110 to be valid workflow actions 116 that can be utilized in a workflow schedule 112. The workflow action proxies 114 can therefore be utilized when creating a workflow schedule 112. As will be described in greater detail below, the actual workflow actions 116 are utilized by the server computer 104 when the workflow schedule 112 is instantiated.
  • The server computer 104 receives the request for the workflow action proxy data at the operation 254 of the routine 250. In response thereto, the routine 250 continues to operation 256 where the server computer 104 identifies the actions that are authorized for use in a workflow schedule 112. This may be accomplished, for instance, by examining the contents of the safe workflow actions list 126. The safe workflow actions list 126 comprises a list of all of the workflow actions 116 that are authorized for use in a workflow schedule 112. A workflow action 116 that is identified in the safe workflow actions list 126 as being authorized for use in a workflow schedule 112 is referred to herein as being “safe” for use. Once the server computer 104 has identified the safe workflow actions 116, the server computer 104 then determines whether each of the workflow actions 116 for which proxy data has been requested are safe. The server computer 104 will not return proxy data for any workflow action 116 that is not safe.
  • From operation 256, the routine 250 continues to operation 258 where the server computer 104 serializes the properties, methods, and other information necessary to generate the workflow action proxies 114 for each of the safe workflow actions 116 into an extensible markup language (“XML”) document. The routine 250 then continues to operation 260 where the XML document is transmitted to the workflow authoring tool 110.
  • At operation 212 of the routine 200, the authoring tool 110 receives the XML document containing the metadata necessary to build the workflow action proxies 114 for each of the needed workflow actions 116. Once the XML document has been received, the routine 200 continues to operation 214, where the authoring tool 110 builds the workflow action proxies 114 for each of the needed workflow actions 116. Once the proxies 114 have been created, the authoring tool 110 loads the proxies 114 into memory for use.
  • From operation 216, the routine 200 continues to operation to 218, where the workflow designer may be utilized by a user to create the workflow schedule 112. As described above, the workflow designer provides a user interface through which workflow actions 116 can be visually arranged to create the workflow schedule 112. During this process, the workflow action proxies 114 are used in place of the workflow actions 116 to which they correspond.
  • When the user has finished building the workflow schedule 112 using the workflow designer, the routine 200 continues from operation 220 to operation 222. At operation 222, the authoring tool 110 validates the workflow schedule 112. The routine 200 then continues to operation 224 where the authoring tool 110 transmits the workflow schedule 112 to the server computer 104. The server computer 104 receives the workflow schedule 112 at operation 262 of the routine 250 and saves the workflow schedule 112 to the document library 128. As will be discussed in greater detail below, in one implementation, the document library 128 comprises a versioned document storage library provided by the collaborative application 124. When a workflow schedule 112 is stored in the document library 128, it is assigned a version number. The version number of each workflow schedule 112 is utilized to ensure that an instance of a particular version of a workflow schedule 112 is executed until it completes. This ensures that newer versions of a workflow schedule 112 will not conflict with the execution of a previous version of the same workflow schedule 112. Additional details regarding this process will be described below with reference to FIG. 3.
  • From operation 224, the routine 200 continues to operation 226 where the authoring tool 110 transmits a request to the server computer 104 to validate the workflow schedule 112. The server computer 104 may expose a remote application programming interface (“API”) for this purpose. In response to receiving the validation request, the server computer 104 validates the workflow schedule 112 and verifies that all of the workflow actions 116 identified in the workflow schedule 112 are safe. The routine 250 then continues to operation 266 where the server computer returns a success message to the authoring tool 110 if the workflow schedule 112 is valid. If the workflow schedule 112 is not valid, the server computer 104 returns a failure response to the authoring tool 110.
  • At operation 228 of the routine 200, the authoring tool 110 receives the response to the validation request from the server computer 104. At operation 230, the authoring tool 110 determines if the response indicated that the workflow schedule 112 included errors. If the workflow schedule 112 has errors, the routine 200 branches from operation 230 to operation 232, where the errors are displayed. The routine 200 then continues from operation 232 to operation 218. At operation 218, described above, the workflow designer may be utilized to correct any errors in the workflow schedule 112.
  • If the response from the server computer 104 indicates that the workflow schedule 112 is valid, the routine 200 continues from operation 230 to operation 232. At operation 232, the authoring tool 110 calls a remote API on the server computer 104 for associating the workflow schedule 112 with a list on the server computer 104. In the context of the collaborative application 124, workflow schedules 112 are executed against items and documents identified within various lists. Multiple workflow schedules 112 may be executed against a given document or item in a list. By associating the workflow schedule 112 with a list, an indication is being provided regarding the types of documents or items with which the workflow schedule 112 should be utilized. The server computer 104 performs the association request at operation 270. Once the association request has been completed, the routines 200 and 250 continue to operations 234 and 272, respectively, where they end.
  • Referring now to FIG. 3, an illustrative routine 300 will be described illustrating aspects provided herein for executing workflow schedules 112 with reference to the version numbers assigned to the schedules when they are stored in the document library 128. In particular, the routine 300 begins at operation 302, where a decision is made as to whether a workflow schedule 112 should be executed. As described above, a workflow may be executed in response to an item in a list changing, an item being added to a list, or in response to a manual request. Additionally, instantiated workflows may be paused during execution. The occurrence of events or other conditions identified in the workflow may cause the previously instantiated workflow to continue execution. Accordingly, the determination made at operation 302 is whether to execute a new instance of a workflow schedule 112 or to continue the execution of a previously instantiated version of a workflow schedule 112. If a workflow schedule 112 is to be executed, the routine 300 continues from operation 302 to operation 304.
  • At operation 304, a determination is made as to whether the workflow schedule 112 to be executed is a new instance of the workflow or a previously instantiated instance of the workflow. If the workflow schedule 112 to be executed is a new instance of the workflow, the routine 300 branches from operation 304 to operation 308. At operation 308, the latest version of the workflow schedule 112 to be executed is retrieved from the document library 128. The routine 300 then continues to operation 310 where the workflow actions 116 in the workflow schedule 112 to be executed are again validated against the safe workflow actions list 126. If the workflow schedule 112 contains any workflow actions 116 not identified in the safe workflow actions list 126, the unsafe actions 116 will not be executed.
  • Once the workflow schedule 112 has been validated, the routine 300 continues from operation 310 to operation 312. At operation 312, the workflow schedule 112 is compiled into an executable assembly. The routine 300 then continues to operation 314, where the compiled workflow assembly is passed to the workflow execution engine in the WF 120 for execution. At operation 316, the instance of the workflow schedule 112 is executed. From operation 316, the routine 300 continues to operation 318, where it ends.
  • If, at operation 304, the server computer 104 determines that the workflow to be executed is a previously instantiated workflow, the routine 300 branches from operation 304 to operation 306. At operation 306, the previously instantiated version of the workflow is executed using the version of the workflow schedule 112 stored in the document library 128. By executing previously instantiated workflows using their originally assigned version number, each instance of a workflow continues executing using the appropriate version of the workflow schedule 112 until the instance has completed its execution. In this manner, the workflow schedule 112 can be edited and modified while instances of the workflow schedule 112 are executing without causing a conflict. From operation 306, the routine 300 continues to operation 318, where it ends.
  • Referring now to FIGS. 4A and 4B, an illustrative user interface provided by the workflow authoring tool 110 for declaratively binding data sources to parameters in workflow actions 116 will be described. In particular, FIGS. 4A-4B show several illustrative user interfaces 400 and 450 that can be utilized by a workflow designer to graphically bind data sources to the various parameters utilized by a workflow action 116.
  • As discussed above, workflow schedules 112 can include decision logic that allows actions to be performed when certain conditions are met. For instance, a rule may be created within a workflow schedule 112 that assigns an expense report to a manager for approval when the total amount of the expense report is less than a certain amount. The user interfaces 400 and 450 shown in FIGS. 4A-4B allow the workflow designer to specify the properties of such a rule in a graphical manner. Through these user interfaces, the user has the option of specifying a static value for each property or choosing to make the parameter data-driven so that at runtime the value loaded into the parameter is looked up dynamically. Parameters may be assigned to data fields within any list maintained by the collaborative application 124.
  • The user interface 400 shown in FIG. 4A is displayed when a user is graphically creating the conditions and actions for two rules 404A and 404B that define one step of a workflow. In the example shown in FIG. 4A, the user is defining a process for the approval of a business expense. When a parameter of the condition or action may be specified by a user, an icon is displayed adjacent to the parameter thereby indicating that the parameter can be specified or bound to a data value. In response to the selection of the icon, the user interface 450, described below with respect to FIG. 4B is presented.
  • Once the user has bound a parameter to a data value in the manner described below with reference to FIG. 4B, the parameters are illustrated in the user interface 400 with underlining to indicate that they are a hyperlink that can be selected and modified. For instance, in the example shown in FIG. 4A, the parameters 402A-402E have been underlined, thereby indicating that they are selectable parameters that have been bound to a data source or manually specified. The parameters 402A-402E can be selected to modify the specified value or source of the data bound value.
  • FIG. 4B shows an illustrative user interface 450 for binding the parameters to a list, the value from a previous action, or to an input parameter. In one implementation, the user interface 450 includes drop-down menus 452A and 452B through which a user may choose the data source and field of the data source to perform the lookup on for the associated data parameter. In particular, the drop-down menu 452A is utilized to specify the data source and the drop-down menu 452B is utilized to specify the field of the selected data source. When selected, the drop-down menu 452A provides a list of available data sources and the drop-down menu 452B provides a list of fields within the data source selected in the drop-down menu 452A. It should be appreciated that the data source may comprise an item in the current list or come from an external source, such as another list maintained by the collaborative application 124.
  • If a user has requests that a parameter be bound to an external list, the query must be narrowed down so that a single item may be returned. In order to accomplish this, the user interface 450 includes two additional drop-down menus 452C and 452D. When selected, the drop-down menu 452C lists the set of fields in the external list chosen in the manner described above. The drop down menu 452D identifies the set of workflow parameters and the set of fields in the associated list when selected. The drop-down menu 452D is also editable so that the user can type in a value.
  • According to one implementation, the user interface 450 also includes a button 453 that allows a user to databind multiple levels of the user interface 450. In particular, selection of the button 453 allows a user to input an expression that defines the item in the lookup list that should be bound to. The user interface 450 may also include a button for clearing the contents of the fields of the user interface 450. It should be appreciated that although drop-down menus and buttons have been utilized in the illustrative user interface 450 shown in FIG. 4B, other types of suitable user interface controls may be utilized that allow a user to select from a list of data sources and fields.
  • Turning now to FIG. 5, an illustrative routine 500 will be described for declaratively binding a workflow action parameter to a data source and for propagating the data type for data returned from a data source to the data type of the parameter. In particular, the routine 500 begins at operation 502, where the authoring tool 110 displays the user interface 400 shown in FIG. 4A for specifying the actions and conditions of the workflow. The routine 500 then continues to operation 504, where a determination is made as to whether a user has requested that a parameter be bound to a data source. This may occur, for instance, in response to a user selecting one of the parameters 402A-402E displayed in the user interface 400. If a user does request that a workflow action parameter be bound to a data source, the routine 500 continues from operation 504 to operation 506.
  • At operation 506, the workflow authoring tool 110 displays the user interface 450 for declaratively binding a data source to a workflow parameter shown in FIG. 4B. The user is then permitted to select the drop-down menus 452A and 452B to select the data source to which the selected workflow parameter will be bound. According to one implementation, the drop-down menus 452A and 452B will only include sources and fields having data types that are compatible with the data type of the selected workflow parameter. This occurs at operation 508 of the routine 500.
  • At decision operation 510, a determination is made as to whether the data type for the selected workflow parameter (the “target”) is the same as the same as the data type for the selected data source (the “source). If the data types are the same, then an internal lookup of the data may be performed to provide the highest fidelity data lookup. This occurs at operation 512. If, however, the data types are not the same, the data contained in the source must be converted to the data type of the target. In order to perform this procedure, the routine 500 branches from operation 510 to operation 514, where a “friendly” data lookup is utilized.
  • A “friendly” data lookup allows data of one data type to be converted to data of another data type. For instance, if the source is a number type while the target is a string type, the number type may be converted to a string upon lookup. Other data transformations may also be provided by the friendly lookup procedure. In this manner, the data type of the target is propagated to data retrieved from the source.
  • Once the user has selected the desired data source using the user interface 450, the routine 500 continues from operations 512 and 514 to operation 516 where the workflow property is bound to the selected data source. Using either the direct lookup or the friendly lookup described above, data from the data source is retrieved and utilized in the workflow parameter at runtime. From operation 516, the routine 500 continues to operation 518, where it ends.
  • Referring now to FIG. 6, an illustrative computer architecture for a computer 600 utilized in the various embodiments presented herein will be discussed. The computer architecture shown in FIG. 6 illustrates a conventional desktop, laptop computer, or server computer. The computer architecture shown in FIG. 6 includes a central processing unit 602 (“CPU”), a system memory 608, including a random access memory 614 (“RAM”) and a read-only memory (“ROM”) 616, and a system bus 604 that couples the memory to the CPU 602. A basic input/output system containing the basic routines that help to transfer information between elements within the computer 600, such as during startup, is stored in the ROM 616. The computer 600 further includes a mass storage device 610 for storing an operating system 108, application programs, and other program modules, which are described in detail above with reference to FIG. 1.
  • The mass storage device 610 is connected to the CPU 602 through a mass storage controller (not shown) connected to the bus 604. The mass storage device 610 and its associated computer-readable media provide non-volatile storage for the computer 600. 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 by the computer 600.
  • By way of example, and not limitation, computer-readable media may include 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. For example, computer-readable 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”), HD-DVD, BLU-RAY, 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 600.
  • According to various embodiments, the computer 600 may operate in a networked environment using logical connections to remote computers through a network 106, such as the Internet. The computer 600 may connect to the network 106 through a network interface unit 606 connected to the bus 604. It should be appreciated that the network interface unit 606 may also be utilized to connect to other types of networks and remote computer systems. The computer 600 may also include an input/output controller 612 for receiving and processing input from a number of other devices, including a keyboard, mouse, or electronic stylus (not shown in FIG. 6). Similarly, an input/output controller may provide output to a display screen, a printer, or other type of output device (also not shown in FIG. 6).
  • As mentioned briefly above, a number of program modules and data files may be stored in the mass storage device 610 and RAM 614 of the computer 600, including an operating system 108 suitable for controlling the operation of a networked desktop or server computer, such as the WINDOWS XP operating system from MICROSOFT CORPORATION of Redmond, Wash., or the WINDOWS VISTA operating system, also from MICROSOFT CORPORATION. The mass storage device 610 and RAM 614 may also store one or more program modules. In particular, the mass storage device 610 and the RAM 614 may store a Web browser program 110, a collaborative application 124, and the other program modules described above with respect to FIG. 1. Other program modules may also be stored in the mass storage device 610 and utilized by the computer 600.
  • Based on the foregoing, it should be appreciated that systems, methods, and computer-readable media for remotely authoring a workflow schedule are provided herein. Although the subject matter presented herein has been described in language specific to computer structural features, methodological acts, and computer readable media, it is to be understood that the invention defined in the appended claims is not necessarily limited to the specific features, acts, or media described herein. Rather, the specific features, acts and mediums are disclosed as example forms of implementing the claims.
  • The subject matter described above is provided by way of illustration only and should not be construed as limiting. Various modifications and changes may be made to the subject matter described herein without following the example embodiments and applications illustrated and described, and without departing from the true spirit and scope of the present invention, which is set forth in the following claims.

Claims (20)

1. A method for remote workflow schedule authoring, the method comprising:
receiving a request for data from which a workflow action proxy may be created for one or more workflow actions;
in response to the request, determining whether the workflow actions are authorized for use in a workflow schedule; and
in response to determining that the workflow actions are authorized for use in a workflow schedule, transmitting the data for creating the workflow action proxies in response to the request.
2. The method of claim 1, further comprising not transmitting the data for creating the workflow action proxies in response to determining that the workflow actions are not authorized for use in a workflow schedule.
3. The method of claim 2, further comprising:
receiving a workflow schedule comprising one or more workflow actions;
receiving a request to validate the workflow schedule;
determining in response to the validation request whether each of the workflow actions of the workflow schedule are authorized for use; and
in response to determining that each of the workflow actions of the workflow schedule are authorized for use, providing an indication in response to the validation request that the workflow schedule is authorized for use.
4. The method of claim 3, further comprising in response to determining that each of the workflow actions of the workflow schedule are not authorized for use, providing an indication in response to the validation request that workflow actions in the workflow schedule are not authorized for use.
5. The method of claim 4, further comprising:
receiving a request to instantiate the workflow schedule;
in response to the instantiation request, determining whether each of the workflow actions of the workflow schedule are authorized for use; and
instantiating the workflow schedule in response to determining that all of the workflow actions of the workflow schedule are authorized for use.
6. The method of claim 5, further comprising not instantiating the workflow schedule in response to determining that all of the workflow actions of the workflow schedule are not authorized for use.
7. The method of claim 6, wherein the workflow schedule is stored in a versioned document library, and wherein instantiating the workflow schedule comprises instantiating a most recent version of the workflow schedule.
8. The method of claim 7, further comprising executing an instance of a previous version of the workflow schedule using a corresponding previous version of the workflow schedule until the instance of the previous version of the workflow schedule has completed execution.
9. A computer-readable medium having computer-executable instructions stored thereon which, when executed by a computer, are operative to cause the computer to perform the method of claim 1.
10. A method for remote workflow schedule authoring, the method comprising:
determining at a client computer whether one or more workflow actions are needed for authoring a workflow schedule; and
in response to determining that one or more workflow actions are needed for authoring a workflow schedule at the client computer, transmitting a request to a server computer for data from which workflow action proxies may be created for the needed workflow actions.
11. The method of claim 10, further comprising:
receiving the data from the server computer in response to transmitting the request; and
constructing the workflow action proxies using the received data.
12. The method of claim 11, further comprising authoring the workflow schedule using the workflow action proxies.
13. The method of claim 12, wherein each workflow action proxy comprises a proxy assembly corresponding to a workflow action that resides on the server computer.
14. The method of claim 13, wherein each proxy assembly comprises an assembly including the properties of an assembly for the corresponding workflow action without any implementation for functions performed by the assembly for the corresponding workflow action.
15. A computer-readable medium having computer-executable instructions stored thereon which, when executed by a computer, are operative to cause the computer to perform the method of claim 10.
16. A computer-readable medium having computer-executable instructions stored thereon which, when executed by a computer, are operative to cause the computer to:
perform an authorization check for one or more workflow actions in a workflow schedule in response to receiving a request for the workflow actions from a client computer;
perform an authorization check for the workflow actions in the workflow schedule in response to receiving a request to validate the workflow schedule; and to
perform an authorization check for the workflow actions in the workflow schedule when workflow schedule is instantiated.
17. The computer-readable medium of claim 16, wherein performing an authorization check comprises determining whether the workflow actions in the workflow schedule have been designated as authorized for use in a workflow schedule.
18. The computer-readable medium of claim 17, comprising further computer-executable instructions which, when executed by the computer, are operative to cause the computer to:
receive a request for data from which workflow action proxies may be created for one or more workflow actions; and
in response to the request, to transmit the data for creating the workflow action proxies.
19. The computer-readable medium of claim 18, comprising further computer-executable instructions which, when executed by the computer, are operative to cause the computer to:
store the workflow schedule in a versioned document library;
receive a request to execute the workflow schedule; and
in response to the execution request, to instantiate a most recent version of the workflow schedule from the versioned document library.
20. The computer-readable medium of claim 19, comprising further computer-executable instructions which, when executed by the computer, are operative to cause the computer to execute an instance of a previous version of the workflow schedule using a corresponding previous version of the workflow schedule until the instance of the previous version of the workflow schedule has completed execution.
US11/598,573 2006-11-13 2006-11-13 Remote workflow schedule authoring Abandoned US20080115195A1 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US11/598,573 US20080115195A1 (en) 2006-11-13 2006-11-13 Remote workflow schedule authoring
US11/606,431 US8146017B2 (en) 2006-11-13 2006-11-30 Declarative data binding and data type propagation in a remote workflow schedule authoring system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US11/598,573 US20080115195A1 (en) 2006-11-13 2006-11-13 Remote workflow schedule authoring

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US11/606,431 Continuation US8146017B2 (en) 2006-11-13 2006-11-30 Declarative data binding and data type propagation in a remote workflow schedule authoring system

Publications (1)

Publication Number Publication Date
US20080115195A1 true US20080115195A1 (en) 2008-05-15

Family

ID=39370722

Family Applications (2)

Application Number Title Priority Date Filing Date
US11/598,573 Abandoned US20080115195A1 (en) 2006-11-13 2006-11-13 Remote workflow schedule authoring
US11/606,431 Active 2028-08-07 US8146017B2 (en) 2006-11-13 2006-11-30 Declarative data binding and data type propagation in a remote workflow schedule authoring system

Family Applications After (1)

Application Number Title Priority Date Filing Date
US11/606,431 Active 2028-08-07 US8146017B2 (en) 2006-11-13 2006-11-30 Declarative data binding and data type propagation in a remote workflow schedule authoring system

Country Status (1)

Country Link
US (2) US20080115195A1 (en)

Cited By (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100144430A1 (en) * 2008-12-04 2010-06-10 Disney Enterprises, Inc. Live authoring method for real time development of video games
US20100169859A1 (en) * 2008-12-30 2010-07-01 Daptiv Dynamic data processing applications with data phasing and work management
US20120198036A1 (en) * 2011-01-27 2012-08-02 Microsoft Corporation Cloud based master data management architecture
US20130104102A1 (en) * 2010-06-30 2013-04-25 Zte Corporation User Customization Method and System
US20130152021A1 (en) * 2011-12-09 2013-06-13 Microsoft Corporation Stage and stage view within a workflow
US9395959B2 (en) 2011-12-09 2016-07-19 Microsoft Technology Licensing, Llc Integrated workflow visualization and editing
US20160259534A1 (en) * 2015-03-05 2016-09-08 Microsoft Technology Licensing, Llc Visual process configuration interface for integrated programming interface actions
US9524323B2 (en) 2012-09-05 2016-12-20 Microsoft Technology Licensing, Llc Delegation of expression tree evaluation
US20170024436A1 (en) * 2015-07-21 2017-01-26 Autodesk, Inc. Platform for authoring, storing, and searching workflows
US9721230B2 (en) * 2015-08-04 2017-08-01 Sap Se Developer mode for workflow systems steering patch deployment
US20180164965A1 (en) * 2016-12-12 2018-06-14 Vmware, Inc. Custom property cluster definition for a graphic user interface
US10437588B1 (en) 2018-05-11 2019-10-08 Sap Se Smart system for auto-signing, managing and, making recommendations for source code comments
US10810041B1 (en) * 2019-08-28 2020-10-20 Microstrategy Incorporated Providing computing workflows to remote environments
US10904238B2 (en) 2018-07-13 2021-01-26 Sap Se Access token management for state preservation and reuse
US20210073026A1 (en) * 2019-09-05 2021-03-11 Microstrategy Incorporated Validating and publishing computing workflows from remote environments
US11102330B2 (en) 2019-08-30 2021-08-24 Microstrategy Incorporated Providing updates for server environments
US11238386B2 (en) 2018-12-20 2022-02-01 Sap Se Task derivation for workflows
US11263111B2 (en) 2019-02-11 2022-03-01 Microstrategy Incorporated Validating software functionality
US11283900B2 (en) 2016-02-08 2022-03-22 Microstrategy Incorporated Enterprise performance and capacity testing
US11354216B2 (en) 2019-09-18 2022-06-07 Microstrategy Incorporated Monitoring performance deviations
US11360881B2 (en) 2019-09-23 2022-06-14 Microstrategy Incorporated Customizing computer performance tests
US11409644B2 (en) 2019-03-11 2022-08-09 Microstrategy Incorporated Validation of mobile device workflows
US11438231B2 (en) 2019-09-25 2022-09-06 Microstrategy Incorporated Centralized platform management for computing environments
US11637748B2 (en) 2019-08-28 2023-04-25 Microstrategy Incorporated Self-optimization of computing environments
US11669420B2 (en) 2019-08-30 2023-06-06 Microstrategy Incorporated Monitoring performance of computing systems
US11671505B2 (en) 2016-02-08 2023-06-06 Microstrategy Incorporated Enterprise health score and data migration

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8132259B2 (en) * 2007-01-04 2012-03-06 International Business Machines Corporation System and method for security planning with soft security constraints
US9253536B2 (en) * 2009-03-18 2016-02-02 Microsoft Technology Licensing, Llc Updating data-consuming entities
US8131676B2 (en) * 2009-04-03 2012-03-06 Microsoft Corporation Updating media-location data for media-playing entities
US9135091B2 (en) * 2009-04-03 2015-09-15 Microsoft Technology Licensing, Llc Communicating events or data between application components
US8392840B2 (en) * 2009-05-22 2013-03-05 Microsoft Corporation Large sets of data
US9535908B2 (en) * 2009-07-02 2017-01-03 Sharp Laboratories Of America, Inc. Auto-retrieving to avoid data binding
US10063428B1 (en) * 2015-06-30 2018-08-28 Apstra, Inc. Selectable declarative requirement levels
US11003466B2 (en) 2016-12-09 2021-05-11 Vmware, Inc. Information-technology workflows using executable tiles with plural user interfaces
US10732934B2 (en) 2016-12-09 2020-08-04 Vmware, Inc. Information-technology workflows using executable tiles
US10733013B2 (en) 2016-12-09 2020-08-04 Vmware, Inc. Information-technology workflows using executable tiles distributed between workflow instances
US10732947B2 (en) 2016-12-09 2020-08-04 Wmware, Inc. Information-technology workflow using tiles that declaratively specify datatypes

Citations (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6073242A (en) * 1998-03-19 2000-06-06 Agorics, Inc. Electronic authority server
US20020091559A1 (en) * 2000-12-20 2002-07-11 Nobuo Beniyama Work flow management method and work flow management system of controlling a work flow
US6424948B1 (en) * 1999-02-19 2002-07-23 Guozhu Dong Declarative workflow system supporting side-effects
US6518989B1 (en) * 1997-01-24 2003-02-11 Sony Corporation Graphic data generating apparatus, graphic data generation method, and medium of the same
US20030043979A1 (en) * 2001-09-04 2003-03-06 Smith Michael D. Method and apparatus for downloading "on-hold" messages for telephone systems
US20040015369A1 (en) * 2001-08-09 2004-01-22 Kim Yeong-Ho Workflow system for managing versions of a document, and method for managing versions of a document using the same
US20040025048A1 (en) * 2002-05-20 2004-02-05 Porcari Damian O. Method and system for role-based access control to a collaborative online legal workflow tool
US6725445B1 (en) * 1999-07-08 2004-04-20 International Business Machines Corporation System for minimizing notifications in workflow management system
US20040098284A1 (en) * 2002-09-18 2004-05-20 Petito Daniel A. Automated work-flow management system with dynamic interface
US20050027544A1 (en) * 2003-07-28 2005-02-03 Paul Newstead Document generation and workflow process and apparatus
US6854016B1 (en) * 2000-06-19 2005-02-08 International Business Machines Corporation System and method for a web based trust model governing delivery of services and programs
US20050043982A1 (en) * 2003-08-22 2005-02-24 Nguyen Vinh Dinh Contextual workflow modeling
US20050120298A1 (en) * 2003-12-02 2005-06-02 Petrujkic Senja J. Content assembly for business process applications
US6968343B2 (en) * 2000-09-01 2005-11-22 Borland Software Corporation Methods and systems for integrating process modeling and project planning
US20060070025A1 (en) * 2004-09-30 2006-03-30 Microsoft Corporation Workflow schedule authoring tool
US7069536B2 (en) * 2001-06-28 2006-06-27 International Business Machines Corporation Method, system, and program for executing a workflow
US7100147B2 (en) * 2001-06-28 2006-08-29 International Business Machines Corporation Method, system, and program for generating a workflow
US7221377B1 (en) * 2000-04-24 2007-05-22 Aspect Communications Apparatus and method for collecting and displaying information in a workflow system
US7242991B2 (en) * 2002-04-15 2007-07-10 Invensys Systems, Inc. Workflow control configurator for use with process, factory-floor, environmental, computer aided manufacturing-based or other control system
US7428535B1 (en) * 2004-06-25 2008-09-23 Apple Inc. Automatic relevance filtering

Patent Citations (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6518989B1 (en) * 1997-01-24 2003-02-11 Sony Corporation Graphic data generating apparatus, graphic data generation method, and medium of the same
US6073242A (en) * 1998-03-19 2000-06-06 Agorics, Inc. Electronic authority server
US6424948B1 (en) * 1999-02-19 2002-07-23 Guozhu Dong Declarative workflow system supporting side-effects
US6725445B1 (en) * 1999-07-08 2004-04-20 International Business Machines Corporation System for minimizing notifications in workflow management system
US7221377B1 (en) * 2000-04-24 2007-05-22 Aspect Communications Apparatus and method for collecting and displaying information in a workflow system
US6854016B1 (en) * 2000-06-19 2005-02-08 International Business Machines Corporation System and method for a web based trust model governing delivery of services and programs
US6968343B2 (en) * 2000-09-01 2005-11-22 Borland Software Corporation Methods and systems for integrating process modeling and project planning
US20020091559A1 (en) * 2000-12-20 2002-07-11 Nobuo Beniyama Work flow management method and work flow management system of controlling a work flow
US7069536B2 (en) * 2001-06-28 2006-06-27 International Business Machines Corporation Method, system, and program for executing a workflow
US7100147B2 (en) * 2001-06-28 2006-08-29 International Business Machines Corporation Method, system, and program for generating a workflow
US20040015369A1 (en) * 2001-08-09 2004-01-22 Kim Yeong-Ho Workflow system for managing versions of a document, and method for managing versions of a document using the same
US20030043979A1 (en) * 2001-09-04 2003-03-06 Smith Michael D. Method and apparatus for downloading "on-hold" messages for telephone systems
US7242991B2 (en) * 2002-04-15 2007-07-10 Invensys Systems, Inc. Workflow control configurator for use with process, factory-floor, environmental, computer aided manufacturing-based or other control system
US20040025048A1 (en) * 2002-05-20 2004-02-05 Porcari Damian O. Method and system for role-based access control to a collaborative online legal workflow tool
US20040098284A1 (en) * 2002-09-18 2004-05-20 Petito Daniel A. Automated work-flow management system with dynamic interface
US20050027544A1 (en) * 2003-07-28 2005-02-03 Paul Newstead Document generation and workflow process and apparatus
US20050043982A1 (en) * 2003-08-22 2005-02-24 Nguyen Vinh Dinh Contextual workflow modeling
US20050120298A1 (en) * 2003-12-02 2005-06-02 Petrujkic Senja J. Content assembly for business process applications
US7428535B1 (en) * 2004-06-25 2008-09-23 Apple Inc. Automatic relevance filtering
US20060070025A1 (en) * 2004-09-30 2006-03-30 Microsoft Corporation Workflow schedule authoring tool

Cited By (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8317606B2 (en) * 2008-12-04 2012-11-27 Disney Enterprises, Inc. Live authoring method for real time development of video games
US20100144430A1 (en) * 2008-12-04 2010-06-10 Disney Enterprises, Inc. Live authoring method for real time development of video games
US20100169859A1 (en) * 2008-12-30 2010-07-01 Daptiv Dynamic data processing applications with data phasing and work management
US20130104102A1 (en) * 2010-06-30 2013-04-25 Zte Corporation User Customization Method and System
US9584949B2 (en) * 2011-01-27 2017-02-28 Microsoft Technology Licensing, Llc Cloud based master data management architecture
US20120198036A1 (en) * 2011-01-27 2012-08-02 Microsoft Corporation Cloud based master data management architecture
US20130152021A1 (en) * 2011-12-09 2013-06-13 Microsoft Corporation Stage and stage view within a workflow
US9395959B2 (en) 2011-12-09 2016-07-19 Microsoft Technology Licensing, Llc Integrated workflow visualization and editing
US9524323B2 (en) 2012-09-05 2016-12-20 Microsoft Technology Licensing, Llc Delegation of expression tree evaluation
US20160259534A1 (en) * 2015-03-05 2016-09-08 Microsoft Technology Licensing, Llc Visual process configuration interface for integrated programming interface actions
US10073881B2 (en) * 2015-07-21 2018-09-11 Autodesk, Inc. Platform for authoring, storing, and searching workflows
US20170024436A1 (en) * 2015-07-21 2017-01-26 Autodesk, Inc. Platform for authoring, storing, and searching workflows
US11537600B2 (en) 2015-07-21 2022-12-27 Autodesk, Inc. Platform for authoring, storing, and searching workflows
US9721230B2 (en) * 2015-08-04 2017-08-01 Sap Se Developer mode for workflow systems steering patch deployment
US11671505B2 (en) 2016-02-08 2023-06-06 Microstrategy Incorporated Enterprise health score and data migration
US11283900B2 (en) 2016-02-08 2022-03-22 Microstrategy Incorporated Enterprise performance and capacity testing
US10482111B2 (en) * 2016-12-12 2019-11-19 Vmware, Inc. Custom property cluster definition for a graphic user interface
US20180164965A1 (en) * 2016-12-12 2018-06-14 Vmware, Inc. Custom property cluster definition for a graphic user interface
US10437588B1 (en) 2018-05-11 2019-10-08 Sap Se Smart system for auto-signing, managing and, making recommendations for source code comments
US10904238B2 (en) 2018-07-13 2021-01-26 Sap Se Access token management for state preservation and reuse
US11238386B2 (en) 2018-12-20 2022-02-01 Sap Se Task derivation for workflows
US11263111B2 (en) 2019-02-11 2022-03-01 Microstrategy Incorporated Validating software functionality
US11409644B2 (en) 2019-03-11 2022-08-09 Microstrategy Incorporated Validation of mobile device workflows
US10810041B1 (en) * 2019-08-28 2020-10-20 Microstrategy Incorporated Providing computing workflows to remote environments
US11637748B2 (en) 2019-08-28 2023-04-25 Microstrategy Incorporated Self-optimization of computing environments
US11102330B2 (en) 2019-08-30 2021-08-24 Microstrategy Incorporated Providing updates for server environments
US11669420B2 (en) 2019-08-30 2023-06-06 Microstrategy Incorporated Monitoring performance of computing systems
US20210073026A1 (en) * 2019-09-05 2021-03-11 Microstrategy Incorporated Validating and publishing computing workflows from remote environments
US11354216B2 (en) 2019-09-18 2022-06-07 Microstrategy Incorporated Monitoring performance deviations
US11360881B2 (en) 2019-09-23 2022-06-14 Microstrategy Incorporated Customizing computer performance tests
US11829287B2 (en) 2019-09-23 2023-11-28 Microstrategy Incorporated Customizing computer performance tests
US11438231B2 (en) 2019-09-25 2022-09-06 Microstrategy Incorporated Centralized platform management for computing environments

Also Published As

Publication number Publication date
US20080114810A1 (en) 2008-05-15
US8146017B2 (en) 2012-03-27

Similar Documents

Publication Publication Date Title
US8146017B2 (en) Declarative data binding and data type propagation in a remote workflow schedule authoring system
US10296305B2 (en) Method and device for the automated production and provision of at least one software application
US7600182B2 (en) Electronic data capture and verification
US8578336B1 (en) Systems and methods for providing a test automation framework having a unified user interface
US9846849B2 (en) System and method for providing an editor for use with a business process design environment
US8683434B2 (en) Generic method and system for lifecycle management
US8255904B2 (en) System and method for generating a distributable software package
KR20060092816A (en) Workflow association in a collaborative application
US20080244562A1 (en) Method of Identifying and Checking Software Installation Requirements
US20130158964A1 (en) Reusable workflows
US8281234B2 (en) Definable application assistant
US20230086854A1 (en) Dynamically controlling case model structure using case fragments
Slaughter et al. Continuous integration, in-code documentation, and automation for nuclear quality assurance conformance
Gómez et al. A framework for variable content document generation with multiple actors
US20090222277A1 (en) Defining and implementing custom task processes
US20180039921A1 (en) Generating domain-specific process studios
US8392442B2 (en) Method and computer program product for creating content management systems
Freitas et al. A Naked Objects based Framework for Developing Android Business Applications.
Thangaswamy VSTO 3.0 for Office 2007 Programming
Hinterreiter et al. Feature-oriented clone and pull operations for distributed development and evolution
Whitener et al. The ERSDT Software Quality Assurance Plan Practices and Development Environment Setup for RASCAL 5
Bulajic et al. The generalized requirement approach for requirement validation with automatically generated program code
Mason Pragmatic Guide to Subversion
CN115222345A (en) Auditing operation method and device
Arora et al. Azure DevOps Server 2019 Cookbook: Proven Recipes to Accelerate Your DevOps Journey with Azure DevOps Server 2019 (formerly TFS)

Legal Events

Date Code Title Description
STCB Information on status: application discontinuation

Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION

AS Assignment

Owner name: MICROSOFT TECHNOLOGY LICENSING, LLC, WASHINGTON

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:MICROSOFT CORPORATION;REEL/FRAME:034766/0509

Effective date: 20141014