Individual applications running on computing devices are often “sandboxed” separately for security reasons. Sandboxing allows an application to run on a computing device without allowing the application to have access to the resources of the computing device without explicit permission. Additionally, other applications on the computing device do not have access to the resources of the first application without explicit permission. Accordingly, the computing device is protected from damage caused by an untrusted application. However, when applications run in their own sandboxes, it is difficult for the applications to effectively work together without significant user involvement.
In at least one implementation, the disclosed technology provides a multiapplication workflow engine including one or more computing processors and a request processing engine configured to receive instruction to execute a multiapplication workflow via the one or more computing processors. The multiapplication workflow defines two or more operations and provides a functionality definition corresponding to each of the two or more operations and an interface definition corresponding to each of the two or more operations. The interface definition corresponds to each operation being defined such that operations that are executed successively have compatible interface definitions. A multiapplication workflow configuration manager is configured to instantiate one or more applications executed by the one or more computing processors. The one or more applications satisfy the interface definition and functionality definition for each of the two or more operations in a protected execution environment. The one or more applications are each configured to communicate via compatible interfaces defined by the compatible interface definitions and being ordered in accordance with execution order positions provided by the multiapplication workflow. A multiapplication workflow execution engine is configured to execute the multiapplication workflow via the one or more computing processors in the protected execution environment. Data being passed among the one or more applications through the compatible interfaces.
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.
Other implementations are also described and recited herein.
Currently, individual applications on some computing devices are executed in a “sandbox,” meaning that each individual application has its own temporary memory. Additionally, an application executed in a sandbox cannot directly access the system resources and user data of the computing device. Further, other applications running on the same computing device cannot access the first application running in the sandbox. While sandboxed execution is beneficial for security, it can be inefficient when a user wants to execute a procedure that requires input from multiple applications. For example, a user may wish to use optical character recognition (OCR) to convert the text in a photo to text format, and then to send that text via e-mail. When each application is sandboxed, the user acts as an intermediary between the applications, e.g., by manually launching an OCR application and selecting the photo from the photo browser and by manually inserting text output from the OCR application into an e-mail application.
A multiapplication workflow allows applications to communicate with each other through a shared memory. The applications still cannot access the system resources or the user data of the computing device, so the multiapplication workflow does not jeopardize the security of the computing device. However, the multiapplication workflow allows for a more efficient use of resources because the applications in the multiapplication workflow can interact more easily. For example, when the multiapplication workflow uses a shared memory, the applications use memory more efficiently and memory fragmentation may be improved.
Once the list 112 of available multiapplication workflows populates, the user may choose which multiapplication workflow would best accomplish the task that the user wants to accomplish. A description 114 may be available to provide the user with additional information to choose the correct multiapplication workflow. For example, description 114 states that the multiapplication workflow “OCR to e-mail” uses optical character recognition (OCR) to convert the text in a photo to text and send the text in an e-mail. After reading the description 114, the user may select the OCR to e-mail multiapplication workflow to send the text in the photo 108 as an e-mail. Such description may also include, without limitation, a cost for applications not owned by the user, installation status of certain applications, or updates available for applications already owned by the user.
Though this example provides a multiapplication workflow for sending text in a photo as an e-mail, a variety of multiapplication workflows may exist for accomplishing a variety of tasks. For example, other multiapplication workflows may allow a user to take a photo of text with a camera built into a computing device and convert the text to a word processing document. Another example multiapplication workflow may allow a user to check traffic and send an e-mail with their estimated time of arrival at a specific destination. Many other multiapplication workflows may be created, deployed, and/or executed.
The example environments 102 and 104 show one method of launching a multiapplication workflow through an application. In other implementations, the multiapplication workflow may be launched in a different way. For example, one implementation provides an index of multiapplication workflows available in a store or catalog that the user may search to find a multiapplication workflow with the user's desired functionality. In another implementation, the user may store favorite multiapplication workflows on the computing device. The stored multiapplication workflows may then be launched directly by, for example, menus on the computing device or icons on the computing device's home screen or as an extension in another application.
In some implementations, the user may interact with additional applications or interfaces either before the execution of the multiapplication workflow or during execution of the multiapplication workflow. For example, the multiapplication workflow may receive permission from the user to install additional applications on the user's computing device. In other implementations, the user may make selections in applications in the multiapplication workflow before receiving the final product of the multiapplication workflow.
In other implementations, the user may launch a multiapplication workflow from a different location. For example, in one implementation, the user may access and search a database including a catalog of multiapplication workflows instead of launching a multiapplication workflow from an already opened application. In another implementation, the user may save multiapplication workflows on the memory of a computing device and may access a multiapplication workflow directly from the computing device. In yet another implementation, a multiapplication workflow may launch automatically from the computing device without any input from the user.
Once a multiapplication workflow has been selected the multiapplication workflow is populated with applications to perform the operations defined by the multiapplication workflow. A multiapplication workflow includes several operations, with each operation being a sequential (or possibly, parallel) step in the overall process performed by the multiapplication workflow. For example, the OCR to e-mail multiapplication workflow 320 includes a photo viewing operation 326, an OCR operation 328, and an e-mail operation 330. Each operation is fulfilled by at least one application.
To determine which application or applications to place in each operation, the multiapplication workflow defines each operation by an interface definition and a functionality definition. The interface definition specifies the input and/or output characteristics of an operation, including, without limitation, any one of Application Programming Interface (API), file type, data type, etc. For example, the OCR operation 328 may have an interface definition that defines the input capability by the ability to receive files in at least a .pdf file format and defines the output capability by the ability to output in plain text. The interface definition of each application in the multiapplication workflow is defined partially based on the interface definitions of the other applications in the multiapplication workflow to ensure compatible interface definitions. Compatibility means that applications that execute successively in the multiapplication workflow can communicate with each other through shared memory, shared file types, data types, API, or other interapplication communication means. In the described technology, the term “successively” is used with reference to the sequential execution of the multiapplication workflow—an application and the application that follows it in the sequence of the multiapplication workflow are executed successively. For example, in the OCR to e-mail multiapplication workflow 320, if the OCR operation 328 has an interface definition defining the output of the OCR operation 328 as plain text, the e-mail operation 330 has a compatible interface definition when the interface definition of the e-mail operation 330 defines the input of the e-mail operation 330 as plain text.
The functionality definition specifies what functionality the application should have to perform the function designated by an operation. For example, the OCR operation 328 may have a functionality definition for an application that has OCR capabilities. The functionality definition may include both mandatory functionalities and optional functionalities. Mandatory functionality specifies functionality that is necessary to execute the multiapplication workflow. Optional functionality defines functionality that is desirable in an application, but not necessary to execute the multiapplication workflow as it is designed. Optional functionality is discussed in more detail with respect to
The OCR to e-mail multiapplication workflow 320 searches for applications to fulfill the interface definition and functionality definition for each operation defined by the OCR to e-mail multiapplication workflow 320. Each operation may have one or multiple applications that meet the interface definition and functionality definition of the operation. The OCR to e-mail multiapplication workflow 320 may rank applications that fulfill both the interface definition and functionality definition to determine which application to include in each operation. For example, the photo viewing operation 326 may have a functionality definition for a user interface that allows for viewing photos and an interface definition for the ability to output photos in a .pdf format. The photo browsing application 306 that the user is using to launch the OCR to e-mail multiapplication workflow 320 may meet both the functionality definition and the interface definition for the photo viewing operation 326. The computing device may have a second photo browsing application 332 stored in memory that meets both the functionality definition and the interface definition for the photo viewing operation 326. The photo browsing application 306 may be ranked ahead of the second photo browsing application 332 because the user launched the OCR to e-mail multiapplication workflow 320 from the photo browsing application 306. Accordingly, the photo browsing application 306 is included in the OCR to e-mail multiapplication workflow 320.
In other implementations, a variety of criteria may be used to rank applications to determine which application to include in a multiapplication workflow when multiple applications meet the functionality definition and the interface definition for a given operation. Applications that include optional functionality may be included over applications that meet only the functionality definition for a given operation. Other factors, for example, without limitation, the price of an application, the file size of an application, or the developer identity, may be used to decide which applications to include in a multiapplication workflow. In some implementations, the user may be prompted to decide which application to include when several applications meet both the functionality definition and the interface definition for a given operation within a multiapplication workflow.
When searching for applications to fulfill the functionality definition and the interface definition for a given operation, a catalog of indexed applications may be searched when an application fitting the functionality definition and the interface definition is not already installed on the computing device. For example, an OCR application 334 fitting the functionality definition and the interface definition of the OCR operation 328 may be already downloaded to the computing device. Therefore, the indexed catalog of applications need not be searched for more applications that fit the functionality definition and the interface definition of the OCR operation 328 and the OCR application 334 is included in the OCR to e-mail multiapplication workflow 320. However, the catalog of indexed applications may still be searched to determine whether another application is available that may better fit the multiapplication workflow by, for example, having desired optional functionality or more recent software updates.
In contrast, there may be no applications on the computing device that fulfill the functionality definition and the interface definition for the e-mail operation 330. After searching the catalog of indexed applications, there may be an e-mail application 336, a second e-mail application 338, and a third e-mail application 340 that all fulfill the functionality definition and the interface definition for the e-mail operation 330. In one implementation, the user may be prompted to choose which application to include and may choose the e-mail application 336 to include in the OCR to e-mail multiapplication workflow 320. Because the e-mail application 336 is not already installed on the computing device, the e-mail application 336 may be downloaded and installed on the computing device prior to the execution of the OCR to e-mail multiapplication workflow 320.
While each operation in the OCR to e-mail multiapplication workflow 320 is executed by one application, in other implementations, multiple applications may be used to obtain the functionality definition and the interface definition for a single operation. Multiple applications may be used to fulfill one operation when one application does not fulfill the functionality definition and the interface definition for the operation, but a combination of applications can be used to fulfill the functionality definition and the interface definition.
Before execution of the OCR to e-mail multiapplication workflow 420, the photo browsing application 406, the OCR application 434, and the e-mail application 436 are instantiated within the protected execution environment (e.g., launched, spawned in a thread, created) and ordered in accordance with execution order positions provided by the OCR to e-mail multiapplication workflow 420. For example, the applications are ordered so that first, the photo browsing application 406 executes and passes data to the shared memory 442. Second, the OCR application 434 receives data from the shared memory 442, executes, and passes additional data to the shared memory 442. Third, the e-mail application 436 receives data from the shared memory 442 and executes. In some implementations, some applications in a multiapplication workflow may execute in parallel instead of sequentially. For example, if the user wanted to send a screenshot of the photo from the photo browsing application 406, a screenshot application may execute at the same time as the OCR application 434. The screenshot application and the OCR application 434 would both receive input from the photo browsing application 406 and would both send output to the e-mail application 436. As such, the screenshot application and the OCR application 434 would execute in parallel and would be ordered to execute in parallel.
The shared memory 442 provides an access point for each application but does not convert data types. As such, the execution order positions provided by the OCR to e-mail application workflow provide compatibility between the applications. For example, the photo browsing application 406 passes data 448 in a .pdf format to the shared memory 442. The OCR application 434 receives the data 448 from the shared memory 442 in a .pdf format. Therefore, the photo browsing application 406 and the OCR application 434 are compatible. Each of the photo browsing application 406, the OCR application 434, and the e-mail application 436 may have a data input interface and a data output interface that may be associated with the shared memory 442 before execution of OCR to e-mail multiapplication workflow 420.
In some implementations, the applications may communicate by means other than being directly communicatively connected to a shared memory. For example, each application could execute in a workflow wrapper that could take advantage of a supervisory application within a protected execution environment.
CreateWorkflow(“DigArc”)
After the multiapplication workflow is initiated, in a requesting operation 506, the computing device 502 requests a list of locally stored photo viewing, OCR, and e-mail applications from the catalog of indexed applications 504. The request may be communicated by a query such as:
DigArc.Features(photo, ocr, email)
In a returning operation 508, the catalog of indexed applications 504 returns a list of locally stored photo viewing, OCR, and e-mail applications. When, for example, the computing device has two photo browsing applications and one e-mail application stored locally, but does not have an OCR application stored locally, the returning operation 508 may communicate:
photo.Applist=[photos, picbrowse], email.Applist=[Mail], OCR.Applist=Empty
After receiving a list of local applications, the computing device 502 communicates with the catalog of indexed applications 504 to determine which apps to include in the multiapplication workflow. In one example, there are two photo browsing applications and one e-mail application stored locally on the computing device 502, but no locally stored OCR application. To determine which of the two locally stored photo browsing applications to include in the multiapplication workflow, the computing device 502 first queries the catalog of indexed applications 504 for photo browsing applications with a functionality definition in a query operation 510. For example, if the functionality definition includes mandatory functionality of photo viewing through a user interface and optional functionality of photo editing, the query from the computing device 502 to the catalog of indexed applications 504 may be, for example:
photo. QueryInterface(Mandatory=UI, Optional=Photo Edit)
In response to the query operation 510, the catalog of indexed applications 504 returns a list of locally stored photo viewing applications that meet the functionality definition in a second returning operation 512. Where both of the locally stored applications meet both the mandatory and optional functionality, the return list may be, for example:
photo.Applist=[photos, picbrowse]
In a selection operation 514, the computing device 502 communicates which photo browsing app to include in the multiapplication workflow. In this example, two photo browsing apps meet the functionality definition for a photo browsing app. To determine which of the two photo browsing applications to include, in one implementation, the computing device 502 may receive input from a user to determine which application to include. In other implementations, there may be additional criteria to assist the computing device in the determination. For example, the computing device may give preference to applications from specific developers, applications that the user opens more often, or applications with higher user ratings in the application database. Here, if the computing device 502 determines that it will include the “photos” application in the multiapplication workflow, the communication may be:
photo.AppSelect=photos
In a second selection operation 516, the computing device 502 communicates which e-mail application to include in the multiapplication workflow. Here, there is no additional determination because there is only one e-mail application stored locally on the computing device 502. The second selection operation may communicate:
email.AppSelect=mail
In this implementation, preference is given to applications that are stored locally on the computing device 502. In other implementations, the user may be given a choice to download additional applications that may also fulfill the functionality definition.
In a second query operation 518, the computing device 502 queries the catalog of indexed applications 504 for applications that fulfill the functionality definition for an OCR application that are available for download from the catalog of indexed applications 504. Where the functionality definition includes mandatory OCR functionality and an optional UI, the query may be:
ocr.FindStoreApp(Mandatory, Optional), Mandatory=OCR, Optional=UI
In a third returning operation 520, the catalog of indexed applications 504 returns a list of applications with the mandatory functionality and returns indication of whether the applications listed also include the optional functionality. Here, there may be two applications with OCR capability, where only one application also has a UI. The application database 504 would give three returns:
ocr.StoreAppList=[eRealOCR, PaperMaster]
eRealOCR.Mandatory=OCR, eRealOCR.Optional=No UI
PaperMaster.Madatory=OCR, PaperMaster.Optional=Has UI
In a third selection operation 522, the computing device 502 selects the OCR application that has both the mandatory and optional functionality. Here, the computing device 502 would select the application by sending the following communication:
ocr.AppSelect=PaperMaster
After the computing device 502 communicates its selection, the catalog of indexed applications 504 sends the selected application to the computing device 502 in a downloading operation 524.
One or more application programs 712 modules or segments, such as a multiapplication workflow engine 740 are loaded into the memory 704 and/or storage 720 and executed by the processor(s) 702. The application programs 712 or modules may include the multiapplication workflow engine 740 implemented by a request processing engine 744, application selection engine 746, multiapplication workflow configuration manager 748, multiapplication workflow execution engine 750 etc. which may be embodied in instructions stored in the memory 704 and/or storage 720 and executed by the processor(s) 702. Data such as user preferences, hardware configurations, hardware responses, etc. may be stored in the memory 704 or storage 720 and may be retrievable by the processor(s) 702 for use by the multiapplication workflow engine 740, the request processing engine 744, the application selection engine 746, the multiapplication workflow configuration manager 748, the multiapplication workflow execution engine 750, etc. The storage 720 may be local to the computing system 700 or may be remote and communicatively connected to the computing system 700 and may include another server. The storage 720 may store resources that are requestable by client devices (not shown). In some implementations, the application programs 712, the multiapplication workflow engine 740, the request processing engine 744, the application selection engine 746, the multiapplication workflow configuration manage 748, and/or the multiapplication workflow execution engine 750 may reside in or execute as part of the operating system 710. For example, the multiapplication workflow engine 740 may involve printer drivers or other resources that also reside in or execute within the operating system 710.
The computing system 700 includes a power supply 716, which is powered by one or more batteries or other power sources and which provides power to other components of the computing system 700. The power supply 716 may also be connected to an external power source that overrides or recharges the built-in batteries or other power sources.
The computing system 700 may include one or more communication transceivers 730 which may be connected to one or more antenna(s) 732 to provide network connectivity (e.g., mobile phone network, Wi-Fi®, Bluetooth®, etc.) to one or more other servers and/or client devices (e.g., mobile devices, desktop computers, or laptop computers). The computing system 700 may further include a network adapter 736, which is a type of communication device. The computing system 700 may use the adapter and any other types of communication devices for establishing connections over a wide-area network (WAN) or local-area network (LAN). It should be appreciated that the network connections shown are exemplary and that other communications devices and means for establishing a communications link between the computing system 700 and other devices may be used.
The computing system 700 may include one or more input devices 734 such that a user may enter commands and information (e.g., a keyboard or mouse). These and other input devices may be coupled to the server by one or more interfaces 738 such as a serial port interface, parallel port, universal serial bus (USB), etc. The processing system 700 may further include a display 722 such as a touch screen display.
The computing system 700 may include a variety of tangible processor-readable storage media and intangible processor-readable communication signals. Tangible processor-readable storage can be embodied by any available media that can be accessed by the computing system 700 and includes both volatile and nonvolatile storage media, removable and non-removable storage media. Tangible processor-readable storage media excludes intangible communications signals and includes volatile and nonvolatile, removable and non-removable storage media implemented in any method or technology for storage of information such as processor-readable instructions, data structures, program modules or other data. Tangible processor-readable storage media includes, but is not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CDROM, digital versatile disks (DVD) or other optical disk storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other tangible medium which can be used to store the desired information and which can be accessed by the processing system 700. In contrast to tangible processor-readable storage media, intangible processor-readable communication signals may embody processor-readable instructions, data structures, program modules or other data resident in a modulated data signal, such as a carrier wave or other signal transport mechanism. The term “modulated data signal” means a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal. By way of example, and not limitation, intangible communication signals include signals traveling through wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, RF, infrared, and other wireless media.
An example multiapplication workflow engine is provided. The multiapplication workflow engine includes one or more computing processors, a request processing engine, a multiapplication workflow configuration manager, and a multiapplication workflow execution engine. The request processing engine is configured to receive an instruction to execute a multiapplication workflow via the one or more computing processors. The multiapplication workflow defines two or more operations and provides a functionality definition corresponding to each of the two or more operations and an interface definition corresponding to each of the two or more operations. The interface definition corresponding to each operation is defined such that operations that are executed successively have compatible interface definitions. The multiapplication workflow configuration manager is configured to instantiate one or more applications executed by the one or more computing processors, the one or more applications satisfying the interface definition and functionality definition for each of the two or more operations in a protected execution environment, the one or more applications each being configured to communicate via compatible interfaces defined by the compatible interface definitions and being ordered in accordance with execution order positions provided by the multiapplication workflow. The multiapplication workflow execution engine is configured to execute the multiapplication workflow via the one or more computing processors in the protected execution environment. Data is passed between the one or more applications through the compatible interfaces.
An example multiapplication workflow engine of any previous multiapplication workflow engine is provided, further including a shared memory inaccessible to applications not executing within the protected execution environment of the multiapplication workflow. The compatible interfaces are configured for communication through the shared memory accessible to the applications executing in the protected execution environment.
An example multiapplication workflow engine of any previous multiapplication workflow engine is provided, wherein the multiapplication workflow configuration manager associates a data input interface and a data output interface of each of the instantiated applications with the shared memory provided by the multiapplication workflow.
An example multiapplication workflow engine of any previous multiapplication workflow engine is provided, wherein the multiapplication workflow engine includes an application programming interface inaccessible to applications not executing within the protected execution environment of the multiapplication workflow. The compatible interfaces are configured for communication through the application programming interface accessible to the one or more applications executing in the protected execution environment.
An example multiapplication workflow engine of any previous multiapplication workflow engine is provided, wherein the multiapplication workflow engine includes an application selection engine configured to search a catalog of indexed applications for one or more applications that satisfy the interface definition and the functionality definition for each of the two or more operations.
An example multiapplication workflow engine of any previous multiapplication workflow engine is provided, wherein the application selection engine selects one or more applications that satisfy the interface definition and the functionality definition corresponding to each of the two or more operations from the catalog of indexed applications.
An example multiapplication workflow engine of any previous multiapplication workflow engine is provided, wherein the request processing engine receives an instruction to execute the multiapplication workflow and each functionality definition provided by the multiapplication workflow includes one or more mandatory functionalities and one or more optional functionalities.
An example method includes receiving instruction to execute a multiapplication workflow. The multiapplication workflow defines two or more operations and provides a functionality definition corresponding to each of the two or more operations and an interface definition corresponding to each of the two or more operations. The interface definition corresponding to each operation is defined such that operations that are executed successively have compatible interface definitions. The example method further includes instantiating one or more applications that satisfy the interface definition and functionality definition for each of the two or more operations in a protected execution environment. The applications are each configured to communicate via compatible interfaces defined by the compatible interface definitions and are ordered in accordance with execution order positions provided by the multiapplication workflow. The example method further includes executing the multiapplication workflow in the protected execution environment. Data is passed between the one or more applications through the compatible interfaces.
An example method of any previous method is provided, wherein the compatible interfaces are configured for communication through a shared memory accessible to the applications executing in the protected execution environment and inaccessible to applications not executing within the protected execution environment of the multiapplication workflow.
An example method of any previous method includes associating a data input interface and a data output interface of each of the instantiated applications with the shared memory provided by the multiapplication workflow.
An example method of any previous method is provided, wherein the compatible interfaces are configured for communication through an application programming interface accessible to the applications executing in the protected execution environment and inaccessible to applications not executing within the protected execution environment of the multiapplication workflow.
The method of any previous method further includes searching a catalog of indexed applications for one or more applications that satisfy the interface definition and the functionality definition for each of the two or more operations.
The method of any previous method further includes selecting one or more applications that satisfy the interface definition and the functionality definition corresponding to each of the two or more operations from the catalog of indexed applications.
The method of any previous method is provided, wherein each functionality definition includes one or more mandatory functionalities and one or more optional functionalities.
An example system includes means for receiving instruction to execute a multiapplication workflow. The multiapplication workflow defines two or more operations and provides a functionality definition corresponding to each of the two or more operations and an interface definition corresponding to each of the two or more operations. The interface definition corresponding to each operation is defined such that operations that are executed successively have compatible interface definitions. The example system further includes means for instantiating one or more applications that satisfy the interface definition and functionality definition for each of the two or more operations in a protected execution environment. The applications are each configured to communicate via compatible interfaces defined by the compatible interface definitions and are ordered in accordance with execution order positions provided by the multiapplication workflow. The example system further includes means for executing the multiapplication workflow in the protected execution environment. Data is passed between the one or more applications through the compatible interfaces.
An example system of any preceding system is provided, wherein the compatible interfaces are configured for communication through a shared memory accessible to the applications executing in the protected execution environment and inaccessible to applications not executing within the protected execution environment of the multiapplication workflow.
An example system of any preceding system includes means for associating a data input interface and a data output interface of each of the instantiated applications with the shared memory provided by the multiapplication workflow.
An example system of any preceding system is provided, wherein the compatible interfaces are configured for communication through an application programming interface accessible to the applications executing in the protected execution environment and inaccessible to applications not executing within the protected execution environment of the multiapplication workflow.
An example system of any preceding system includes means for searching a catalog of indexed applications for one or more applications that satisfy the interface definition and the functionality definition for each of the two or more operations.
An example system of any preceding system includes means for selecting one or more applications that satisfy the interface definition and the functionality definition corresponding to each of the two or more operations from the catalog of indexed applications.
An example system of any preceding system is provided, wherein each functionality definition includes one or more mandatory functionalities and one or more optional functionalities.
Example one or more tangible processor-readable storage media are embodied with instructions for executing on one or more processors and circuits of a computing device a process for receiving instruction to execute a multiapplication workflow. The multiapplication workflow defines two or more operations and provides a functionality definition corresponding to each of the two or more operations and an interface definition corresponding to each of the two or more operations. The interface definition corresponding to each operation is defined such that operations that are executed successively have compatible interface definitions. The process further includes instantiating one or more applications that satisfy the interface definition and functionality definition for each of the two or more operations in a protected execution environment. The applications are each configured to communicate via compatible interfaces defined by the compatible interface definitions and are ordered in accordance with execution order positions provided by the multiapplication workflow. The process further includes executing the multiapplication workflow in the protected execution environment. Data is passed between the one or more applications through the compatible interfaces.
Another example one or more tangible processor-readable storage media are embodied with instructions for executing on one or more processors and circuits of a device a process of any preceding process wherein the compatible interfaces are configured for communication through a shared memory accessible to the one or more applications executing in the protected execution environment and inaccessible to applications not executing within the protected execution environment of the multiapplication workflow.
Another example one or more tangible processor-readable storage media are embodied with instructions for executing on one or more processors and circuits of a device a process of any preceding process including associating a data input interface and a data output interface of each of the selected applications with the shared memory.
Another example one or more tangible processor-readable storage media are embodied with instructions for executing on one or more processors and circuits of a device a process of any preceding process wherein each functionality definition includes one or more mandatory functionalities and one or more optional functionalities.
Another example one or more tangible processor-readable storage media are embodied with instructions for executing on one or more processors and circuits of a device a process of any preceding process including searching a catalog of indexed applications for one or more applications that satisfy the interface definition and the functionality definition for each of the two or more operations.
Another example one or more tangible processor-readable storage media are embodied with instructions for executing on one or more processors and circuits of a device a process of any preceding process including selecting one or more applications that satisfy the interface definition and the functionality definition corresponding to each of the two or more operations from the catalog of indexed applications.
Some implementations may comprise an article of manufacture. An article of manufacture may comprise a tangible storage medium to store logic. Examples of a storage medium may include one or more types of computer-readable storage media capable of storing electronic data, including volatile memory or non-volatile memory, removable or non-removable memory, erasable or non-erasable memory, writeable or re-writeable memory, and so forth. Examples of the logic may include various software elements, such as software components, programs, applications, computer programs, application programs, system programs, machine programs, operating system software, middleware, firmware, software modules, routines, subroutines, operation segments, methods, procedures, software interfaces, application program interfaces (API), instruction sets, computing code, computer code, code segments, computer code segments, words, values, symbols, or any combination thereof. In one implementation, for example, an article of manufacture may store executable computer program instructions that, when executed by a computer, cause the computer to perform methods and/or operations in accordance with the described embodiments. The executable computer program instructions may include any suitable type of code, such as source code, compiled code, interpreted code, executable code, static code, dynamic code, and the like. The executable computer program instructions may be implemented according to a predefined computer language, manner or syntax, for instructing a computer to perform a certain operation segment. The instructions may be implemented using any suitable high-level, low-level, object-oriented, visual, compiled and/or interpreted programming language.
The implementations described herein are implemented as logical steps in one or more computer systems. The logical operations may be implemented (1) as a sequence of processor-implemented steps executing in one or more computer systems and (2) as interconnected machine or circuit modules within one or more computer systems. The implementation is a matter of choice, dependent on the performance requirements of the computer system being utilized. Accordingly, the logical operations making up the implementations described herein are referred to variously as operations, steps, objects, or modules. Furthermore, it should be understood that logical operations may be performed in any order, unless explicitly claimed otherwise or a specific order is inherently necessitated by the claim language.
The present application claims benefit of priority to U.S. Provisional Patent Application No. 62/564,888, entitled “Vertical and Horizontal Solutions for Hardware/Software Resources Management” and filed on Sep. 28, 2017, which is specifically incorporated by reference herein for all that it discloses and teaches.
Number | Date | Country | |
---|---|---|---|
62564888 | Sep 2017 | US |