Movatterモバイル変換


[0]ホーム

URL:


US11120212B2 - Creating and modifying applications from a mobile device - Google Patents

Creating and modifying applications from a mobile device
Download PDF

Info

Publication number
US11120212B2
US11120212B2US16/727,809US201916727809AUS11120212B2US 11120212 B2US11120212 B2US 11120212B2US 201916727809 AUS201916727809 AUS 201916727809AUS 11120212 B2US11120212 B2US 11120212B2
Authority
US
United States
Prior art keywords
application
local
received
received instruction
template
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
US16/727,809
Other versions
US20200134257A1 (en
Inventor
Barath Balasubramanian
Evan Cohen
Olivier Colle
Irina Koulinitch
Shrey Sangal
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Technology Licensing LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Technology Licensing LLCfiledCriticalMicrosoft Technology Licensing LLC
Priority to US16/727,809priorityCriticalpatent/US11120212B2/en
Assigned to MICROSOFT TECHNOLOGY LICENSING, LLCreassignmentMICROSOFT TECHNOLOGY LICENSING, LLCASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS).Assignors: COHEN, EVAN, COLLE, OLIVIER, KOULINITCH, IRINA, SANGAL, SHREY, BALASUBRAMANIAN, BARATH
Publication of US20200134257A1publicationCriticalpatent/US20200134257A1/en
Application grantedgrantedCritical
Publication of US11120212B2publicationCriticalpatent/US11120212B2/en
Activelegal-statusCriticalCurrent
Anticipated expirationlegal-statusCritical

Links

Images

Classifications

Definitions

Landscapes

Abstract

Examples of the disclosure provide for modifying an application from a mobile device. An instruction to modify an application including one or more documents is received at the mobile device. It is determined at the mobile device whether the received instruction is associated with a first type of modification and/or a second type of modification. In response to determining that the received instruction is associated with the first type of modification, a local instance of the document stored at the mobile device is modified at the mobile device. In response to determining that the received instruction is associated with the second type of modification, a remote instance of the document stored at a server device is modified at the server device. Aspects of the disclosure enable a mobile device to strategically modify an application to facilitate managing local resources.

Description

