A business process is a structured set of tasks performed by an enterprise to accomplish a concrete business objective. In many instances, the performance of business processes constitutes the routine operation of an enterprise. For example, an enterprise may perform a business process in which employees of the enterprise submit reimbursement requests for travel expenses. In this example, a supervisor reviews each reimbursement request. If, in this example, the supervisor approves a reimbursement request, an accounts payable department of the enterprise writes a check to the employee. If, in this example, the supervisor disapproves a reimbursement request, an email message is sent to the employee notifying the employee that the reimbursement request was denied.
Workflows are computerized implementations of business processes. A workflow comprises a set of activities. Each activity in a workflow corresponds to a task in a business process. Each activity in a workflow comprises a modular set of computer-executable code that implements the activity. When a computer executes an instance of a workflow, the computer executes the computer-executable code implementing activities in the workflow.
Individual activities in a workflow are modular in the sense that the activities are not dependent on one another to operate correctly. Such modularity enables the same activity to be reused in different workflows. To receive outside information, individual activities have input properties. When a workflow is designed, the input properties of the activities are bound to specific data or data sources. In this way, when the workflow is designed, each activity is able to receive the outside data the activity needs to execute.
A server computing system stores at least one workflow template and at least one workflow customization table. The workflow template includes activity elements that indicate activities included in the workflow. The activity elements include attributes associated with input properties of the indicated activities. At least one of the activity elements includes an attribute associated with an input property, the attribute specifying a variable name, not particular data. The workflow customization table includes an entry associating the variable name with particular data. When the server computing system initializes a workflow instance based on the workflow template, the server computing system binds the input property to the particular data specified by the workflow customization table. Thus, by storing different workflow customization tables, the same workflow template can be used to initialize workflow instances having different behavior.
This summary is provided to introduce a selection of concepts in a simplified form. These concepts 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 this summary intended as an aid in determining the scope of the claimed subject matter.
As briefly described above, the present disclosure describes re-usable declarative workflows. This disclosure discusses the attached figures. It will be appreciated that the figures are provided for purposes of explanation only and do not represent a sole way of practicing the technologies of this disclosure. Reference numerals in this disclosure refer to equivalent reference numerals in the figures.
As illustrated in the example of
In addition to client computing system 104, system 100 includes a server computing system 106. Server computing system 106 is an electronic computing system. Like client computing system 104, server computing system 106 may include a wide variety of different types of electronic computing devices. For instance, server computing system 106 may include any of the types of electronic computing devices described above.
System 100 also includes a network 110. Network 110 is an electronic communication network. Network 110 facilitates electronic communication between client computing system 104 and server computing system 106. Network 110 may be implemented in a variety of ways. For example, network 110 may be a wide-area network, such as the Internet. In other examples, network 110 may be a local-area network, a metropolitan-area network, or another type of electronic communication networks. Network 110 may include wired and/or wireless data links. A variety of communications protocols may be used in network 110. Such communications protocols include, but are not limited to, Ethernet, Transmission Control Protocol (TCP), Internet Protocol (IP), Hypertext Transfer Protocol (HTTP), SOAP, remote procedure call (RPC) protocols, user datagram protocol (UDP), IPSec, Resource Reservation Protocol (RSVP), Internet Control Message Protocol (ICMP) and/or other types of communications protocols.
Server computing system 106 is configured to execute workflow instances. As used in this disclosure, a workflow instance is an instance of a workflow. A workflow is a computerized implementation of a business process. A business process is a structured set of tasks performed by an enterprise to accomplish a concrete business objective. For example, a workflow may be a computerized implementation of a business process to approve travel expenses. In this example, the concrete business objective is predictable approval or disapproval of travel expenses to manage costs and ensure accountability. Furthermore, in this example, the business process may include tasks such as receiving an expense report, providing the expense report to a reviewer for review, receiving approval of the expense report, cutting a check, and so on. As used in this disclosure, an enterprise is a business organization, a governmental organization, a non-government organization, an individual, a non-profit organization, or another type of natural or legal entity.
A workflow comprises a structured set of activities. Each activity in a workflow comprises a modular set of computer-executable instructions that, when executed by a computing system, cause the computing system to perform a task in a business process. For example, an activity in a workflow may comprise a modular set of computer-executable instructions that, when executed by a computing system, cause the computing system to provide an expense report to a reviewer for review. The sets of computer-executable instructions in activities are modular in the sense that the sets are not dependent on one another to operate correctly. Such modularity enables the same activity to be reused in different workflows.
Each activity in a workflow has one or more input properties. An activity receives external information through its input properties. In a first example implementation, activities are implemented as software objects. In this example, the input properties of activities are parameters of the constructor methods of the activities. In other example implementations where activities are implemented as software objects, input properties may be parameters passed to setter methods of the activities or objects assigned to public properties of the activities.
A wide variety of external information can be passed to an activity via the activity's input properties. For example, an activity may perform a particular operation on data in a list object. As used in this disclosure, a list object is a table of arbitrary data. For instance, a list object may be a table containing birthdates for all employees of an enterprise. In this example, the activity may send a greeting e-mail to persons associated with dates matching the current date. In this example, a reference to this birthday list can be passed to the activity via an input property of the activity. In this way, the activity causes a computing system to send greeting e-mails to employees on their birthdays. In this example, a reference to a list of client's birthdays can be passed to the activity in order to cause the computing system to send greeting e-mails to clients on their birthdays. In a second example, an activity in a travel expense approval workflow may send an e-mail to a reviewer. In this second example, the e-mail address of the reviewer can be passed to the activity via an input property of the activity.
In some instances, it may not be desirable to assign data to input properties of activities when a workflow containing the activities is designed. For example, in the travel expense approval workflow discussed in the previous paragraph, it might not be desirable to assign the e-mail address of the reviewer to the input property of the activity when the travel expense approval workflow is designed. In this example, two different departments of an enterprise may have two different reviewers for travel expenses. Consequently, in this example, if the e-mail address of the reviewer is set when the travel expense workflow is designed, separate travel expense workflows would have to be designed for the two departments.
To avoid such situations, a workflow template can be designed. As used in this disclosure, a workflow template is a workflow in which at least one input property of at least one activity in the workflow is assigned to a variable name. The variable name is simply a placeholder for data that will eventually be bound to the input property. In the travel expense example discussed above, the string “Reviewer_Email” may be a variable name temporarily assigned to the input property of the activity that sends an e-mail to the reviewer.
As described in greater detail below, a user is able to generate one or more workflow customization tables for a single workflow template. A workflow customization table includes entries that associate variable names with particular data. It should be noted that the particular data may be explicit data, a data source, or another type of data. For example, a first workflow customization table associated with the travel expense workflow may include an entry that associates the variable name “Reviewer_Email” with the data “bob@contoso.com.” In this example, a second customization table associated with the travel expense workflow may include an entry that associates the variable name “Reviewer_Email” with the data “anoop@contoso.com.”
When server computing system 106 initializes a workflow for execution, server computing system 106 uses an appropriate workflow customization table to replace the variable names of the input properties with the particular data specified by entries in the appropriate workflow customization table. In the travel expense workflow example discussed above, server computing system 106 may use the first workflow customization table when initializing the travel expense workflow for the first department and may use the second workflow customization table when instantiating the travel expense workflow for the second department. As a result, server computing system 106 sends e-mails for the first department to “bob@contoso.com” and sends e-mails for the second department to “anoop@contoso.com.”
As described below with reference to
When the user of client computing system 104 designs a workflow template or a workflow, client computing system 104 stores the workflow template or workflow at a data storage system 108 at server computing system 106. As used in this disclosure, a data storage system is a collection of one or more computer-readable data storage media. For example, a data storage system may comprise a plurality of hard disk drives. In another example, a data storage system may comprise a CD-ROM disc and a random-access memory unit.
As explained below with reference to
In the example of
It should be appreciated that
In the example of
As illustrated in the example of
In the example of
In one example implementation, workflow template 314 is an extensible markup language (XML) file. Each one of activity elements 318 is an XML element in this XML file. Activity elements 318 are arranged within the XML file a hierarchy. Each of activity elements 318 specifies an activity to include in a workflow. The position of an activity element within the hierarchy indicates the position within the workflow of the activity specified by the activity element. For example, workflow template 314 may appear as follows:
In this example, the <SequentialWorkflowActivity> element is an activity that sequentially invokes activities specified by child activity elements of the <SequentialWorkflowActivity> element. Specifically, in this example, the activity specified by the <SequentialWorkflowActivity> element sequentially invokes an activity specified by the <ReceiveDocumentActivity> element, an activity specified by the <SendEmailActivity> element, and an activity specified by the <ReceiveReviewActivity> element. Furthermore, in this example, the <SendEmailActivity> element has two attributes: “to” and “from.” The variable name “Reviewer_Email” is assigned to the “to” attribute and the e-mail address “admin@contoso.com” is assigned to the “from” attribute. In this disclosure, a customizable activity element is an activity element that includes an attribute assigned to a variable name. Furthermore, a customizable activity is an activity specified by a customizable activity element. In the above example, the <SendEmailActivity> element is a customizable activity element. It should be appreciated that workflow template 314 and activity elements 318 may be represented in ways other than XML. For example, workflow template 314 and activity elements 318 may be represented as a relational database table containing database entries.
Interface module 300 enables server computing system 106 to communicate on network 110 (
Server application module 302 is a network server application. For example, server application module 302 may be an instance of the Internet Information Services (IIS) server created by Microsoft Corporation. When server application module 302 receives a resource request, server application module 302 identifies an application to help process the resource request. Upon identifying the application to help process the resource request, server application module 302 sends a request to the identified application. In the example of
Host application module 304 helps process resource requests received by server application module 302. For example, host application module 304 may be an ASP.NET web application. Host application module 304 may help process resource requests in a variety of ways. In the example of
To use a workflow to help process a resource request, host application module 304 instantiates workflow instance 308 in workflow runtime 306. Workflow runtime 306 is an operating environment that manages workflow instances. When host application module 304 instantiates workflow instance 308, host application module 304 may identify workflow template 314 and workflow customization table 316 to workflow runtime 306. In response, workflow runtime 306 retrieves workflow template 314 and workflow customization table 316 from data storage system 108. After retrieving workflow template 314 and workflow customization table 316, workflow runtime 306 uses activity elements 318 in workflow template 314 to instantiate activities indicated by activity elements 318. In the example of
Once workflow instance 308 is fully instantiated, host application module 304 is able to instruct workflow runtime 306 to initiate execution of workflow instance 308. As described in greater detail with reference to
In this disclosure, interface module 300, server application module 302, host application module 304, workflow runtime 306, workflow instance 308 and activities 310 are referred to as functional modules of server computing system 106. The functional modules of server computing system 106 may be implemented in a wide variety of ways. In a first example, one or more of the functional modules of server computing system 106 may be implemented as sets of instructions stored at a data storage system. In this first example, a processing unit within server computing system 106 may execute the sets of instructions, thereby causing server computing system 106 to perform the behaviors associated with one or more of the functional modules of server computing system 106. As used in this disclosure, a processing unit is a set of one or more physical electronic integrated circuits that are capable of executing instructions. In a second example, one or more of the functional modules of server computing system 106 are implemented as one or more application-specific integrated circuits (ASICs). The ASICs cause server computing system 106 to perform the behaviors associated with one or more of the functional modules of server computing system 106. In this second example, the ASICs may be specifically designed to perform the behaviors associated with one or more of the functional modules of server computing system 106.
As illustrated in the example of
In this disclosure, network interface module 400, web browser application 402 and declarative workflow design application 404 are referred to as functional modules of client computing system 104. The functional modules of client computing system 104 may be implemented in a wide variety of ways. In a first example, one or more of the functional modules of client computing system 104 may be implemented as sets of instructions stored at a data storage system. In this first example, a processing unit within client computing system 104 may execute the sets of instructions, thereby causing client computing system 104 to perform the behaviors associated with one or more of the functional modules of client computing system 104. In a second example, one or more of the functional modules of client computing system 104 are implemented as one or more ASICs. The ASICs cause client computing system 104 to perform the behaviors associated with one or more of the functional modules of client computing system 104. In this second example, the ASICs may be specifically designed to perform the behaviors associated with one or more of the functional modules of client computing system 104.
As illustrated in the example of
After workflow template 314 and workflow customization table 316 are stored in file library 312 of data storage system 108, server application module 302 receives a resource request (506). In one example, server application module 302 may receive the resource request from interface module 300 and interface module 300 may have received the resource request from client computing system 104 via network 110. The resource request may request a wide variety of resources. For example, the resource request may be a request for a web page, a request to synchronize e-mail mail boxes, a RPC request for execution of a specific procedure, a request for a media stream, or a request for another type of resource.
In response to receiving the resource request, server application module 302 identifies an application to help process the resource request (508). For example, a plurality of web applications may operate at server computing system 106, each associated with different domain names. In this example, server application module 302 may use a domain name specified by the resource request to identify one of the web applications. In other examples, server application module 302 may use a variety of other techniques to identify an application to help process the resource request. For instance, server application module 302 may use a lookup table or a configuration file to identify an application to help process the resource request. Applications may help server application module 302 process resource requests in a variety of ways. For example, applications may help server application module 302 process resource requests by generating content, retrieving data, storing data, executing scripts, and/or performing other activities. In the example of
After being identified as an application to help process the resource request, host application module 304 identifies a current version of a workflow template needed to process the resource request (510). Host application module 304 may identify a current version of the workflow template in a variety of ways. For instance, as time passes, users may create new versions of workflow templates. However, when a user creates a new version of a workflow template, instances of the existing version of the workflow template may still be active. Creating the new version of the workflow does not cause the instances of the existing version of the workflow template to terminate. For this reason, host application module 304 may use a version number of workflow templates to identify the current version of the workflow template.
After identifying the current version of the workflow template, host application module 304 identifies an appropriate workflow customization table to use with the workflow template (512). Host application module 304 may identify the appropriate customization table in a variety of ways. For example, data storage system 108 may store data associating individual workflow customization tables with different web sites, site groups, list objects, list content types, or other groups of data. In this example, host application module 304 may use the data to identify the workflow customization table associated with the resource requested by the resource request.
After identifying the appropriate workflow customization table, host application module 304 initializes workflow instance 308 (514). In one example implementation, host application module 304 may initialize workflow instance 308 by invoking a method of workflow runtime 306. In this example implementation, host application module 304 may provide a reference to a workflow template and a reference to a workflow customization table as parameters when host application module 304 invokes the method of workflow runtime 306. In this way, host application module 304 identifies to workflow runtime 306 which workflow template and which workflow customization table to use to generate workflow instance 308. For instance, host application module 304 may provide a reference to workflow template 314 and a reference to workflow customization table 316 as parameters to the method of workflow runtime 306.
During the initialization of workflow instance 308, workflow runtime 306 interprets the specified workflow template and instantiates each activity specified by the activity elements of the specified workflow template. For example, if workflow template 314 is the specified workflow template, workflow runtime 306 instantiates one of activities 310 for each of activity elements 318 in workflow template 314. To instantiate an activity, workflow runtime 306 may invoke a constructor method of the activity. After instantiating activities 310, workflow runtime 306 may use entries 320 to bind particular data to input parameters of activities 310. For example, assume the following represents activity element 318A: “<EmailActivity reviewer=“Reviewer_Email”>”. In this example, “Reviewer_Email” is a variable name. Furthermore, assume that entry 320A specifies “Reviewer_Email” maps to “dnoriega@contoso.com.” In this example, workflow runtime 306 instantiates an EmailActivity activity (e.g., activity 310A) and sets a reviewer input property of the EmailActivity activity to “dnoriega@contoso.com.”
In some example implementations, when workflow runtime 306 initializes workflow instance 308, workflow runtime 306 may bind contextual data to input parameters of activities 310. This contextual data is not defined in workflow template 314. Rather, the contextual data is defined by a context in which host application module 304 initializes workflow instance 308. The contextual data may be defined in or derived from in a variety of other sources. For example, when host application module 304 invokes the method of workflow runtime 306 to initialize workflow instance 308, host application module 304 may pass to workflow runtime 306 contextual data to be bound to one or more input parameters of activities 310. In a second example, workflow runtime 308 may bind contextual data to input parameters of activities 310 based on a scope associated with workflow template 314. In this second example, workflow instance 308 may operate within the context of a web page, a web site, a group of web sites, or a server farm. In this second example, the web page, the web site, the group of web site, and the server farm are examples of scopes that may be associated with workflow instance 308. Each scope, in this second example, may be associated with different data to be bound to input parameters of activities 310. This in third example, the scope associated with workflow instance 308 may be determined based on a variety of factors. For instance, the scope associated with workflow instance 308 may be determines based on a location (e.g., document library) at which workflow template 314 is stored. In a third example, workflow runtime 306 may bind contextual data to input parameters of activities 310 based on an event that caused host application module 304 to initialized workflow instance 308. For instance, in this third example, host application module 304 may initialize workflow instance 308 in response to receiving a request for a first web page or a second web page. In this instance, workflow runtime 306 may bind different contextual data to workflow instance 308 depending on whether the first web page or the second web page was requested.
As mentioned above, users may create new versions of workflow templates. When workflow runtime 306 initializes a workflow instance based on the new version of a workflow template, workflow runtime 306 associates a tombstone with the workflow customization table associated with the previous version of the workflow template. The tombstone indicates that no new instances of workflows are to be generated with the workflow customization table associated with the previous version of the workflow template. Workflow runtime 306 then creates a new version of the workflow customization table and associates the new version of the workflow customization table with the new version of the workflow template. Workflow runtime 306 then initializes the new version of the workflow template using the new version of the workflow customization table. In this way, instances of the previous version of the workflow template can continue to use the workflow customization table associated with the previous version of the workflow template until completion.
After host application module 304 initializes workflow instance 308, host application module 304 initiates execution of workflow instance 308 (516). In one example implementation, host application module 304 may initiate execution of workflow instance 308 by invoking a start method of workflow instance 308. It should be noted that host application module 304 does not necessarily initialize and initiate execution of a new workflow instance in response to all resource requests. In some instances, host application module 304 may provide additional information to existing workflow instances in response to a resource request.
In response to workflow instance 308 initiating execution of workflow instance 308, server computing system 106 executes one or more activities 310 in workflow instance 308 (518). During execution of activities in workflow instance 308, server computing system 106 uses data bound to input properties of the activities to execute the activities. For example, if workflow runtime 306 binds the e-mail address “dnoriega@contoso.com” to the reviewer input property of the EmailActivity activity as described in the above example, server computing system 106 uses the e-mail address “dnoriega@contoso.com” during execution of the EmailActivity activity.
After server computing system 106 executes one or more activities 310 in workflow instance 308, server application module 302 generates a response to the resource request (520). The response may include data generated during execution of the one or more activities of workflow instance 308. For instance, the response may include data retrieved from a database by one of the activities in the workflow instance 308. In other circumstances, the response does not include any data generated during execution of the one or more activities of workflow instance 308. It should be appreciated that workflow instance 308 may not run to completion before server application module 302 generates the response. Rather, workflow instance 308 may continue operating asynchronously from server application module 302. For instance, workflow instance 308 may continue operating when workflow instance 308 is an instance of a long-running workflow whose activities occur over the course of several days.
After server application module 302 generates the response, interface module 300 sends the response to a sender of the resource request (522). For example, if client computing system 104 sent the resource request, interface module 300 sends the response to client computing system 104.
Initially, declarative workflow design application (“DWDA”) 404 (
After displaying workflow template user interface, DWDA 404 receives activity selection input (604). The activity selection input indicates a selected available activity name from among the available activity names contained in the workflow template user interface. The selected available activity name is the name of a selected available activity. For example, the activity selection input may indicate that the user has selected “Send Email” from among the available activity names contained in the workflow template user interface.
In response to receiving the activity selection input, DWDA 404 displays a natural language sentence in the workflow template user interface (606). The natural language sentence expresses a business process task to be performed when the selected activity is executed. For example, DWDA 404 may display the following natural language sentence in response to the user selecting “Send Email” from among the available activity names: “Send an e-mail message from ______ to ______.” In circumstances where the selected activity has an input property to be specified by the user, the natural language sentence includes an input feature enabling the user to select particular data to be bound to the input property or to select a variable name. In the previous example, the selected “Send Email” activity has two input properties to be specified by the user. Consequently, in this example, the natural language sentence includes two input features, indicated by the underscored blanks. In other examples, the input features may be text boxes, drop boxes, radio buttons, check boxes, dials, menus, command icons, or other types of user input controls.
After displaying the natural language sentence in the workflow template user interface, DWDA 404 receives data selection input from the user via an input feature of the natural language sentence (608). The data selection input indicates an input that the user entered into the input feature. In response to receiving the data selection input, DWDA 404 determines whether the data selection input indicates a variable name (610). DWDA 404 may determine whether the data selection input indicates a variable name in a variety of ways. For example, DWDA 404 may determine that the data selection input indicates a variable name when the data selection input is a string that does not conform to an expected data type for the input property. For instance, DWDA 404 may assume that the data selection input indicates a variable name when the data selection input is a string that is not an e-mail address.
In response to determining that the data selection input does not indicate a variable name (“NO” of 610), DWDA 404 updates the workflow template such that the activity elements in the workflow template include a first activity element (612). In other words, in response to determining that the data selection input indicates that the user has selected particular data to be bound to the input property, DWDA 404 updates the workflow template such that the activity elements in the workflow template include a first activity element. The first activity element indicates the selected activity. The first activity element includes an attribute associated with the input feature of the selected activity. The attribute specifies the particular data to be bound to the input property. In the above example, the data selection input from the “to” input feature may indicate the particular data “cook@contoso.com.” In this example, DWDA 404 may update the workflow template to include the following activity element: “<SendEmailActivity to=“cook@contoso.com” from=“kelly@contoso.com”>.” In this example, the data selection input indicates the particular data “cook@contoso.com” is assigned to the attribute associated with the “to” input property.
On the other hand, in response to determining that the data selection input indicates a variable name (“YES” of 610), DWDA 404 updates the workflow template such that the activity elements in the workflow template include a second activity element (614). The second activity element indicates the selected activity. The second activity element includes an attribute associated with the input feature of the selected activity. The attribute specifies the variable name indicated by the data selection input. In the above example, the data selection input from the “to” input feature may indicate the variable name “Email_Variable.” In this example, DWDA 404 may update the workflow template to include the following activity element: “<SendEmailActivity to=“Email_Variable” from=“kelly@contoso.com”>.” In this example, the data selection input indicates the variable name “Email_Variable” will be replaced by particular data when the workflow template is initialized.
After updating the workflow template in steps 612 or 614, DWDA 404 stores the workflow template in a file library at server computing system 106 (616). It should be appreciated that before DWDA 404 stores the workflow template in the file library, the steps of operation 600 may be repeated an indefinite number of times to build a complete workflow template. As mentioned briefly above, data storage system 108 at server computing system 106 may include a plurality of file libraries. Each of the file libraries contains the resources of a website. The file libraries can be nested within one another. For example, a first file library may contain a second file library and a third file library. In this example, the first file library may contain the resources of a website for an entire enterprise, the second file library may contain the resources of a website for a first department of the enterprise, and the third file library may contain the resources of a website for a second department of the enterprise.
The user may cause DWDA 404 to store the workflow template in particular ones of the file libraries in data storage system 108. In the previous example, the user may cause DWDA 404 to store the workflow template in the first file library, the second file library, or the third file library. The file libraries at which the user may store the workflow template may be governed by permission rules. As described below with reference to
In the example of
After displaying the user interface, DWDA 404 receives template selection input from the user via the user interface (704). The template selection input indicates a selected workflow template in the list of available workflow templates.
In response to receiving the template selection input, DWDA 404 displays in the user interface variable names associated with the selected workflow template (706). For example, if the selected workflow template includes activity elements having attributes specifying the variable names “Email_Variable,” “Mailing_List_Variable,” and “Input_List_Variable,” DWDA 404 displays these variable names in the user interface.
After displaying a variable name in the user interface, DWDA 404 receives data selection input from the user via the user interface (708). The data selection input indicates data to be bound to the variable name. In the previous example, the data selection input may indicate that the e-mail address “justin@contoso.com” is to be bound to the variable name “Email_Variable.”
In response to receiving the data selection input, DWDA 404 adds an entry to the workflow customization table (710). The entry specifies the particular data to be bound to input properties of activities specified by activity elements having attributes specifying the variable name. In the previous example, the entry may specify that “justin@contoso.com” is to be bound to input properties of activities specified by activity elements having attributes specifying the variable name “Email_Variable.”
After adding the entry to the workflow customization table, DWDA 404 stores the workflow customization table to data storage system 108 at server computing system 106 (712). As mentioned above, DWDA 404 stores the workflow customization table into a file library at data storage system 108. It should be appreciated that multiple workflow customization tables for the same workflow template may be stored in a single file library. Thus, the same workflow template can be re-used for different purposes in the same website.
In addition, electronic computing device 800 comprises a processing unit 804. As mentioned above, a processing unit is a set of one or more physical electronic integrated circuits that are capable of executing instructions. In a first example, processing unit 804 may execute software instructions that cause electronic computing device 800 to provide specific functionality. In this first example, processing unit 804 may be implemented as one or more processing cores and/or as one or more separate microprocessors. For instance, in this first example, processing unit 804 may be implemented as one or more Intel Core 2 microprocessors. Processing unit 804 may be capable of executing instructions in an instruction set, such as the x86 instruction set, the POWER instruction set, a RISC instruction set, the SPARC instruction set, the IA-64 instruction set, the MIPS instruction set, or another instruction set. In a second example, processing unit 804 may be implemented as an ASIC that provides specific functionality. In a third example, processing unit 804 may provide specific functionality by using an ASIC and by executing software instructions.
Electronic computing device 800 also comprises a video interface 806. Video interface 806 enables electronic computing device 800 to output video information to a display device 808. Display device 808 may be a variety of different types of display devices. For instance, display device 808 may be a cathode-ray tube display, an LCD display panel, a plasma screen display panel, a touch-sensitive display panel, a LED array, or another type of display device.
In addition, electronic computing device 800 includes a non-volatile storage device 810. Non-volatile storage device 810 is a computer-readable data storage medium that is capable of storing data and/or instructions. Non-volatile storage device 810 may be a variety of different types of non-volatile storage devices. For example, non-volatile storage device 810 may be one or more hard disk drives, magnetic tape drives, CD-ROM drives, DVD-ROM drives, Blu-Ray disc drives, or other types of non-volatile storage devices.
Electronic computing device 800 also includes an external component interface 812 that enables electronic computing device 800 to communicate with external components. As illustrated in the example of
In addition, electronic computing device 800 includes a network interface card 818 that enables electronic computing device 800 to send data to and receive data from an electronic communication network. Network interface card 818 may be a variety of different types of network interface. For example, network interface card 818 may be an Ethernet interface, a token-ring network interface, a fiber optic network interface, a wireless network interface (e.g., WiFi, WiMax, etc.), or another type of network interface.
Electronic computing device 800 also includes a communications medium 820. Communications medium 820 facilitates communication among the various components of electronic computing device 800. Communications medium 820 may comprise one or more different types of communications media including, but not limited to, a PCI bus, a PCI Express bus, an accelerated graphics port (AGP) bus, an Infiniband interconnect, a serial Advanced Technology Attachment (ATA) interconnect, a parallel ATA interconnect, a Fiber Channel interconnect, a USB bus, a Small Computer System Interface (SCSI) interface, or another type of communications medium.
Electronic computing device 800 includes several computer-readable data storage media (i.e., memory unit 802, non-volatile storage device 810, and external storage device 816). Together, these computer-readable storage media may constitute a single data storage system. As discussed above, a data storage system is a set of one or more computer-readable data storage mediums. This data storage system may store instructions executable by processing unit 804. Activities described in the above description may result from the execution of the instructions stored on this data storage system. Thus, when this description says that a particular logical module performs a particular activity, such a statement may be interpreted to mean that instructions of the logical module, when executed by processing unit 804, cause electronic computing device 800 to perform the activity. In other words, when this description says that a particular logical module performs a particular activity, a reader may interpret such a statement to mean that the instructions configure electronic computing device 800 such that electronic computing device 800 performs the particular activity.
The techniques of this disclosure may be realized in many ways. For example, the techniques of this disclosure may be realized as a method for deploying workflows. The method comprises storing a workflow template at a data storage system, the workflow template defining a workflow, the workflow implementing a business process of an enterprise, the workflow comprising a structured set of activities, each activity in the structured set of activities being a modular set of computer-executable instructions that when executed perform a task in the business process, the workflow template comprising a plurality of activity elements, each activity element in the plurality of activity elements indicating an activity in the structured set of activities, the structured set of activities including a customizable activity, the customizable activity having an input property, the plurality of activity elements including a customizable activity element indicating the customizable activity, the customizable activity element including an attribute associated with the input property of the customizable activity, the attribute specifying a variable name. The method also comprises after storing the workflow template, storing a workflow customization table at the data storage system, the workflow customization table including an entry indicating data to be bound to the variable name. In addition, the method comprises after storing the workflow customization table, receiving, at a server computing system, a resource request from a client computing system. Furthermore, the method comprises in response to the resource request, automatically initializing, at the server computer system, a workflow instance, the workflow instance comprising the structured set of activities, the input property of the customizable activity bound to the data indicated by the entry in the workflow customization table. The method also comprises after automatically initializing the workflow instance, automatically initiating, at the server computing system, execution of the workflow instance. In addition, the method comprises during execution of the workflow instance, using, at the server computing system, data bound to the input property of the customizable activity to execute the customizable activity.
In another example, the techniques of this disclosure may be realized as an electronic computing system comprising a processing unit and a data storage system. The data storage system stores a workflow template, the workflow template defining a workflow, the workflow implementing a business process of an enterprise, the workflow comprising a structured set of activities, each activity in the structured set of activities being a modular set of computer-executable instructions that when executed perform a task in the business process, the workflow template comprising a plurality of activity elements, each activity element in the plurality of activity elements indicating an activity in the structured set of activities, the structured set of activities including a customizable activity, the customizable activity having an input property, the plurality of activity elements including a customizable activity element indicating the customizable activity, the customizable activity element including an attribute associated with the input property of the customizable activity, the attribute specifying a variable name. The data storage system also stores a workflow customization table, the workflow customization table including an entry indicating data to be bound to the variable name. In addition, the data storage system stores computer-executable instructions that, when executed by the processing unit, cause the electronic computing system to receive a resource request from a client computing system. In response to the resource request, the instructions cause the electronic computing system to automatically initialize a workflow instance, the workflow instance comprising the structured set of activities, the input property of the customizable activity bound to the data indicated by the entry in the workflow customization table. After automatically initializing the workflow instance, the instructions cause the electronic computing system to automatically initiate execution of the workflow instance. During execution of the workflow instance, the instructions cause the electronic computing system to use data bound to the input property of the customizable activity to execute the customizable activity.
In another example, the techniques of this disclosure may be realized as a computer-readable medium comprising computer-executable instructions that, when executed by a processing unit of an electronic computing system, cause the electronic computing system to display a GUI, the GUI containing a plurality of available activity names, each available activity name in the plurality of available activity names being a name of an activity in a plurality of available activities, each activity in the plurality of available activities being available to be included in a workflow, the workflow implementing a business process of an enterprise, the workflow comprising a structured set of activities, each activity in the structured set of activities being a modular set of computer-executable instructions that when executed perform a task in the business process. The instructions also cause the electronic computing system to receive activity selection input from a user via the GUI, the activity selection input indicating a selected available activity name in the plurality of available activity names, the selected activity name being a name of a selected activity in the plurality of available activities. Furthermore, the instructions cause the electronic computing system to in response to the activity selection input, display a natural language sentence in the GUI, the natural language sentence expressing a task performed when the selected activity is executed, the natural language sentence including an input feature, the input feature enabling the user to select particular data to be bound to an input property of the selected activity or to select a variable name. In addition, the instructions cause the electronic computing system to after displaying the natural language sentence, receive data selection input from the user via the input feature. The instructions also cause the electronic computing system to after receiving the data selection input, determine whether the data selection input indicates that the user has selected particular data to be bound to the input property or a variable name. In addition, the instructions cause the electronic computing system to in response determining that the data selection input indicates that the user has selected particular data to be bound to the input property, automatically update a workflow template such that a plurality of activity elements in the workflow template includes a first activity element, each activity element in the plurality of activity elements indicating an activity in the structured set of activities, the first activity element indicating the selected activity, the first activity element including a first attribute, the first attribute associated with the input property of the selected activity, the first attribute specifying the particular data. Furthermore, the instructions cause the electronic computing system to in response to determining that the data selection input indicates that the user has selected the variable name, automatically update the workflow template such that the plurality of activity elements in the workflow template includes a second activity element, the second activity element indicating the selected activity, the second activity element including a second attribute, the second attribute associated with the input property of the selected activity, the second attribute specifying the variable name. Moreover, the instructions cause the electronic computing system to store the workflow template at a data storage system. The instructions also cause the electronic computing system to after storing the workflow template, store a workflow customization table at the data storage system, the workflow customization table including an entry indicating data to be bound to the variable name. In addition, the instructions cause the electronic computing system to, after storing the workflow customization table, receive a resource request from a client computing system. Furthermore, the instructions cause the electronic computing system to, in response to the resource request, automatically initialize a workflow instance, the workflow instance comprising the structured set of activities, the input property of the selected activity bound to the data indicated by the entry in the workflow customization table. In addition, after automatically initializing the workflow instance, the instructions cause the electronic computing system to automatically initiate execution of the workflow instance. During execution of the workflow instance, the instructions cause the electronic computing system to use data bound to the input property of the selected activity to execute the selected activity.
Although the subject matter has been described in language specific to structural features and/or methodological acts, it is to be understood that the subject matter defined in the appended claims is not necessarily limited to the specific features or acts described above. Rather, the specific features and acts described above are disclosed as example forms of implementing the claims.