Modeling languages may be used as meta-languages to describe and execute underlying processes, such as business processes. For example, process modeling languages allow an enterprise to describe tasks of a process, and to automate performance of those tasks in a desired order to achieve a desired result. For instance, the enterprise may implement a number of business software applications, and process modeling may allow coordination of functionalities of these applications, including communications (e.g., messages) between the applications, to achieve a desired result. Further, such process modeling generally relies on language that is common to, and/or interoperable with, many types of software applications and/or development platforms. As a result, process modeling may be used to provide integration of business applications both within and across enterprise organizations.
Thus, such modeling languages allow a flow of activities or tasks to be graphically captured and executed, thereby enabling resources responsible for the activities to be coordinated efficiently and effectively. The flow of work in a process is captured through routing (e.g., control flow) constructs, which allow the tasks in the process to be arranged into the required execution order through sequencing, choices (e.g., decision points allowing alternative branches), parallelism (e.g., tasks running in different branches which execute concurrently), iteration (e.g., looping in branches) and synchronization (e.g., the coming together of different branches).
In the context of such processes, it may occur that an activity of a process may require (or may benefit from) multiple executions thereof. For example, an activity may be required to perform some repetitive or iterative task, such as checking availability for sale of a list of inventory items and/or requesting re-order of any unavailable inventory items. Existing techniques for handling such situations, additional examples of which are provided herein, include performing “for each” execution of the activity (e.g., performing multiple activations of the activity for each data item to be processed), or spawning/executing multiple instances of the activity to be executed substantially in parallel with one another (again, with each instance processing one or more of the data items to be processed).
Thus, it may occur that a plurality of data items may need to be processed (e.g., read and/or generated) by an activity of a process model (e.g., during execution of the activity). In practice, existing techniques for performing such processing may be inefficient, unsuitable, inflexible, or unfeasible for many scenarios. For example, activating the activity multiple times, once for each data item to be processed, may be inefficient. As another example, the activity may require (or benefit from) a high level of flexibility in the manner(s) in which the activity processes the data items, including, for example, processing some desired subset of the data items, or having the ability to forgo processing any of the data items, if the circumstances warrant. Consequently, existing solutions for processing multiple data items of a list may not be sufficient to achieve a desired result in a desired manner.