CROSS-REFERENCE TO RELATED APPLICATION
This application is a continuation application of an claims priority to U.S. patent application Ser. No. 14/936,601, entitled “CREATING AND MODIFYING APPLICATIONS FROM A MOBILE DEVICE,” filed on Nov. 9, 2015, the disclosure of which is incorporated by reference in its entirety.
BACKGROUND
Creating an executable computer program often requires a broad range of expertise. For example, creating an executable computer program generally involves generating algorithms, verifying a correctness of the algorithms, and implementing the algorithms into a programming language. A developer may add code to provide application data access at runtime. This often requires developer skills in writing the code that affects the application data access at runtime. In addition, developers typically have limited control over storage locations for an application, with the storage location frequently dictated by the developer environment. When compared to desktop computers, mobile devices (e.g., a mobile telephone, a smartphone, a phablet, a tablet) generally have fewer local resources (e.g., slower processing speed, less memory, smaller screen size). Using a conventional mobile device to create and/or modify an executable computer program may be tedious and/or time consuming. However, at least some users increasingly use mobile devices due to their relative convenience and/or increased connectivity.
SUMMARY
Examples of the disclosure provide systems and methods for modifying an application from a mobile device. In some examples, a document is presented at a mobile device. The document may be included in an application. An instruction to modify the application is received at the mobile device, and it is determined at the mobile device whether the received instruction is associated with a first type of modification and/or a second type of modification. In response to determining that the received instruction is associated with the first type of modification, a local instance of the document stored at the mobile device is modified at the mobile device. In response to determining that the received instruction is associated with the second type of modification, a remote instance of the document stored at a server device is modified at the server device.
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
FIG. 1 is a block diagram of an example environment including a mobile client coupled to a cloud system.
FIG. 2 is a block diagram of an example environment in which an application may be generated and/or modified.
FIG. 3 is a relationship diagram of an example dataset.
FIG. 4 is a block diagram of an example environment in which an application may be generated and/or modified.
FIGS. 5 and 6 are flowcharts of an example method for modifying an application.
FIG. 7 is a block diagram of an example computing device that may be used to modify an application.
Corresponding reference characters indicate corresponding parts throughout the drawings.
DETAILED DESCRIPTION
The subject matter described herein is related generally to document modification and, more particularly, to modifying an application including one or more documents from a mobile device. As described herein, a mobile device may refer to any mobile computing device including, without limitation, a mobile telephone, a smartphone, a phablet, a tablet, a portable media player, or a netbook. For example, a mobile device may include any computing device that includes a portable power supply (e.g., a battery). In some examples, one or more operations are executed or implemented while resources associated with the mobile device are managed. At least some operations may be implemented at the mobile device while other operations may be implemented at a server device communicatively coupled to the mobile device. For example, the mobile device may determine whether an instruction to modify a document is associated with a first type of modification and/or a second type of modification. If the instruction is associated with the first type of modification, an instance of the document stored at the mobile device is modified. On the other hand, if the instruction is associated with the second type of modification, an instance of the document stored at the server device is modified.
The examples described herein determine whether to implement at least some operations locally or remotely to facilitate managing local resources. For example, the examples described herein may implement one or more operations based on whether an instruction is associated with a first type of modification and/or a second type of modification. The examples described herein may be implemented using computer programming or engineering techniques including computing software, firmware, hardware, or a combination or subset thereof. Aspects of the disclosure enable documents, applications, and/or packages to be generated and/or modified in an efficient and effective manner for increased performance. For example, a first user instruction associated with a first type of modification may be implemented locally at a mobile device. On the other hand, a second user instruction associated with a second type of modification may be implemented remotely at a server device. In such examples, a change or manipulation may be strategically implemented at a mobile device and/or a server device to facilitate managing computational, processing, memory, and/or temporal resources.
The examples described herein manage one or more operations or computations associated with generating and/or modifying a package, an application and/or a document. By generating and/or modifying packages, applications, and/or documents in the manner described in this disclosure, some examples reduce processing load and/or increase processing speed by strategically managing computational, processing, memory, and/or temporal resources. The net effect of the management process improves performance of the mobile device and/or the server device in hosting a package, application, and/or document. Additionally, some examples may conserve memory, reduce network bandwidth usage, improve operating system resource allocation, and/or improve communication between computing devices by streamlining at least some operations, improve user efficiency and/or user interaction performance via user interface interaction, and/or reduce error rate by automating at least some operations.
Moreover, aspects of the disclosure provide a developer environment that any user, regardless of development experience or lack thereof, may utilize to create and/or modify a package, application, and/or document. General workplace computing skills may be translatable by a mobile device into computing coding or program development skills. Because the applications are generated and/or modified automatically from templates and source data, they further increase efficiency of a developer or user in development and/or modification of an application. In addition, the development environment is translated to a non-developer user in such a way as to provide application development for any user, increasing the speed of application development for the user.
For example, a template including a data schema and a set of data for the template may be received. The set of data may be bound to the template (e.g., the template may be populated) based on the data schema. A package, application, and/or document may be generated and/or modified without having to write code, thereby providing increased user interface functionality, in addition to bringing developer capabilities to a non-developer for generating and/or modifying packages, applications, and/or documents.
FIG. 1 is a block diagram of anexample environment100 including acloud system110 and a mobile device ormobile client120 coupled to thecloud system110. Themobile client120 may, for example, communicate with thecloud system110 to generate and/or modify one or more applications or “apps”130 (e.g., web app, mobile app, logic app, application programming interface (API) app). In some examples, theenvironment100 includes one ormore cloud systems110, and themobile client120 may be coupled to the one ormore cloud systems110 via one ormore networks140.Example networks140 include a personal area network, a local area network, a wide area network, a cellular or mobile network, and the Internet. Alternatively, thenetwork140 may be any communication medium that enables thecloud system110 to communicate with themobile client120 and/or with anothercloud system110.
Thecloud system110 is configured to perform one or more operations. For example, thecloud system110 may include and/or have access to acommunication server150, anauthentication server160, and/or anapplication server170. In some examples, thecommunication server150 is configured to control communication (e.g., data flow) between one or more computing devices (e.g.,cloud system110,communication server150,authentication server160, application server170) and themobile client120. Communication between the one or more computing devices and themobile client120 may occur using any protocol or mechanism over any wired or wireless connection. For example, the one or more computing devices may communicate with themobile client120 via thenetwork140.
Themobile client120 may initiate a request to the cloud system110 (e.g., via the communication server150) to generate, modify, and/or access one ormore applications130 hosted on and/or by thecloud system110. For example, themobile client120 may access data associated with thecloud system110 to perform one or more operations. In some examples, theauthentication server160 is configured to manage, store, and/or have access to registered login information180 (e.g., identification, password), and, based on the registeredlogin information180, determine whether themobile client120 or auser190 associated with themobile client120 is authorized to access data associated with thecloud system110. For example, the registeredlogin information180 may be associated with a registered mobile client and/or a registered user authorized to access data associated with the cloud system110 (e.g., a whitelist). Additionally or alternatively, the registeredlogin information180 may be associated with a registered mobile client and/or a registered user not authorized to access data associated with the cloud system110 (e.g., a blacklist).
Theauthentication server160 may receive user input (e.g., identification, password) from the mobile client120 (e.g., via the communication server150), and compare the received user input with the registeredlogin information180 to determine whether themobile client120 oruser190 is authorized to access data associated with thecloud system110. For example, upon determining that the received user input matches or corresponds to registeredlogin information180 associated with a whitelist, theauthentication server160 determines that themobile client120 is authorized to access data associated with thecloud system110 and selectively allows themobile client120 to access data associated with thecloud system110. On the other hand, upon determining that the received user input matches or corresponds to registeredlogin information180 associated with a blacklist or does not match or correspond to registeredlogin information180, theauthentication server160 determines that themobile client120 is not authorized to access data associated with thecloud system110 and selectively restricts themobile client120 from accessing data associated with thecloud system110.
Theauthentication server160 may transmit a security token (e.g., single sign-on (SSO) token, reduced sign-on (RSO) token) to the mobile client120 (e.g., via the communication server150). The security token is configured to allow themobile client120 to access data associated with one or more computing devices (e.g.,cloud system110,communication server150,authentication server160, application server170) without providing user input for each computing device. In some examples, themobile client120 and/oruser190 may be authorized to access (or restricted from accessing) one or more computing devices and/or perform one or more operations based on a role associated with themobile client120 and/or user190 (e.g., administrator, author, user, writer, reader, parent, child).
In some examples, theapplication server170 is configured to manage and/or store one ormore applications130 and communicate with the mobile client120 (e.g., via the communication server150) to allow theuser190 to generate, modify, and/or access one ormore applications130 using themobile client120. Theapplication130 may be configured to perform one or more operations and may include any combination of computing software, firmware, hardware, or a combination or subset thereof. For example, theapplication130 may be configured to present an image or a series of images (e.g., a video) on a display, play audio, and/or send a service call to access data associated with another computing device (e.g., cloud system110).
Anapplication130, when executed by a processor, operates to perform a functionality. Anapplication130 may communicate with other applications or services, such as web services accessible via thenetwork140. For example, anapplication130 may represent a downloaded client-side application that corresponds to server-side services executing at thecloud system110. In some examples,applications130 may be configured to communicate with thecloud system110 during runtime, or may share and/or aggregate data between client-side services and cloud services.
FIG. 2 is a block diagram of anexample environment200 in which one or more applications130 (shown inFIG. 1) may be generated and/or modified. In some examples, theenvironment200 includes one ormore cloud systems110.Example cloud systems110 include adata source210 configured to manage and/orstore data215, a document server220 (e.g., application server170) configured to generate and/or modify one ormore documents225, and/or adocument gallery230 configured to manage and/or store one ormore documents225. Acloud system110 may include any combination of components that enables thecloud system110 to function as described herein.
Anapplication130 includes one ormore documents225 that are generated and/or modified based ondata215. Thedata215 may be associated with a data schema. For example, thedata215 may be formatted as spreadsheet data and arranged in one or more rows and one or more columns.Data215 may include one or more of user data, remote data, shared data, enterprise data, public data, dynamic data, local data, or any other accessible data.
Thedocument server220 may include, for example, atemplate gallery240 configured to host one ormore templates245, apackager component250 configured to generate a package (e.g., an application130) including one ormore documents225, and/or apublisher component260 configured to publish one or more packages orapplications130. Anapplication130, for example, may be generated by extractingdata215, and populating atemplate245 with thedata215. Additionally or alternatively, anapplication130 may be published by transmitting a data-populated template245 to thedocument gallery230.
Thetemplate gallery240 is configured to manage and/or store one ormore templates245 and/or metadata associated with thetemplates245. Atemplate245 may be selected or used in application design.Example templates245 may include application templates for, without limitation, asset management applications, catalog applications, contract applications, customer relationship management (CRM) applications, dashboard and report applications, events and calendars applications, timesheet applications, expense tracking and/or reporting applications, media applications, multi-media applications, personal management applications, travel applications, project management applications, and so on.
Various templates245 may provide different visual layout options or different data exposure components. In some examples, eachtemplate245 may be associated with a respective template schema. For example, atemplate245 may include one or more template fields that may be associated with a predetermined configuration (e.g., type, size) ofdata215.Data215 may be mapped to thetemplate245 in accordance with the template schema. In some examples, thetemplate gallery240 may have one or more representations of thetemplates245 that may be customized via user interaction. Atemplate245 may be associated with an identifier (e.g., a templateID) that uniquely identifies thetemplate245.
Thepackager component250 is configured to generate a package (e.g., an application130) including one ormore documents225. For example, thepackager component250 may retrieve or receive, from thedata source210,data215, retrieve or receive, from thetemplate gallery240, atemplate245, and populate thetemplate245 with thedata215 to generate at least a portion of the package. In at least some examples, thepackager component250 updates a connection string associated with adata source210.
Thepackager component250 may transmit the package to thepublisher component260, which is configured to generate a compiled version of the package. Thepublisher component260 is configured to communicate with thedocument gallery230 such that thedocuments225 associated with the package are available for retrieval (e.g., via download) by amobile client120. In at least some examples, a document representation may be compiled into compiled script representations that may be processed by amobile client120. Once a compiledapplication130 is transmitted to amobile client120, themobile client120 may initialize an application host container component to host theapplication130. Theapplication130 may run inside themobile client120, on which a user is able to interact with theapplication130.
Afirst user270, for example, may operate or use a first mobile client275 (e.g., mobile client120) to access one ormore cloud systems110. For example, the firstmobile client275 may retrieve anapplication130, and present adocument225 included in theapplication130 to afirst user270. In at least some examples, the firstmobile client275 may be used to generate one ormore documents225. For example, the firstmobile client275 may communicate with thedata source210, thedocument server220, and/or thedocument gallery230 via thenetwork140. In some examples, the firstmobile client275 may retrievedata215 from thedata source210, retrieve atemplate245 from thedocument server220, and/or populate thedocument template245 with thedata215 to generate adocument225. The firstmobile client275 may transmit the generateddocument225 to thedocument gallery230 such that the generateddocument225 is available for retrieval (e.g., via download) by another computing device (e.g., a mobile client120).
In some examples, thedocument server220 and/or thedocument gallery230 may include or be coupled to anauthentication server160 that determines whether a mobile client or a user associated with the mobile client is authorized to retrieve thedocument225. Additionally or alternatively, theauthentication server160 may be used to determine a level of authorization (e.g., a role) granted to the mobile client and/or the user. For example, thefirst user270 and/or firstmobile client275 may be associated with an author role (e.g., a role with edit permissions), which is authorized to generate and/or modify adocument225. On the other hand, asecond user280 and/or a secondmobile client285 may be associated with a reader role (e.g., a role with read permissions), which is authorized to access and/or view thedocument225 but not generate and/or modify thedocument225.
In some examples, the firstmobile client275 may allow thefirst user270 to select adata source210 from which to retrievedata215 such that adocument225 may be generated and/or modified. In at least some examples, thedata source210 may include or be coupled to anauthentication server160 that determines whether the firstmobile client275 or thefirst user270 is authorized to access thedata215. To identify one ormore data sources210 from whichdata215 is retrievable, the firstmobile client275 may generate a service request to get one or more available connections (e.g., data sources210). Additionally or alternatively, the firstmobile client275 may generate a service request to get a desired connection. In some examples, the firstmobile client275 is configured to retrieve or receive a connection string and/or metadata from thedata source210.
Upon coupling the firstmobile client275 with adata source210, the firstmobile client275 may be used to access and/or navigate a desired resource (e.g., file, list) managed and/or stored at thedata source210. As shown inFIG. 3, thedata source210 may manage and/or store one or more resources, such as adataset310. Thedataset310 may have any schema that enables thedataset310 to function as described herein. For example, thedataset310 may include one or more elements that are arranged in one or more hierarchical levels. In some examples, the firstmobile client275 is configured to retrieve data by navigating and/or traversing thedataset310 at and/or across adataset level315 including one ormore datasets310, atable level320 including one or more tables325, and/or anitem level330 including one ormore items335.
Referring back toFIG. 2, the firstmobile client275 includes atemplate matcher component290 that is configured to analyze thedata215 and identify atemplate245 based at least on thedata215. Alternatively, thetemplate matcher component290 may be available in the cloud (e.g., as astandalone cloud system110 or included in another cloud system110).
In some examples, thetemplate matcher component290 is configured to periodically sync with thetemplate gallery240 to receive or retrieve one ormore templates245 and/or metadata associated with thetemplates245. Thetemplate matcher component290 may identify a data schema associated with thedata215, identify a template schema associated with atemplate245, and/or compare the data schema with the template schema to automatically identify thetemplate245. For example, thetemplate matcher component290 may identify a device form factor and table metadata, and identify atemplate245 that includes one or more template fields configured to present at least some of thedata215 in accordance with the device form factor. In some examples, the firstmobile client275 may present one ormore templates245 to theuser270, who may select atemplate245 to be used in place of thetemplate245 automatically identified by thetemplate matcher component290.
In some examples, thetemplate matcher component290 is configured to identify an identifier associated with an identified template245 (e.g., a templateID), generate a map between thedata215 and the template fields of the identifiedtemplate245, and/or transmit the identifier, map, and/or the connection string associated with thedata source210 to thedocument server220 or, more particularly, to thepackager component250. In at least some examples, thepackager component250 may retrieve or receive, from thetemplate gallery240, atemplate245 corresponding to the received identifier (e.g., the templateID) and populate thetemplate245 in accordance with the map. For example, thedocument server220 may include a screen layout generator configured to generate one or more screens based on a layout associated with thetemplate245 and/or thedata215 associated with thedata source210.
The firstmobile client275 includes adesigner component295 that allows thefirst user270 to modify and/or edit the package. In some examples, thedesigner component295 presents an interactive canvas or interactive design surface to a user (e.g., first user270). Thedesigner component295, for example, may receive user instruction to modify adocument225. In some examples, thedocument server220 is configured to host adocument225 associated with anapplication130 running on the firstmobile client275. For example, one ormore documents225 may be compiled into one or more document representations that are processed by the firstmobile client275. This enables collaboration as one or moremobile clients120 may have access to the document representation hosted at thedocument server220 and make one or more modifications to theapplication130 from themobile client120. In at least some examples, thedocument server220 may maintain a state of the document for changes that have been locally processed on the firstmobile client275.
FIG. 4 is a block diagram of anexample environment400 in which one or more applications130 (shown inFIG. 1) may be modified locally and/or remotely. Thedocument server220 may support a host of operations on thedocument225 and expose the operations to one or more mobile clients120 (e.g., first mobile client275) representing thedocument225 in a document form. Aremote instance410 of theapplication130 may be compiled into one or more script representations that may be processed by amobile client120. Theremote instance410 may be, for example, one ormore documents225 associated with a package (e.g., an application130) hosted at thedocument server220.
In some examples, themobile client120 may initialize ahost container component420 to host alocal instance430 of theapplication130. In this manner, theapplication130 may run inside themobile client120, on which a user is able to interact with theapplication130. Thelocal instance430 may be, for example, one ormore documents225 associated with a package (e.g., an application130) hosted at themobile client120. When a user interacts with the application130 (via the mobile client120), at least some interactions may be local to or self-contained on themobile client120. That is, the interactions may affect thelocal instance430 of theapplication130. For example, a local update is a modification to thelocal instance430 of theapplication130. Conversely, an interaction may affect theremote instance410 of theapplication130. For example, a remote update is a modification to theremote instance410 of theapplication130. For remote updates, themobile client120 may communicate with a cloud system110 (e.g., the document server220) to modify and/or update theremote instance410 of theapplication130.
Thedocument server220 is configured to modify and/or update the document representation. Local modifications may be recorded, analyzed, and/or processed on themobile client120 by, for example, leveraging local compiled rules and generating one or more calls asking thedocument server220 to update a document representation. A remote modification may include leveraging an application programming interface (API) associated with thedocument server220 and generating a call asking thedocument server220 to modify and/or edit the package, such as transmitting one or more design changes to thedocument server220. In some examples, themobile client120 is configured to determine whether a user instruction to modify and/or update anapplication130 is associated with a first type of modification (e.g., a local modification) and/or a second type of modification (e.g., a remote modification).
An example of a local operation is theme switching or theme changing. Theme switching is achieved by a local update of the application code (e.g., the local instance430) on themobile client120. Themobile client120 may record user actions and use local compiled rules to generate a script that theapplication130 executes to produce a result. In at least some examples, themobile client120 may issue anupdate request440 to thedocument server220 such that a server representation (e.g., the remote instance410) may be updated in an asynchronous, non-blocking manner. The update to the server representation enables othermobile clients120 listening to thedocument225 to get one or more updates made on themobile client120.
An example of a remote operation includes switching a layout and/or a template layout change. To switch a layout, for example, themobile client120 receives a user selection, and themobile client120 generates acall450 based on the user selection. Thecall450 may be transmitted to thedocument server220, for example, to remove the current layout and apply a new layout. Upon implementing thecall450, thedocument server220, which maintains a state of theapplication130, generates a call that updates the document representation of theapplication130 at the document server220 (e.g., remote instance410).
In some examples, thedocument server220 includes a screenlayout generator component460 configured to generate one or more screens based on a layout associated with thetemplate245 and/or thedata215 associated with thedata source210. Remote updates to thedocument225 may be incrementally compiled at thedocument server220 by anincremental compiler component470, and changes to the package (e.g., a delta480) may be monitored by theincremental compiler component470. Thedelta480, for example, may include one or more differences between a package before a modification and the package after the modification. Thedelta480 may be transmitted to themobile client120. In some examples, a response back to themobile client120 goes through thepackager component250.
Incremental compilation of thedocument225 and/or determination of thedelta480 are enabled by themobile client120 sending one or more server hashes of a local state of the application files. For example, when anapplication130 is generated, thedocument server220 may transmit a newly created package to themobile client120. For subsequent remote updates, themobile client120 may send the document server220 a hash list associated a local state of the application files, and thedocument server220 may generate an incremental package associated with one ormore documents225 incorporating changes requested by themobile client120. In some examples, the hash list may be used to determine one or more changes to the package (e.g., the delta480), and thedocument server220 may transmit thedelta480 to themobile client120, which may update a preview version of theapplication130 in real time.
FIG. 5 is a flowchart of anexample method500 including a plurality of operations to modify anapplication130 using a mobile client120 (e.g., first mobile client275). The example operations presented inFIG. 5 may be performed by one or more components described inFIG. 1, 2, or4, for example.
At510, adocument225 is presented at themobile client120. A package (e.g., an application130) may include thedocument225. An instruction to modify theapplication130 is received at520. For example, a user (e.g., first user270) may input the instruction at themobile client120. At530, it is determined whether the received instruction is associated with a first type of modification (e.g., a local modification) and/or a second type of modification (e.g., a remote modification). In response to determining that the received instruction is associated with the first type of modification, alocal instance430 of thedocument225 stored at themobile client120 is modified at540. Additionally or alternatively, in response to determining that the received instruction is associated with the second type of modification, aremote instance410 of thedocument225 stored at a cloud system110 (e.g., the document server220) is modified at550.
FIG. 6 is a detailed flowchart of themethod500. The example operations presented inFIG. 6 may be performed by one or more components described inFIG. 1, 2, or4, for example.
In some examples,data215 is identified at610, and atemplate245 is identified at620. For example, a user (e.g., first user270) may select adata source210 and/or itsdata215, which is analyzed by themobile client120, and thetemplate245 may be identified based on the analyzeddata215. The selection of thedata215 may be received from the user opening a file, for example. In at least some examples,data215 may be selected from one ormore data sources210. Alternatively, the user may select atemplate245, which is analyzed by themobile client120, and adata source210 and/or itsdata215 may be identified based on thetemplate245. The user may select atemplate245 from atemplate gallery240, for example.
At630, a call is generated based on the identified data and the identified template to generate an application, and the call is transmitted to a cloud system110 (e.g., the document server220). In response to receiving the call, thedocument server220 generates a package (e.g., application130). In at least some examples,data215 may be bound to atemplate245 based on a layout schema and/or a data schema. The schema may map, for example, thedata215 to template fields of the selectedtemplate245, for example. Thedocument server220 transmits the generated package to themobile client120, and one ormore documents225 are received from thedocument server220 at640.
At510, adocument225 is presented at themobile client120. An instruction to modify theapplication130 is received at520, and themobile client120 determines whether the received instruction is associated with a first type of modification (e.g., a local modification) and/or a second type of modification (e.g., a remote modification) at530. For example, an instruction associated with a theme change may be determined to be associated with the first type of modification. In at least some examples, themobile client120 may determine that the received instruction is associated with a theme change and, based on the determination, associate the received instruction with the first type of modification. On the other hand, an instruction associated with a template layout change may be determined to be associated with the second type of modification. In at least some examples, themobile client120 may determine that the received instruction is associated with a template layout change and, based on the determination, associate the received instruction with the second type of modification. An instruction associated with a data change may, for example, be determined to be associated with the first type of modification and/or the second type of modification. For example, a user may desire to update at least somedata215 locally without modifying theremote instance410.
In some examples, a request associated with a local modification may be transmitted to thedocument server220 to modify a representation of thedocument225 such that the user accessing thedata215 would access a modified representation of thedata215 while another user accessing thedata215 would access an unmodified representation of the data215 (e.g., thedata215 without the local modification). Alternatively, the user may desire to update at least somedata215 globally (e.g., locally and remotely) such that another user accessing thedata215 would access a modified representation of thedata215.
In some examples, themobile client120 may determine whether the received instruction is associated with a data schema change. For example, a user may desire to modify a data schema associated with adataset310. In response to determining that the received instruction is associated with the data schema change, themobile client120 may change the data schema and match the changed data schema to a template layout. Alternatively, themobile client120 may generate a call to thedocument server220 to change the data schema and match the changed data schema to the template layout. Similarly, in some examples, themobile client120 may determine whether the received instruction is associated with a template layout change. For example, a user may desire to modify a template layout associated with atemplate245. In response to determining that the received instruction is associated with the template layout change, themobile client120 may change the template layout and match the changed template layout to a data schema. Alternatively, themobile client120 may generate a call to thedocument server220 to change the template layout and match the changed template layout to the data schema.
In response to determining that the received instruction is associated with the first type of modification, alocal instance430 of thedocument225 stored at themobile client120 is modified at540. Additionally or alternatively, in response to determining that the received instruction is associated with the second type of modification, aremote instance410 of thedocument225 stored at a cloud system110 (e.g., the document server220) is modified. For example, a call to modify aremote instance410 of thedocument225 may be generated at650, and the call may be transmitted to thedocument server220 to modify theremote instance410 of thedocument225.
FIG. 7 is a block diagram of anexample operating environment700 that may be used to generate a deferrable data flow in the environment100 (shown inFIG. 1). The operatingenvironment700 is only one example of a computing and networking environment and is not intended to suggest any limitation as to the scope of use or functionality of the disclosure. The operatingenvironment700 should not be interpreted as having any dependency or requirement relating to any one or combination of components illustrated in theexample operating environment700.
The disclosure is operational with numerous other computing and networking environments or configurations. While some examples of the disclosure are illustrated and described herein with reference to the operatingenvironment700 being or including a mobile client120 (shown inFIGS. 1, 2, and 4), aspects of the disclosure are operable with any computing system or device (e.g.,cloud system110,communication server150,authentication server160,application server170,data source210,document server220,document gallery230,template gallery240,packager component250,publisher component260, firstmobile client275, secondmobile client285,host container component420, screenlayout generator component460, incremental compiler component470) that executes instructions to implement the operations and functionality associated with the operatingenvironment700.
For example, the operatingenvironment700 may include a mobile device, a mobile telephone, a phablet, a tablet, a portable media player, a netbook, a laptop, a desktop computer, a personal computer, a server computer, a computing pad, a kiosk, a tabletop device, an industrial control device, multiprocessor systems, microprocessor-based systems, set top boxes, programmable consumer electronics, network computers, minicomputers, mainframe computers, distributed computing environments that include any of the above systems or devices, and the like. The operatingenvironment700 may represent a group of processing units or other computing devices. Additionally, any computing device described herein may be configured to perform any operation described herein including one or more operations described herein as being performed by another computing device.
With reference toFIG. 7, an example system for implementing various aspects of the disclosure may include a general purpose computing device in the form of acomputer710. Components of thecomputer710 may include, but are not limited to, aprocessing unit720, asystem memory725, and asystem bus730 that couples various system components including thesystem memory725 to theprocessing unit720. Thesystem bus730 may be any of several types of bus structures including a memory bus or memory controller, a peripheral bus, and a local bus using any of a variety of bus architectures. By way of example, and not limitation, such architectures include Industry Standard Architecture (ISA) bus, Micro Channel Architecture (MCA) bus, Enhanced ISA (EISA) bus, Video Electronics Standards Association (VESA) local bus, and Peripheral Component Interconnect (PCI) bus also known as Mezzanine bus.
Thesystem memory725 includes any quantity of media associated with or accessible by theprocessing unit720. For example, thesystem memory725 may include computer storage media in the form of volatile and/or nonvolatile memory such as read only memory (ROM)731 and random access memory (RAM)732. TheROM731 may store a basic input/output system733 (BIOS) that facilitates transferring information between elements withincomputer710, such as during start-up. TheRAM732 may contain data and/or program modules that are immediately accessible to and/or presently being operated on by processingunit720. For example, thesystem memory725 may store computer-executable instructions, communication data, authentication data, document data, and other data.
Theprocessing unit720 may be programmed to execute the computer-executable instructions for implementing aspects of the disclosure, such as those illustrated in the figures (e.g.,FIGS. 5 and 6). By way of example, and not limitation,FIG. 7 illustrates operating system734,document programs735,other program modules736, andprogram data737. Theprocessing unit720 includes any quantity of processing units, and the instructions may be performed by theprocessing unit720 or by multiple processors within the operatingenvironment700 or performed by a processor external to the operatingenvironment700.
Thesystem memory725 may include, for example, atemplate matcher component290 and/or adesigner component295. Additionally or alternatively, thesystem memory725 may include any combination of apackager component250, apublisher component260, ahost container component420, a screenlayout generator component460, and/or anincremental compiler component470. Upon programming or execution of these components, the operatingenvironment700 and/orprocessing unit720 is transformed into a special purpose microprocessor or machine. For example, thetemplate matcher component290, when executed by theprocessing unit720, causes theprocessing unit720 to analyzedata215, identify atemplate245 based on thedata215, and transmit a request to generate a package based on the analyzeddata215 and the identifiedtemplate245; and/or thedesigner component295, when executed by theprocessing unit720, causes theprocessing unit720 to receive a generated package, receive instruction to modify the generated package, determine whether the received instruction is associated with a first type of modification and/or a second type of modification, and modify alocal instance430 of the package and/or aremote instance410 of the package based on the determination. Although theprocessing unit720 is shown separate from thesystem memory725, embodiments of the disclosure contemplate that thesystem memory725 may be onboard theprocessing unit720 such as in some embedded systems.
Thecomputer710 may also include other removable/non-removable, volatile/nonvolatile computer storage media. By way of example only,FIG. 7 illustrates ahard disk drive741 that reads from or writes to non-removable, nonvolatile magnetic media, amagnetic disk drive742 that reads from or writes to a removable, nonvolatile magnetic disk743 (e.g., a floppy disk, a tape cassette), and anoptical disk drive744 that reads from or writes to a removable, nonvolatile optical disk745 (e.g., a compact disc (CD), a digital versatile disc (DVD)). Other removable/non-removable, volatile/nonvolatile computer storage media that may be used in the example operating environment include, but are not limited to, flash memory cards, digital video tape, solid state RAM, solid state ROM, and the like. Thehard disk drive741 may be connected to thesystem bus730 through a non-removable memory interface such asinterface746, andmagnetic disk drive742 andoptical disk drive744 may be connected to thesystem bus730 by a removable memory interface, such asinterface747.
The drives and their associated computer storage media, described above and illustrated inFIG. 7, provide storage of computer-readable instructions, data structures, program modules and other data for thecomputer710. InFIG. 7, for example,hard disk drive741 is illustrated as storingoperating system754,document programs755,other program modules756 andprogram data757. Note that these components may either be the same as or different from operating system734,document programs735,other program modules736, andprogram data737.Operating system754,document programs755,other program modules756, andprogram data757 are given different numbers herein to illustrate that, at a minimum, they are different copies.
Thecomputer710 includes a variety of computer-readable media. Computer-readable media may be any available media that may be accessed by thecomputer710 and includes both volatile and nonvolatile media, and removable and non-removable media.
By way of example, and not limitation, computer-readable media may comprise computer storage media and communication media. Computer storage media includes 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.ROM731 andRAM732 are examples of computer storage media. Computer storage media are tangible and mutually exclusive to communication media. Computer storage media for purposes of this disclosure are not signals per se. Example computer storage media includes, but is not limited to, hard disks, flash drives, solid state memory, RAM, ROM, electrically erasable programmable read-only memory (EEPROM), flash memory or other memory technology, CDs, DVDs, or other optical disk storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which may be used to store the desired information and which may accessed by thecomputer710. Computer storage media are implemented in hardware and exclude carrier waves and propagated signals. Any such computer storage media may be part ofcomputer710.
Communication media typically embodies 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 includes any information delivery media. 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, communication media includes wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, RF, infrared and other wireless media.
A user may enter commands and information into thecomputer710 through one or more input devices, such as a pointing device761 (e.g., mouse, trackball, touch pad), akeyboard762, a microphone763, and/or an electronic digitizer764 (e.g., tablet). Other input devices not shown inFIG. 7 may include a joystick, a game pad, a controller, a satellite dish, a camera, a scanner, an accelerometer, or the like. These and other input devices may be coupled to theprocessing unit720 through auser input interface765 that is coupled to thesystem bus730, but may be connected by other interface and bus structures, such as a parallel port, game port or a universal serial bus (USB).
Information, such as text, images, audio, video, graphics, alerts, and the like, may be presented to a user via one or more presentation devices, such as amonitor766, aprinter767, and/or aspeaker768. Other presentation devices not shown inFIG. 7 may include a projector, a vibrating component, or the like. These and other presentation devices may be coupled to theprocessing unit720 through a video interface769 (e.g., for amonitor766 or a projector) and/or an output peripheral interface770 (e.g., for aprinter767, aspeaker768, and/or a vibration component) that are coupled to thesystem bus730, but may be connected by other interface and bus structures, such as a parallel port, game port or a USB. In some examples, the presentation device is integrated with an input device configured to receive information from the user (e.g., a capacitive touch-screen panel, a controller including a vibrating component). Note that themonitor766 and/or touch screen panel may be physically coupled to a housing in which thecomputer710 is incorporated, such as in a tablet-type personal computer.
Thecomputer710 may operate in a networked environment using logical connections to one or more remote computers, such as aremote computer780. Theremote computer780 may be a personal computer, a server, a router, a network PC, a peer device or other common network node, and typically includes many or all of the elements described above relative to thecomputer710, although only amemory storage device781 has been illustrated inFIG. 7. The logical connections depicted inFIG. 7 include one or more local area networks (LAN)782 and one or more wide area networks (WAN)783, but may also include other networks. Such networking environments are commonplace in offices, enterprise-wide computer networks, intranets and the Internet.
When used in a LAN networking environment, thecomputer710 is coupled to theLAN782 through a network interface oradapter784. When used in a WAN networking environment, thecomputer710 may include amodem785 or other means for establishing communications over theWAN783, such as the Internet. Themodem785, which may be internal or external, may be connected to thesystem bus730 via theuser input interface765 or other appropriate mechanism. A wireless networking component such as comprising an interface and antenna may be coupled through a suitable device such as an access point or peer computer to aLAN782 orWAN783. In a networked environment, program modules depicted relative to thecomputer710, or portions thereof, may be stored in the remote memory storage device. By way of example, and not limitation,FIG. 7 illustratesremote document programs786 as residing onmemory storage device781. It may be appreciated that the network connections shown are examples and other means of establishing a communications link between the computers may be used.
The block diagram ofFIG. 7 is merely illustrative of an example system that may be used in connection with one or more examples of the disclosure and is not intended to be limiting in any way. Further, peripherals or components of the computing devices known in the art are not shown, but are operable with aspects of the disclosure. At least a portion of the functionality of the various elements inFIG. 7 may be performed by other elements inFIG. 7, or an entity (e.g., processor, web service, server, documents, computing device, etc.) not shown inFIG. 7.
The subject matter described herein enables a computing device to determine whether to implement an operation locally at a mobile device or remotely at a server device. For example, one or more operations may be implemented locally and/or remotely based on whether an instruction is associated with a first type of modification and/or a second type of modification. In this way, the mobile device may be configured to manage local resources while enabling a user to generate and/or modify a package, application, and/or document in an efficient and effective manner.
Although described in connection with an example computing system environment, examples of the disclosure are capable of implementation with numerous other general purpose or special purpose computing system environments, configurations, or devices.
Examples of well-known computing systems, environments, and/or configurations that may be suitable for use with aspects of the disclosure include, but are not limited to, mobile computing devices, personal computers, server computers, hand-held or laptop devices, multiprocessor systems, gaming consoles, microprocessor-based systems, set top boxes, programmable consumer electronics, mobile telephones, mobile computing and/or communication devices in wearable or accessory form factors (e.g., watches, glasses, headsets, or earphones), network PCs, minicomputers, mainframe computers, distributed computing environments that include any of the above systems or devices, and the like. Such systems or devices may accept input from the user in any way, including from input devices such as a keyboard or pointing device, via gesture input, proximity input (such as by hovering), and/or via voice input.
Examples of the disclosure may be described in the general context of computer-executable instructions, such as program modules, executed by one or more computers or other devices in software, firmware, hardware, or a combination thereof. The computer-executable instructions may be organized into one or more computer-executable components or modules. 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 disclosure may be implemented with any number and organization of such components or modules. For example, aspects of the disclosure are not limited to the specific computer-executable instructions or the specific components or modules illustrated in the figures and described herein. Other examples of the disclosure may include different computer-executable instructions or components having more or less functionality than illustrated and described herein. Examples of the disclosure 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 local and/or remote computer storage media including memory storage devices.
The examples illustrated and described herein as well as examples not specifically described herein but within the scope of aspects of the disclosure constitute example means for modifying a package, application, and/or document using a mobile device or mobile client. For example, the elements illustrated inFIGS. 1, 2, 4, and/or7, such as when encoded to perform the operations illustrated inFIGS. 5 and 6 constitute at least an example means for presenting a package, application, and/or document, an example means for determining whether an instruction is associated with a first type of modification and/or a second type of modification, an example means for modifying a local instance of a package, application, and/or document, and/or an example means for modifying a remote instance of a package, application, and/or document.
The order of execution or performance of the operations in examples of the disclosure illustrated and described herein is not essential, unless otherwise specified. That is, the operations may be performed in any order, unless otherwise specified, and examples of the disclosure may include additional or fewer operations than those disclosed herein. For example, it is contemplated that executing or performing a particular operation before, contemporaneously with, or after another operation is within the scope of aspects of the disclosure.
When introducing elements of aspects of the disclosure or the examples thereof, 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. The phrase “one or more of the following: A, B, and C” means “at least one of A and/or at least one of B and/or at least one of C.”
Having described aspects of the disclosure in detail, it will be apparent that modifications and variations are possible without departing from the scope of aspects of the disclosure as defined in the appended claims. As various changes could be made in the above constructions, products, and methods without departing from the scope of aspects of the disclosure, it is intended that all matter contained in the above description and shown in the accompanying drawings shall be interpreted as illustrative and not in a limiting sense.
Alternatively or in addition to the other examples described herein, examples include any combination of the following:
analyzing data;
identifying a template based on data;
analyzing a template;
identifying data based on a template;
transmitting a request to generate a package based on data and a template;
receiving a package,
presenting a document;
receiving an instruction to modify an application;
determining whether an instruction is associated with a first type of modification and/or a second type of modification;
determining whether an instruction is associated with a data schema change;
determining whether an instruction is associated with a template layout change;
determining whether an instruction is associated with a theme change;
associating an instruction with a first type of modification;
determining whether an instruction is associated with a template layout change;
associating an instruction with a second type of modification;
modifying a local instance of a document stored at a mobile device;
modifying a remote instance of a document stored at a server device;
generating a call to modify a remote instance of a document;
changing a data schema;
matching a data schema to a template layout;
changing the template layout;
matching a template layout to a data schema; and
transmitting a request to modify a representation of a document.
In some examples, the operations illustrated in the drawings may be implemented as software instructions encoded on a computer readable medium, in hardware programmed or designed to perform the operations, or both. For example, aspects of the disclosure may be implemented as a system on a chip or other circuitry including a plurality of interconnected, electrically conductive elements.
While the aspects of the disclosure have been described in terms of various examples with their associated operations, a person skilled in the art would appreciate that a combination of operations from any number of different examples is also within scope of the aspects of the disclosure.

