Interactive composition of workflow activities
Visual composition of an activity for re-use in a composite activity or in a workflow. A user declaratively and/or programmatically generates reusable composite activities from existing activities interactively using a visual designer. The activity has one or more configuration properties associated therewith that define the behavior of an aspect of the activity. Depending on the value of the configuration properties, the activity may be, for example, partially configured, fully configured, or minimally configured. A user or developer completes the configuration of the activity during re-use of the activity in a composite activity or in a workflow.
Latest Microsoft Patents:
This application claims the benefit of U.S. provisional patent application No. 60/615,543 filed Oct. 1, 2004.
BACKGROUNDA workflow models a business process. Typical workflows include execution units referred to as activities. Some current systems lack a mechanism to enable users to visually create activities for use in the workflow. Further, some of the current systems enumerate activities at the workflow level (e.g., during execution of the workflow), but lack a design time mechanism for creating activities based on predefined activities.
SUMMARYEmbodiments of the invention include a user interface for visually creating an activity from predefined activities. In one embodiment, a composite activity is created at the activity level during design time. The user interface enables users to modify properties of the composite activity to specify, for example, design time, compile time, runtime and other behaviors associated with the composite activity. Properties associated with each activity within the composite activity may also be defined. For example, the composite activity may be considered completely configured, partially configured, or minimally configured based on one or more configuration properties associated with the composite activity.
Other features will be in part apparent and in part pointed out hereinafter. 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 as an aid in determining the scope of the claimed subject matter.
BRIEF DESCRIPTION OF THE DRAWINGS
Appendix A includes a set of properties that describe characteristics of an activity.
Appendix B includes another set of properties that define the behavior of an activity.
Corresponding reference characters indicate corresponding parts throughout the drawings.
DETAILED DESCRIPTION
The relationship between workflows and activities is generally analogous to the relationship between a computer program and its statements. Activities are reusable components which encapsulate metadata for a step in a workflow process and can be used in either modeling workflows or in composition of activities. For example, activities may be used to compose complex activities. In one embodiment, a plurality of activities is presented to a user via a workflow designer application program. The user selects and organizes the activities to create the workflow representative of a business process. The created workflow is executed to model the business process. An example of a workflow is shown in
Exemplary activities include the following: Send, SendRequest, SendResponse, Receive, ReceiveRequest, ReceiveResponse, Code, Delay, Fault, Suspend, Terminate, InvokeSchedule, InvokeSchedules, InvokeWebService, EventSource, EventSink, Sequence, Parallel, While, ConditionalBranch, Conditional, Constrained, ConstrainedActivityGroup, EventDriven, Listen, EventHandlers, ExceptionHandler, ExceptionHandlers, Compensate, CompensationHandler, Scope, and Schedule.
According to embodiments of the invention, the activity is the basic unit of execution in the workflow model and has associated properties, handlers, constraints and events. Each activity may be configured by user code in any programming language. For example, the user code may represent business or application logic or rules written in common language runtime (CLR) languages. Each activity supports pre-interception hooks and post-interception hooks into execution in the user code. Each activity has associated runtime execution semantics and behavior (e.g., state management, transactions, event handling and exception handling). Activities may share state with other activities. Activities may also be primitive activities or grouped into a composite activity. A primitive or basic activity has no substructure (e.g., child activities), and thus is a leaf node in a tree structure. On the other hand, a composite activity contains substructure (e.g., it is the parent of one or more child activities or contains one or more child activities).
Referring next to
The activity designer visually displays the design time visual representation of the activity.
The activity serializer of
In one embodiment of the invention, users may reuse complex business process logic by composing custom activities as illustrated in
Activity writers define the aspects of an activity including, but not limited to, a metadata class definition, an executor that provides runtime execution logic, a validator that provides design-time and runtime validation logic, a designer that describes appearance and behavior in the authoring environment, a serializer that provides custom serialization behavior if required, and a code generator that allows a developer to participate in compile-time code generation. The custom activity designer helps configure these options and introduces further features which are valuable when creating composite activities.
Referring again to
The computing system receives, via the user interface selection device, a value for a configuration property or the like associated with the one or more selected activities at 308. The configuration property value defines access in the workflow by a user to one or more properties or the structure associated with the selected activity. For example, the value may define whether any of the properties or structure of the selected activity are visible, editable, and/or locked in the user interface or programmatically. Visibility of an activity identifies whether the activity may be “seen” by the programmer during the authoring (e.g., available in the parent's collection during enumeration). The ability to “edit” an activity determines if the metadata of the activity may be programmed by the programmer during the authoring (e.g., activity properties are available for programming). Locking an activity prevents child activities of a parent activity from being moved or removed from the parent activity's collection.
The received value for the configuration property may define the activity as fully configured, partially configured, or minimally configured. The configuration property may be associated with a particular activity and/or with a particular property of the activity. The method configures, based on the received value for the configuration property, the selected activity as the composite activity at 310. The method generates software code implementing the composite activity at 312 and provides the composite activity to the developer or other user for use in the workflow at 314. In one embodiment, a compiler packages the activities into binary form for their reuse in the workflow or in the composition of other activities.
Aspects of the invention enable the user to include the composite activity in the workflow and extend the functionality of the composite activity in the workflow as a function of the configuration property. When creating the workflow, the user may view and/or configure the properties of the composite activity as determined by the configuration property. In an alternative embodiment, the user views and/or configures the properties of the composite activity as determined by a plurality of configuration properties, with each of the configuration properties defining access by the user to a particular activity or property of the composite activity. A compiler in one aspect of the invention enforces the ways in which the activities can be reused as a function of the configuration property.
A first activity writer may specify via the configuration property that only a subset of the properties of an activity be shown in the activity designer of a second activity writer. This occurs when the first activity writer is creating an activity for user by the second activity writer to create a composite activity. For example, an attribute such as [ActivityDesignerBrowsable] may be associated with one of the properties of the activity and may define whether the associated property is displayed in the activity designer of the second activity writer.
In one embodiment, one or more computer-readable media have computer-executable instructions for implementing the method illustrated in
Referring next to
Referring next to
In one embodiment of the invention, the activity designer enables users to create activities which can be reused in a workflow according to various levels or models specified by the properties associated with the activities (e.g., the configuration property). Exemplary levels or models of re-use include black box, grey box and white box.
In the case of black box re-use, the activities which the user is able to create using the designer are structurally complete and completely configured using a set of preexisting activities or inheriting from a set of preexisting activities. The activity metadata is specified at the time of designing the activities. The user embeds and associates business logic with these activities. The user selectively hides the parts of an activity which the user does not want exposed at the time of reuse in a workflow but executed implicitly in the workflow. These type of activities are preconfigured and non modifiable on reuse in the workflow.
In the case of grey box reuse, the designer enables the user to create structurally modifiable and partially configured activities which the user is able to fully configure at the time of its use in a workflow. These activities typically contain a set of partially configured preexisting activities which are then completely configured by the user at the time of their reuse in the workflow. In this case, the user embeds a set of activities useful in accomplishing a certain task even though the activities are not structurally complete. The metadata of such activities may also be partly configured when designing the activities.
White box activities are non-configured and the user modifies their structure and metadata at the time of their reuse in the workflow.
In one embodiment, the configuration of an activity in a composite activity being designed is determined by the configuration properties of “Visibility” and “ContainerLocked”. These configuration properties are merely exemplary, and other properties or attributes that define whether an activity or any aspect thereof may be visible, editable, removable, or otherwise configurable during workflow or composite activity creation are within the scope of embodiments of the invention. The Visibility property (e.g., a Boolean property such as IsVisible) and the ContainerLocked property (e.g., a Boolean property such as IsLocked) enable users or developers to hide or otherwise not expose the inner workings of a composite activity to workflow authors. The Visibility property on a child activity in particular composite activity may be set (e.g., true or false) such that the user or developer is unable to view the child activity when creating a workflow or other composite activity using the particular composite activity. This means that the child activity does not visually appear to the user in the composite activity but the functionality of the child activity is within the composite activity. The ContainerLocked property on a composite activity may be set (e.g., true or false) such that the user or developer who re-uses the composite activity is unable add new activities to the composite activity and, in an alternative embodiment, remove any activities from the composite activity. If the composite activity is unlocked, the developer may add child activities at the end of the composite activity.
In an alternative embodiment, another configuration property specifies whether the metadata of an activity may be edited. In this example, each activity exposes a Boolean read-only property, such as IsEditable.
Referring next to
Exemplary Operating Environment
The exemplary operating environment includes a general purpose computing device such as a computer executing computer-executable instructions. The computing device typically has at least some form of computer readable media. Computer readable media, which include both volatile and nonvolatile media, removable and non-removable media, may be any available medium that may be accessed by the general purpose computing device. By way of example and not limitation, computer readable media comprise computer storage media and communication media. Computer storage media include volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information such as computer readable instructions, data structures, program modules or other data. Communication media typically embody computer readable instructions, data structures, program modules, or other data in a modulated data signal such as a carrier wave or other transport mechanism and include any information delivery media. Those skilled in the art are familiar with the modulated data signal, which has one or more of its characteristics set or changed in such a manner as to encode information in the signal. Wired media, such as a wired network or direct-wired connection, and wireless media, such as acoustic, RF, infrared, and other wireless media, are examples of communication media. Combinations of any of the above are also included within the scope of computer readable media. The computing device includes or has access to computer storage media in the form of removable and/or non-removable, volatile and/or nonvolatile memory. A user may enter commands and information into the computing device through input devices or user interface selection devices such as a keyboard and a pointing device (e.g., a mouse, trackball, pen, or touch pad). Other input devices (not shown) may be connected to the computing device. The computing device may operate in a networked environment using logical connections to one or more remote computers.
Although described in connection with an exemplary computing system environment, aspects of the invention are operational with numerous other general purpose or special purpose computing system environments or configurations. The computing system environment is not intended to suggest any limitation as to the scope of use or functionality of aspects of the invention. Moreover, the computing system environment should not be interpreted as having any dependency or requirement relating to any one or combination of components illustrated in the exemplary operating environment. Examples of well known computing systems, environments, and/or configurations that may be suitable for use in embodiments of the invention include, but are not limited to, personal computers, server computers, hand-held or laptop devices, multiprocessor systems, microprocessor-based systems, set top boxes, programmable consumer electronics, mobile telephones, network PCs, minicomputers, mainframe computers, distributed computing environments that include any of the above systems or devices, and the like.
Embodiments of the invention may be described in the general context of computer-executable instructions, such as program modules, executed by one or more computers or other devices. Generally, program modules include, but are not limited to, routines, programs, objects, components, and data structures that perform particular tasks or implement particular abstract data types. Aspects of the invention may also be practiced in distributed computing environments where tasks are performed by remote processing devices that are linked through a communications network. In a distributed computing environment, program modules may be located in both local and remote computer storage media including memory storage devices.
An interface in the context of a software architecture includes a software module, component, code portion, or other sequence of computer-executable instructions. The interface includes, for example, a first module accessing a second module to perform computing tasks on behalf of the first module. The first and second modules include, in one example, application programming interfaces (APIs) such as provided by operating systems, component object model (COM) interfaces (e.g., for peer-to-peer application communication), and extensible markup language metadata interchange format (XMI) interfaces (e.g., for communication between web services).
The interface may be a tightly coupled, synchronous implementation such as in Java 2 Platform Enterprise Edition (J2EE), COM, or distributed COM (DCOM) examples. Alternatively or in addition, the interface may be a loosely coupled, asynchronous implementation such as in a web service (e.g., using the simple object access protocol). In general, the interface includes any combination of the following characteristics: tightly coupled, loosely coupled, synchronous, and asynchronous. Further, the interface may conform to a standard protocol, a proprietary protocol, or any combination of standard and proprietary protocols. The interfaces described herein may all be part of a single interface or may be implemented as separate interfaces or any combination therein. The interfaces may execute locally or remotely to provide functionality. Further, the interfaces may include additional or less functionality than illustrated or described herein.
In operation, the computing device executes computer-executable instructions such as those illustrated in the figures to implement embodiments of the invention.
The following examples further illustrate aspects of the invention.
In general, aspects of the invention include a computerized system for interactive composition of a workflow activity for use in a workflow. Hardware, software, firmware, computer-executable components, computer-executable instructions, and/or
The order of execution or performance of the operations illustrated and described herein is not essential, unless otherwise specified. That is, the operations may be performed in any order, unless otherwise specified, and the operations may include more or less elements than those disclosed herein. For example, it is contemplated that executing or performing a particular operation or element before, contemporaneously with, or after another operation or element is within the scope of an embodiment of the invention.
When introducing elements of embodiments of the invention, the articles “a,” “an,” “the,” and “said” are intended to mean that there are one or more of the elements. The terms “comprising,” “including,” and “having” are intended to be inclusive and mean that there may be additional elements other than the listed elements.
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 herein. Rather, the specific features and acts described above are disclosed as example forms of implementing the claims.
Appendix A An exemplary set of properties that describe characteristics of an activity is shown below.
An exemplary set of properties that define the behavior of an activity is set forth below.
Claims
1. A computerized system for interactive composition of a workflow activity for use in a workflow, said computerized system comprising:
- means for presenting a plurality of workflow activities to a user at design time, each of the plurality of activities having one or more properties associated therewith, each of said properties defining a behavior of the associated activity;
- means for receiving a selection from the user of at least one of the plurality of activities to define a composite activity;
- means for presenting to the user a plurality of properties associated with the received selection of activities;
- means for receiving from the user a property value for at least one of the properties, said received property value defining a behavior of the activity in the composite activity in a workflow; and
- means for configuring, as a function of the received property value, the received selection of activities as the composite activity for use in the workflow.
2. The computerized system of claim 1, further comprising means for enabling the user to create the workflow with the composite activity.
3. The computerized system of claim 1, further comprising a display area having:
- an activity portion for displaying the plurality of workflow activities;
- a property portion for displaying a list of the properties and values associated therewith; and
- a designer portion for displaying the composite activity.
4. The computerized system of claim 1, wherein the property value comprises a value defining visibility of the properties in the composite activity in the workflow.
5. The computerized system of claim 1, wherein the property value comprises a value specifying whether a particular property of the composite activity is editable in the workflow.
6. The computerized system of claim 1, wherein each of the properties defines one or more of the following associated with the received selection of activities: a design time behavior, a runtime behavior, a semantic behavior, and a visualization behavior.
7. The computerized system of claim 1, further comprising a compiler for enforcing the defined behavior of the activity during workflow creation,
8. The computerized system of claim 1, wherein the properties define whether the activities are one or more of the following: visible, editable, and lockable.
9. The computerized system of claim 1, further comprising means for authoring the composite activity declaratively or programmatically.
10. In a computing system having a display and a user interface selection device, a method of enabling a user to create a composite workflow activity for use in a workflow, said method comprising:
- displaying predefined workflow activities to a user on the display at design time;
- receiving, via the user interface selection device, a selection of at least one of the displayed activities to define a composite activity;
- displaying, on the display, the selected activity;
- receiving, via the user interface selection device, a value for a configuration property associated with the selected activity, said value configuring other properties associated with the selected activity;
- configuring, based on the received value for the configuration property, the selected activity as the composite activity;
- providing the composite activity to the user for use in the workflow.
11. The method of claim 10, further comprising generating software code implementing the composite activity.
12. The method of claim 10, further comprising:
- receiving, via the user interface selection device, a selection of at least two of the displayed activities and flow information defining a relationship between the selected activities; and
- displaying, on the display, the selected activities arranged via the flow information.
13. The method of claim 10, wherein the received value for the configuration property corresponds to one or more of the following: a fully-configured activity, a partially-configured activity, and a minimally-configured activity.
14. The method of claim 10, further comprising enabling the user to extend the functionality of the composite activity in the workflow as a function of the configuration property.
15. The method of claim 10, wherein the configuration property is associated with a particular property of the selected activity.
16. The method of claim 10, wherein one or more computer-readable media have computer-executable instructions for implementing the method of claim 10.
17. One or more computer-readable media having computer-executable components for interactive visual composition of activities, said components comprising:
- a designer component for providing a set of predefined workflow activities to a user and receiving a selection of one or more of the predefined workflow activities;
- a display component for displaying the selected activities to the user as a composite activity;
- a property component for receiving a value for a configuration property associated with one of the selected activities displayed by the display component; and
- a preview component for displaying the selected activities as the composite activity in a workflow as a function of the value received by the property component for the configuration property.
18. The computer-readable media of claim 17, wherein one or more of the predefined activities inherits a property value from another one of the predefined activities.
19. The computer-readable media of claim 17, wherein the value for the configuration property specifies access in the workflow to one of the selected activities.
20. The computer-readable media of claim 17, wherein the value for the configuration property specifies that one or more of the selected activities or properties associated therewith be partially hidden within the composite activity in the workflow.
Type: Application
Filed: Jun 17, 2005
Publication Date: Apr 6, 2006
Applicant: Microsoft Corporation (Redmond, WA)
Inventors: Dharma Shukla (Sammamish, WA), Mayank Mehta (Redmond, WA), Aditya Bhandarkar (Redmond, WA), John Whytock (Seattle, WA), Dennis Pilarinos (Redmond, WA), Shiqiu Guo (Sammamish, WA), Eli Hisdai (Bellevue, WA), Kumarswamy Valegerepura (Bellevue, WA)
Application Number: 11/155,454
International Classification: G05B 19/418 (20060101);