Application software, commonly referred to as an application or simply an “app,” is designed to allow a user to perform a singular or multiple related specific tasks, often leveraging Internet connectivity. Such “apps” are increasingly designed for a variety of web-connected devices, including mobile devices, desktop computers, notebooks, and printers.
Examples described herein provide for remotely executing operations of an application that is utilized by an end user on a computing device. According to some implementations, a schema is provided that logically representing a nodal hierarchy relating to execution of an application. The hierarchy includes multiple nodes, including one or more category nodes and one or more content nodes. An executable script is provided with the schema. The script may be associated with at least one node of the hierarchy. Each of multiple user inputs from the computing device are processed using the schema. The individual user inputs may be selective of nodes of the hierarchy. In response to processing each of multiple user inputs, user interface content is provided to the computing device. The user interface content for each user input corresponds to one of (i) one or more nodes, or (U) a script content, generated as an output of an executed script that is associated with a selected node.
As another example, a computer system includes a memory resource and one or more processors. The memory resource stores a set of instructions and a schema. The schema logically represents a hierarchy of nodes for an application that is operable on a computing device in communication with the computing system. The hierarchy includes multiple nodes, including one or more category nodes and one or more content consumption nodes, and at least one of the nodes of the hierarchy is associated with an executable script. The one or more processors execute the instructions from memory in order to access the schema in response to a selection input from an operator of the computer. In response to input from the operator of the computing device, a series of user interface content is provided to the computing device. Each user interface content may correspond to one of (i) one or more nodes, or (ii) a script content, generated as an output of an executed script that is associated with a selected node.
One or more embodiments described herein provide that methods, techniques and actions performed by a computing device are performed programmatically, or as a computer-implemented method. Programmatically means through the use of code, or computer-executable instructions. A programmatically performed step may or may not be automatic.
One or more embodiments described herein may be implemented using programmatic modules or components. A programmatic module or component may include a program, a subroutine, a portion of a program, or a software component or a hardware component capable of performing one or more stated tasks or functions. As used herein, a module or component can exist on a hardware component independently of other modules or components. Alternatively, a module or component can be a shared element or process of other modules, programs or machines.
Furthermore, one or more embodiments described herein may be implemented through the use of instructions that are executable by one or more processors. These instructions may be carried on a computer-readable medium. Machines shown or described with figures below provide examples of processing resources and computer-readable mediums on which instructions for implementing embodiments of the invention can be carried and/or executed. In particular, the numerous machines shown with embodiments of the invention include processor(s) and various forms of memory for holding data and instructions. Examples of computer-readable mediums include permanent memory storage devices, such as hard drives on personal computers or servers. Other examples of computer storage mediums include portable storage units, such as CD or DVD units, flash memory (such as carried on many cell phones and personal digital assistants (PDAs)), and magnetic memory. Computers, terminals, network enabled devices (e.g. mobile devices such as cell phones) are all examples of machines and devices that utilize processors, memory, and instructions stored on computer-readable mediums. Additionally, embodiments may be implemented in the form of computer-programs, or a computer usable carrier medium capable of carrying such a program.
System Description
In more detail, the system 100 can provide a network service that enables developers to provide applications, as well as to configure and/or update applications, for use on end user devices (such as web-enabled printer 10). The applications can be remotely executed substantially through the network service provided by system 100. For example, as described in more detail, system 100 can implement programmatic operations for an application, and provide user interface content 143 to the printer 10 or (other end-user devices). Users may respond with input made through the user interface content, and the system 100 may implement the applications to respond to the user input and provide new or updated user interface content. Some actions performed by the system 100 can include controlling, or directing printer 10 to access and consume (e.g., print) content from a particular source.
In one, example, system 100 includes a developer subsystem 110. The developer subsystem can optionally be provided as a separate system or entity from system 100. In an example of
The developer interface 112 can correspond to a webpage or other programmatic interface that can receive declarative inputs 107, scripts 109, and content references 111 from the developer user. A declarative model definition 113 can combine with functions 117 specified in function library 116 in order to develop semantic elements and structure of a schema 118. The scripts 109 can be written in a scripting language such as JavaScript. In one implementation, the developer user specifies the script or portions thereof. In variations, the script 109 can be generated from input fields provided by the developer, and the input fields can then be combined with semantic elements to generate the script 109. An individual script can be associated with one or more different nodes of the schema 118. The developer can specify triggers with nodes of the schema 118. The triggers can determine when the script 139 is triggered to perform a function, in connection with other operations performed through the schema 118. Still further, a script library or source file can be maintained (e.g., as part of function library 116) and include all script functions that are utilized in the schema 118.
In an, implementation in which the end user device is, for example, a printer, the schema 118 can define a nodal tree in which individual nodes correspond to content that either contains other categories (category nodes 133) or printable documents (content consumption nodes 135). The schema 118 can define the navigation possibilities of the user operating the end user device (which can have limited user input functionality). As described below, with selection of category nodes 133, the user may view user interface content to enable further navigation. With selection of content consumption nodes 135, the printer 10 may access content from a designated source (e.g., network source and perform a print operation).
System 100 can include a runtime environment 150 that includes an app builder interface 120, a communication interface 130, and one or more components for implementing script logic. The app builder interface 120 receives the schema 118 and stores the schema 118 in association with an application identifier 121 in the application data store 122. Various events can cause the runtime environment 150 to select an application from the application data store 122, and to execute the application on behalf of the end-user device. In the example shown, the schema 118 is retrieved from the application data store 122. The specific schema 118 can be selected based on the particular application that is identified by external events, such as by user selection input on the end user device (e.g., printer 10).
In one implementation, the communication interface 130 of the runtime environment 150 can implement an application by accessing the corresponding schema 118 from the application data store 122 (e.g., in response to user input). For example, the communication interface 130 receives input corresponding to navigation input 125, and uses the navigation input to navigate amongst nodes of the schema 118. With navigation of nodes of schema 118, the communication interface identifies one of (i) category nodes 133, or (ii) content consumption nodes 135. If the navigation input 125 results in the selection of a category node 133, the communication interface can, from the schema 118, display user interface content 143. If the navigation input 125 results in the selection of one of the content consumption node 135, the communication interface 130 can communicate user interface content 143 along with a content reference 147 (or command) that directs the printer 10 to consume content from a particular location. For example, content reference 147 can direct the printer 10 to a cloud service 149 where a specific context input 151 is provided, or to a local source in the file directory of the printer 10. The input can be based on the navigation state resulting from the navigation input 125 of the user.
As noted, the schema 118 can include one or more scripts 139 that execute in response to conditions, events or context. Each script 139 can include triggers that cause execution of the script in response to conditions or events (e.g., selection of a particular node by navigation input 125). In one implementation, the individual scripts 139 specified in schema 118 are processed by the script execution component 140. A script output 145 can be communicated to the communication interface 130, where it can result in further nodal navigation, user interface content 143 (e.g., display user interface corresponding to functionality provided by the script 139) and/or content reference 147. Various kinds of functions or operations can be specified as a result of the execution of the script 139. Among the functions that can be performed, the script 139 can implement or provide an authentication handler 142 for a particular resource, such as a content resource where the printer 10 accesses content from a content source. For example, a category node of the schema 118 can point to a script for providing an authentication handler 142 that handles non-standard custom authentication logic.
The script execution component 140 can be triggered to execute script 139 in response to a trigger 137. The trigger 137 can be generated by logic, such as an event handler 144, that detects a schema state 141 of the schema after the user initiates use of the corresponding application. The event handler 144 can maintain the schema state 141 as the user navigates through the nodal hierarchy of the schema 118. Specific kinds of user input can also be detected and handled by the event handler 144. Thus, user input can affect schema state 141, result in the generation of node content (associated with category nodes 133 and/or content consumption nodes 135), and/or result in execution of one or more scripts 139 through the script execution 140.
In some variations, a feed handler 146 can execute as part of the logic provided by the script 139 to update the nodal hierarchy of the schema 118 with additional nodal trees or branches (update 153). The feed handler 146 can generate the update 153 in response to events or conditions. In one implementation, the feed handler 146 generates the update 153 based on schema state 141. In variations, feed handler 146 can respond to the user interface content 143. Various kinds of user interface content 143 can be used by the feed handler, such as, for example, the type of printer 10. As a specific example, a developer can generate script 139 to implement the feed handler 146 so that if the printer 1010 is a black and white printer, the user interface content 143 causes the feed handler 146 to update 153 schema 118 with nodes for content retrieval that are optimized for grayscale.
Execution of the scripts 139 can result in script output 145, such as user interface input for an authentication screen etc. In this way, the developer can utilize scripts 139 to augment er configure functionality of an application implemented through system 100.
Methodology
With reference to
During runtime, the schema 118 can be accessed (220). The system 100, for example, can implement the schema 118 to coordinate and specify various network-side operations that are individually responsive to user input. In one implementation, the script 139 can be embedded, or otherwise integrated with the one or more developer-specified nodes of the nodal hierarchy (222). For example, the script can be implemented so that it is triggered in connection with user selection of specific nodes that comprise the schema 118.
In runtime, user input is processed that is selective of individual nodes that comprise the schema 118 (230). Various outcomes can result from processing input in context of schema 118. In particular, user input that corresponds to selection of a category node can result in the generation of user interface content that provides the end user the opportunity to select one or more other category nodes (232).
Still further, some nodes can be associated with scripts, resulting in execution of the script (234). For example, the script 139 can be linked for triggering in response to selection input received by multiple nodes of the schema 118. The execution of the script can result in the generation of user interface content, as well as output (e.g., authentication output) that is specific to functionality of the script.
Still further, some nodes (content consumption nodes) can specify sources (e.g., network address or URL, local file) where content for consumption is located. The content consumption node 135 can result in the system 100 communicating, for example, a link to the end user device (e.g., printer), causing the printer to access and locate a content site where content located by the communicated link is provided. In the case of a printer, the content consumption node 135 can, for example, identify or provide documents that are outputted by the printer as a result of execution of the application identified by the schema 118.
Example Schema Implementation
The following provides an example of schema 310, such as described with an example of
According to some examples, the script functionality can include authentication handler 362, event handler 364, and feed handler 366. The authentication handler 362 can, for example, perform an authentication operation 361 to authenticate a user (or user action) when a specific category node 352 or content consumption node is selected with the user input. In some implementations, the result of the authentication operation can correspond to user interface content that is specific for the authentication operation. The authentication handler 362 can perform custom authentication based on the instructions contained in the script 360. By way of example, the following script can implement an authentication handler, in accordance with examples described herein:
The event handler 364 can be associated with, for example, one or more of the content consumption nodes 354, and/or one or more of the category nodes 352. The event handler 364 can provide one or more triggers for performing operations of the script 360. In this regard, the event handler can 364 respond to events 363 that occur with selection of content nodes or content consumption nodes 354. By way of example, the following script can implement the event handler 364, in accordance with examples described herein:
Still further, the feed handler 366 can be associated with one of the category nodes 352, and be responsive to some input content 365 to generate additional schema portions. By way of example, the following script can implement the feed handler 366, in accordance with examples described herein:
<category id=“11” src=“script:getSubTree( )”/>
In one implementation, the script 360 can be used to integrate different functional components with multiple nodes of the schema 350. In variations, multiple scripts can be implemented for the schema 350.
Hardware Diagram
In an embodiment, computer system 400 includes processor 404, main memory 406 (including non-transitory memory), storage device 410, and communication interface 418. Computer system 400 includes at least one processor 404 for processing information. Computer system 400 also includes a main memory 406, such as a random access memory (RAM) or other dynamic storage device, for storing information and instructions to be executed by processor 404. Main memory 406 also may be used for storing temporary variables or other intermediate information during execution of instructions to be executed by processor 404. Computer system 400 may also include a read only memory (ROM) or other static storage device for storing static information and instructions for processor 404. A storage device 410, such as a magnetic disk or optical disk, is provided for storing information and instructions. The communication interface 418 may enable the computer system 400 to communicate with one or more networks through use of the network link 420 (wireless or wireline).
In one example, the storage device 410 can store schemas 458 for different applications. Each schema can define a hierarchy of category nodes and content consumption nodes (collectively “nodes 457”) and scripts 459. Other resources for implementing applications using the schemas 458, such as scripting function libraries, can also be stored with the storage device 410. The schemas 458 can be specified by, for example, developers, using a declarative language model. The memory 406 can store instructions 413 for implementing components of system 100, including associating script functionality with implementation of an application using a particular schema 458. The schema 458, when executed, can result in the implementation of other functionality, such as the authentication handler, event handler, or feed handler.
Computer system 400 can include display 412, such as a cathode ray tube (CRT), a LCD monitor, and a television set, for displaying information to a user. An input device 414 is coupled to computer system 400 for communicating information and command selections to processor 404. The input device 414 can correspond to, for example, a touch-screen or touch sensitive sensor. Other examples of input device 414 include a mouse, a trackball, or cursor direction keys for communicating direction information and command selections to processor 404 and for controlling cursor movement on display 412. While only one input device 414 is depicted in
Although illustrative embodiments have been described in detail herein with reference to the accompanying drawings, variations to specific embodiments and details are encompassed by this disclosure. It is intended that the scope of embodiments described herein be defined by claims and their equivalents. Furthermore, it is contemplated that a particular feature described, either individually or as part of an embodiment, can be combined with other individually described features, or parts of other embodiments. Thus, absence of describing combinations should not preclude the inventor(s) from claiming rights to such combinations.
Filing Document | Filing Date | Country | Kind |
---|---|---|---|
PCT/US2013/024230 | 1/31/2013 | WO | 00 |
Publishing Document | Publishing Date | Country | Kind |
---|---|---|---|
WO2014/120227 | 8/7/2014 | WO | A |
Number | Name | Date | Kind |
---|---|---|---|
6907395 | Hunt et al. | Jun 2005 | B1 |
7490316 | Chan et al. | Feb 2009 | B2 |
7630877 | Brown et al. | Dec 2009 | B2 |
8341732 | Croft | Dec 2012 | B2 |
8375429 | Mondal | Feb 2013 | B2 |
8688820 | Bhogi | Apr 2014 | B1 |
8875102 | Feng | Oct 2014 | B1 |
8885192 | Rowson | Nov 2014 | B2 |
9342301 | Koutrika | May 2016 | B2 |
20020059325 | Beizer | May 2002 | A1 |
20040078373 | Ghoneimy | Apr 2004 | A1 |
20050273496 | Jean | Dec 2005 | A1 |
20080222160 | MacDonald | Sep 2008 | A1 |
20100095272 | Shukla et al. | Apr 2010 | A1 |
20110078705 | MacLinovsky et al. | Mar 2011 | A1 |
20120143866 | Mameri et al. | Jun 2012 | A1 |
20120198457 | Leonelli et al. | Aug 2012 | A1 |
20120291006 | Quine | Nov 2012 | A1 |
20130104100 | Mueller | Apr 2013 | A1 |
20130271783 | Ganesan | Oct 2013 | A1 |
20140208294 | Randhir | Jul 2014 | A1 |
20140368880 | Venugopal | Dec 2014 | A1 |
Entry |
---|
Helen Kosova, “TestComplete Script Extensions: StringUtils Object,” SmartBear Software, Oct. 8, 2008, pp. 1-5. Available at: <blog.smartbear.com/software-quality/bid/170167/TestComplete-Script-Extensions-StringUtils-Object>. |
International Searching Authority, International Search Report and Written Opinion, Sep. 5, 2013, 10 pages. |
PowerBuilder, Sybase Inc.—v 7.6, Jan. 1, 2013, 1 page, Available at: sybase.in/products/modelingdevelopment/powerbuilder>. |
Tim Kraska, “Building Database Appilcations in the Cloud,” Diss, ETH No. 18832, Swiss Federal Institute of Technology, Zurich, Mar. 10, 2010, pp. 1-227, Available at: <e-collection.library.ethz.ch/eserv/eth:924/eth-924-02.pdf>. |
Number | Date | Country | |
---|---|---|---|
20150370577 A1 | Dec 2015 | US |