Claims (20)

What is claimed is:
1. A method providing distributed application development, the method comprising:
receiving, by an application designer component of a mobile device, an instruction to modify a local instance of an application;
determining whether the received instruction is at least one of a first type or a second type;
responsive to determining that the received instruction is the first type:
implementing the received instruction locally, the implementation being self-contained on the mobile device and comprising:
executing a script generated locally at the mobile device that changes application code of the local instance of the application to generate a modified local instance of the application, the modified local instance being stored locally on the mobile device; and
responsive to determining that the received instruction is the second type:
transmitting, to a remote device, a request to modify at least the local instance of the application,
receiving, from the remote device, compiled script that modifies the local instance of the application, and
executing, at the mobile device, the received complied script, which modifies the local instance of the application into the modified local instance of the application.
2. The method ofclaim 1, further comprising:
determining that the received instruction is associated with a theme change; and
in response to the determination, identifying the received instruction as the first type.
3. The method ofclaim 1, further comprising:
determining that the received instruction is associated with a template layout change; and
in response to the determination, identifying the received instruction as the second type.
4. The method ofclaim 1 further comprising:
receiving a dataset including a data schema that controls navigation of the dataset;
analyzing the received dataset, wherein the analysis identifies the data schema of the received dataset; and
selecting a template based on the identified data schema.
5. The method ofclaim 4 further comprising:
generating a map between the received dataset and the selected template based on the identified data schema, and
generating an application instance based on the received dataset, the selected template, and the generated map.
6. The method ofclaim 1, wherein the modified local instance of the application operates to perform at least one of:
presenting one or more images on a display;
presenting a video on a display;
playing audio; and
sending a service call to another computing device.
7. A mobile computing device of a distributed application development environment, the mobile computing device comprising:
a local memory that stores computer-executable instructions including an application designer component; and
one or more local processors that execute computer-executable instructions to:
receive, by the application designer component, an instruction to modify a local instance of an application;
determine, by the application designer component, whether the received instruction is at least one of a first type or a second type;
responsive to determining that the received instruction is the first type, implement the received instruction locally, the implementation being self-contained on the mobile computing device and comprising executing a script generated by the application designer component locally at the mobile device that changes application code of the local instance of the application to generate a modified local instance of the application, the modified local instance being stored locally on the mobile device; and
responsive to determining that the received instruction is the second type:
transmit, to a remote device, a request to modify at least the local instance of the application,
receive, from the remote device, compiled script representations of the application as modified, and
execute the received complied scripted, which modifies the local instance of the application into the modified local instance of the application.
8. The mobile computing device ofclaim 7, wherein the one or more local processors further execute computer-executable instructions to:
determine whether the received instruction is associated with a theme change; and
responsive to a determination that the received instruction is associated with the theme change, identify the received instruction as the first type.
9. The mobile computing device ofclaim 7, wherein the one or more local processors further execute computer-executable instructions to:
determine whether the received instruction is associated with a template layout change; and
responsive to a determination that the received instruction is associated with the template layout change, identify the received instruction as the second type.
10. The mobile computing device ofclaim 7, wherein the local memory further stores computer-executable instructions of a local template matcher component; and
the one or more local processors execute the computer-executable instructions of the template matcher component to:
receive, from a remote data management source, a dataset including a data schema that controls navigation of the dataset,
analyze the received dataset, wherein the analysis identifies the data schema of the received dataset, and
select a template based on the identified data schema.
11. The mobile computing device ofclaim 10, wherein the one or more local processors further execute the computer-executable instructions of the application designer component to:
generate a map between the received dataset and the selected template based on the identified data schema, and
generate an application instance based on the received dataset, the selected template, and the generated map.
12. The mobile computing device ofclaim 7, wherein the application as modified is accessible by other mobile devices.
13. The device ofclaim 7, wherein the modified local instance of the application operates to perform at least one of:
presenting one or more images on a display;
presenting a video on a display;
playing audio; and
sending a service call to another computing device.
14. A system comprising:
a local memory that stores computer-executable instructions including an application designer component; and
one or more local processors that execute computer-executable instructions to:
receive, by the application designer component, an instruction to modify a local instance of an application;
determine, by the application designer component, whether the received instruction is at least one of a first type or a second type;
responsive to determining that the received instruction is the first type, implement the received instruction locally, the implementation being self-contained on the system and comprising executing a script generated by the application designer component locally at the system that changes application code of the local instance of the application to generate a modified local instance of the application, the modified local instance being stored locally on the mobile device; and
responsive to determining that the received instruction is the second type:
transmit, to a remote device, a request to modify at least the local instance of the application,
receive, from the remote device, compiled script that causes changes to the local instance of the application, and
execute the received complied scripted, which modifies the local instance of the application into the modified local instance of the application.
15. The system ofclaim 14, wherein the one or more local processors further execute computer-executable instructions to:
determine whether the received instruction is associated with a theme change; and
responsive to a determination that the received instruction is associated with the theme change, identify the received instruction as the first type.
16. The system ofclaim 14, wherein the one or more local processors further execute computer-executable instructions to:
determine whether the received instruction is associated with a template layout change; and
responsive to a determination that the received instruction is associated with the template layout change, identify the received instruction as the second type.
17. The system ofclaim 14, further comprising:
a template matcher component, implemented on the local memory and executed by one or more local processors, configured to:
analyze a dataset received from a remote data management source, the dataset including a data schema that controls navigation of the dataset;
based at least on the analysis, identify the data schema associated with the dataset;
select a template based on the identified data schema; and
generate a map between the received dataset and the selected template based on the identified data schema.
18. The system ofclaim 17, wherein the one or more local processors further execute computer-executable instructions to:
generate an application instance based on the received dataset, the selected template, and the generated map.
19. The system ofclaim 14, wherein a modified remote instance of the application is accessible by other mobile devices.
20. The system ofclaim 14, wherein the modified local instance of the application operates to perform at least one of:
present one or more images on a display;
present a video on a display;
play audio; and
send a service call to another computing device.
US16/727,8092015-11-092019-12-26Creating and modifying applications from a mobile deviceActiveUS11120212B2 (en)

Priority Applications (1)

Application NumberPriority DateFiling DateTitle
US16/727,809US11120212B2 (en)2015-11-092019-12-26Creating and modifying applications from a mobile device

Applications Claiming Priority (2)

Application NumberPriority DateFiling DateTitle
US14/936,601US10546058B2 (en)2015-11-092015-11-09Creating and modifying applications from a mobile device
US16/727,809US11120212B2 (en)2015-11-092019-12-26Creating and modifying applications from a mobile device

Related Parent Applications (1)

Application NumberTitlePriority DateFiling Date
US14/936,601ContinuationUS10546058B2 (en)2015-11-092015-11-09Creating and modifying applications from a mobile device

Publications (2)

Publication NumberPublication Date
US20200134257A1 US20200134257A1 (en)2020-04-30
US11120212B2true US11120212B2 (en)2021-09-14

Family

ID=57389523

Family Applications (2)

Application NumberTitlePriority DateFiling Date
US14/936,601Active2036-08-15US10546058B2 (en)2015-11-092015-11-09Creating and modifying applications from a mobile device
US16/727,809ActiveUS11120212B2 (en)2015-11-092019-12-26Creating and modifying applications from a mobile device

Family Applications Before (1)

Application NumberTitlePriority DateFiling Date
US14/936,601Active2036-08-15US10546058B2 (en)2015-11-092015-11-09Creating and modifying applications from a mobile device

Country Status (4)

CountryLink
US (2)US10546058B2 (en)
EP (1)EP3374858B1 (en)
CN (1)CN108351766B (en)
WO (1)WO2017083157A1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication numberPriority datePublication dateAssigneeTitle
US20230334237A1 (en)*2022-04-142023-10-19Sigma Computing, Inc.Workbook template sharing

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication numberPriority datePublication dateAssigneeTitle
CN106559438B (en)*2015-09-242019-12-31阿里巴巴集团控股有限公司 A program upload method and device based on a target network platform
US9886245B2 (en)*2016-02-242018-02-06Helix Data Solutions LLCSoftware development tool using a workflow pattern that describes software applications
GB2562199B (en)2017-02-032022-02-16Worldpay LtdTerminal for conducting electronic transactions
CN112783508B (en)*2021-02-012022-05-24北京百度网讯科技有限公司File compiling method, device, equipment and storage medium

Citations (7)

* Cited by examiner, † Cited by third party
Publication numberPriority datePublication dateAssigneeTitle
CN1658608A (en)2004-01-302005-08-24捷讯研究有限公司 Systems and methods for providing modifiable universal application content
US7620948B1 (en)*2003-08-292009-11-17Adobe Systems IncorporatedClient side software updating
US20110154305A1 (en)*2009-07-312011-06-23Leroux BrianSystem and method for remotely compiling multi-platform native applications for mobile devices
CA2539474C (en)2003-09-172012-04-03Research In Motion LimitedSystem and method for dynamic generation and customization of web service client applications for terminals
US20130139126A1 (en)*2011-11-302013-05-30Verizon Patent And Licensing Inc.Mobile application configuration
US20140056576A1 (en)*2012-02-092014-02-27Panasonic CorporationMultimedia content editing server, multimedia content editing method, program, and integrated circuit
US20150331845A1 (en)*2014-05-132015-11-19International Business Machines CorporationTable narration using narration templates

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication numberPriority datePublication dateAssigneeTitle
GB2361341A (en)*2000-03-032001-10-17Knowhow Systems LtdDocument creation and delivery
US7127705B2 (en)2000-09-062006-10-24Oracle International CorporationDeveloping applications online
EP1215573A1 (en)*2000-12-132002-06-19Sun Microsystems, Inc.Local and remote processing
US20070028166A1 (en)*2002-04-102007-02-01Allen HundhausenSystem and processes for dynamic document construction
US8136109B1 (en)2002-04-192012-03-13Tibco Software Inc.Delivery of data and formatting information to allow client-side manipulation
CA2387328C (en)2002-05-242012-01-03Diversinet Corp.Mobile terminal system
US7233951B1 (en)*2004-02-182007-06-19Microsoft CorporationSpreadsheet grid-like control for a web-based collaboration system
US20060129972A1 (en)2004-11-302006-06-15Tyburski John CApplication developer and method for generating platform independent code
US7890926B2 (en)2005-01-042011-02-15Vaakya Technologies Private LimitedSystem and method for application development and deployment
US20080046557A1 (en)2005-03-232008-02-21Cheng Joseph CMethod and system for designing, implementing, and managing client applications on mobile devices
US7813910B1 (en)2005-06-102010-10-12Thinkvillage-Kiwi, LlcSystem and method for developing an application playing on a mobile device emulated on a personal computer
US7971194B1 (en)2005-06-162011-06-28Sap Portals Israel Ltd.Programming language techniques for client-side development and execution
CA2578466A1 (en)2007-01-122008-07-12Truecontext CorporationMethod and system for customizing a mobile application using a web-based interface
US8589955B2 (en)2008-02-122013-11-19Nuance Communications, Inc.System and method for building applications, such as customized applications for mobile devices
US9195525B2 (en)*2008-10-212015-11-24Synactive, Inc.Method and apparatus for generating a web-based user interface
US8108779B1 (en)*2008-12-162012-01-31Adobe Systems IncorporatedCollaborative editing operations
US8694954B2 (en)2010-11-292014-04-08Norman OrtizSystem and methods for mobile application development using mobile devices
US8261231B1 (en)2011-04-062012-09-04Media Direct, Inc.Systems and methods for a mobile application development and development platform
US9495533B2 (en)2011-09-292016-11-15Oracle International CorporationMobile application, identity relationship management
US20140053126A1 (en)2012-02-132014-02-20Mark A. WatsonIntegrated mobile application development platform
US9043750B2 (en)2012-10-092015-05-26Sap SeAutomated generation of two-tier mobile applications
US9529816B2 (en)*2013-01-252016-12-27Konica Minolta Laboratory U.S.A., Inc.Arbitrating among concurrent editors of shared documents
US9038019B2 (en)2013-02-052015-05-19Sap SePaige control for enterprise mobile applications
US9582301B2 (en)*2014-09-172017-02-28International Business Machines CorporationMethod of defining javascript objects
US10581950B2 (en)*2015-03-062020-03-03Vmware, Inc.Local operation of remotely executed applications

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication numberPriority datePublication dateAssigneeTitle
US7620948B1 (en)*2003-08-292009-11-17Adobe Systems IncorporatedClient side software updating
CA2539474C (en)2003-09-172012-04-03Research In Motion LimitedSystem and method for dynamic generation and customization of web service client applications for terminals
CN1658608A (en)2004-01-302005-08-24捷讯研究有限公司 Systems and methods for providing modifiable universal application content
US20110154305A1 (en)*2009-07-312011-06-23Leroux BrianSystem and method for remotely compiling multi-platform native applications for mobile devices
US20130139126A1 (en)*2011-11-302013-05-30Verizon Patent And Licensing Inc.Mobile application configuration
US20140056576A1 (en)*2012-02-092014-02-27Panasonic CorporationMultimedia content editing server, multimedia content editing method, program, and integrated circuit
US20150331845A1 (en)*2014-05-132015-11-19International Business Machines CorporationTable narration using narration templates

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
"First Office Action and Search Report Issued in Chinese Patent Application No. 201680064885.9", dated Oct. 29, 2020, 26 Pages.
"Office Action Issued in European Patent Application No. 16798871.6", dated Dec. 12, 2019, 4 Pages.

Cited By (1)

* Cited by examiner, † Cited by third party
Publication numberPriority datePublication dateAssigneeTitle
US20230334237A1 (en)*2022-04-142023-10-19Sigma Computing, Inc.Workbook template sharing

Also Published As

Publication numberPublication date
EP3374858A1 (en)2018-09-19
US10546058B2 (en)2020-01-28
US20200134257A1 (en)2020-04-30
CN108351766B (en)2021-05-14
CN108351766A (en)2018-07-31
WO2017083157A1 (en)2017-05-18
EP3374858B1 (en)2020-07-22
US20170132197A1 (en)2017-05-11

Similar Documents

PublicationPublication DateTitle
US11120212B2 (en)Creating and modifying applications from a mobile device
US10481875B2 (en)Generation of an application from template
CN108292231B (en)Method and system for generating applications from data
US20210026613A1 (en)Data model api for live applications in a cloud collaboration platform
US9600342B2 (en)Managing parallel processes for application-level partitions
US11082514B2 (en)Push notification management
US20180314821A1 (en)Transferring Containers
US8103559B2 (en)Maintenance of group shared inventories in a virtual universe
CN113296891B (en) Platform-based multi-scenario knowledge graph processing method and device
US10592689B2 (en)Selective container use for device usage sessions
US10523591B2 (en)Discovering resource availability across regions
US12222825B2 (en)Systems and methods for disaster recovery for edge devices
ShashiDesigning Applications for Google Cloud Platform
US10608900B2 (en)Generating a deferrable data flow
US11496453B2 (en)Binary experimentation on running web servers
US20250181462A1 (en)Systems and Methods for Disaster Recovery for Edge Devices
Williams et al.Microsoft SharePoint 2013 Administration Inside Out

Legal Events

DateCodeTitleDescription
FEPPFee payment procedure

Free format text:ENTITY STATUS SET TO UNDISCOUNTED (ORIGINAL EVENT CODE: BIG.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

ASAssignment

Owner name:MICROSOFT TECHNOLOGY LICENSING, LLC, WASHINGTON

Free format text:ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:BALASUBRAMANIAN, BARATH;COHEN, EVAN;COLLE, OLIVIER;AND OTHERS;SIGNING DATES FROM 20160310 TO 20160316;REEL/FRAME:051528/0870

STPPInformation on status: patent application and granting procedure in general

Free format text:NON FINAL ACTION MAILED

STPPInformation on status: patent application and granting procedure in general

Free format text:RESPONSE TO NON-FINAL OFFICE ACTION ENTERED AND FORWARDED TO EXAMINER

STPPInformation on status: patent application and granting procedure in general

Free format text:NOTICE OF ALLOWANCE MAILED -- APPLICATION RECEIVED IN OFFICE OF PUBLICATIONS

STPPInformation on status: patent application and granting procedure in general

Free format text:PUBLICATIONS -- ISSUE FEE PAYMENT VERIFIED

STCFInformation on status: patent grant

Free format text:PATENTED CASE

MAFPMaintenance fee payment

Free format text:PAYMENT OF MAINTENANCE FEE, 4TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1551); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

Year of fee payment:4


[8]ページ先頭

©2009-2025 Movatter.jp