# US 10,503,572 B2 · Hybrid remote controller

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 10,503,572 B2
- Document ID: US10503572B2
- Status: Granted
- Kind: B2
- Application number: 15/490,193
- Filed: 2017-04-18
- Published: 2018-10-18
- Granted: 2019-12-10
- Earliest claimed: 2017-04-18
- Assignees: Sap SE
- Applicants: Sap SE
- Inventors: Yang Peng; Xia Yu
- Web page: https://patentgrep.com/patent/US10503572B2

## CPC

- G06F 9/547: {Remote procedure calls [RPC]; Web services}
- G06F 8/60: Software deployment
- G06F 9/4488: {Object-oriented}
- G06F 9/546: {Message passing systems or structures, e.g. queues}
- G06F 9/548: {Object oriented; Remote method invocation [RMI] (non-remote method invocation G06F9/449)}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

In one aspect there is provided a method. The method may include: executing, at a client, an application that includes a first function and a second function; determining, based at least on an indicator, that the first function is to be executed locally at the client and the second function is to be executed remotely at a server; generating a package that includes a first class definition of a first class, the first class definition being required for executing the second function based at least on the second function including a reference to the first class; and sending, to the server, the package to at least enable the server to execute the second function. Systems and articles of manufacture, including computer program products, are also provided.

## Claims

### Claim 1

A computer-implemented method, comprising:
determining, based at least on an indicator, that a first function comprising an application is to be executed locally at a client and a second function comprising the application is to be executed remotely at a server;
in response to determining that the first function is to be executed locally at the client and the second function is to be executed remotely at the server, modifying a program code associated with the second function to at least enable an interception of the second function when the second function is executed at the client; and
executing, at the client, the application including the first function and the second function, the application being executed by at least
executing, at the client, the first function,
responding to a call from the second function by at least intercepting an execution of the second function, the execution of the second function being intercepted in order to perform a dependency analysis of one or more classes required for executing the second function,
generating, based at least on the dependency analysis, a package that includes a first class definition of a first class, the first class definition being required for executing the second function based at least on the second function having a reference to the first class, and
executing the second function by at least sending, to the server, the package to at least enable the server to execute the second function.

### Claim 2 (depends on 1)

The computer-implemented method of claim 1, wherein the second function is defined by a second class definition as being associated with a second class.

### Claim 3 (depends on 1)

The computer-implemented method of claim 1, further comprising:
determining that the first class definition includes another reference to a third class, the third class being associated with a third class definition; and
generating the package to include the third class definition, the third class definition being required for executing the second function based at least on the first class definition including the other reference to the third class.

### Claim 4 (depends on 1)

The computer-implemented method of claim 1, further comprising executing the first function at the client.

### Claim 5 (depends on 1)

The computer-implemented method of claim 1, further comprising tagging program code associated with the second function with the indicator, the indicator providing an indication that the second function is to be executed remotely at the server.

### Claim 6 (depends on 1)

The computer-implemented method of claim 1, wherein the package is further generated to include an input parameter of the second function and/or program code for the second function.

### Claim 7 (depends on 1)

The computer-implemented method of claim 1, further comprising determining whether the first class definition is available at the server, the first class definition being included in the package based at least on a determination that the first class definition is unavailable at the server.

### Claim 8 (depends on 7)

The computer-implemented method of claim 7, wherein the determining of whether the first class definition is available at the server is based on a whitelist of one or more class definitions that are available at the server.

### Claim 9 (depends on 7)

The computer-implemented method of claim 7, wherein the determining of whether the first class definition is available at the server is based on a blacklist of one or more class definitions not available at the server.

### Claim 10 (depends on 1)

The computer-implemented method of claim 1, wherein the second function is executed in a sandbox at the server, and wherein the second function is executed in the sandbox to at least isolate the execution of the second function from a third function that is being simultaneously executed at the server.

### Claim 11 (depends on 1)

The computer-implemented method of claim 1, wherein the program code associated with the second function is modified to include additional program code to call for an interception of the second function during the execution of the second function, and wherein the call includes a name of the second function, one or more input parameters of the second function, and/or an object to which the second function belongs.

### Claim 12

A system, comprising:
at least one processor; and
at least one memory storing instructions which, when executed by the at least one processor, result in operations comprising:
determining, based at least on an indicator, that a first function comprising an application is to be executed locally at a client and a second function comprising the application is to be executed remotely at a server;
in response to determining that the first function is to be executed locally at the client and the second function is to be executed remotely at the server, modifying a program code associated with the second function to at least enable an interception of the second function when the second function is executed at the client; and
executing, at the client, the application including the first function and the second function, the application being executed by at least
executing, at the client, the first function,
responding to a call from the second function by at least intercepting an execution of the second function, the execution of the second function being intercepted in order to perform a dependency analysis of one or more classes required for executing the second function,
generating, based at least on the dependency analysis, a package that includes a first class definition of a first class, the first class definition being required for executing the second function based at least on the second function having a reference to the first class, and
executing the second function by at least sending, to the server, the package to at least enable the server to execute the second function.

### Claim 13 (depends on 12)

The system of claim 12, wherein the second function is defined by a second class definition as being associated with a second class.

### Claim 14 (depends on 12)

The system of claim 12, further comprising:
determining that the first class definition includes another reference to a third class, the third class being associated with a third class definition; and
generating the package to include the third class definition, the third class definition being required for executing the second function based at least on the first class definition including the other reference to the third class.

### Claim 15 (depends on 12)

The system of claim 12, further comprising executing the first function at the client.

### Claim 16 (depends on 12)

The system of claim 12, further comprising tagging program code associated with the second function with the indicator, the indicator providing an indication that the second function is to be executed remotely at the server.

### Claim 17 (depends on 12)

The system of claim 12, wherein the package is further generated to include an input parameter of the second function and/or program code for the second function.

### Claim 18 (depends on 12)

The system of claim 12, further comprising determining whether the first class definition is available at the server, the first class definition being included in the package based at least on a determination that the first class definition is unavailable at the server.

### Claim 19 (depends on 18)

The system of claim 18, wherein the determining of whether the first class definition is available at the server is based on a whitelist of one or more class definitions that are available at the server and/or a blacklist of one or more class definitions not available at the server.

### Claim 20 (depends on 12)

The system of claim 12, wherein the second function is executed in a sandbox at the server, and wherein the second function is executed in the sandbox to at least isolate the execution of the second function from a third function that is being simultaneously executed at the server.

### Claim 21

A non-transitory computer-readable storage medium including program code, which when executed by at least one data processor, cause operations comprising:
determining, based at least on an indicator, that a first function comprising an application is to be executed locally at a client and a second function comprising the application is to be executed remotely at a server;
in response to determining that the first function is to be executed locally at the client and the second function is to be executed remotely at the server, modifying a program code associated with the second function to at least enable an interception of the second function when the second function is executed at the client; and
executing, at the client, the application including the first function and the second function, the application being executed by at least
executing, at the client, the first function,
responding to a call from the second function by at least intercepting an execution of the second function, the execution of the second function being intercepted in order to perform a dependency analysis of one or more classes required for executing the second function,
generating, based at least on the dependency analysis, a package that includes a first class definition of a first class, the first class definition being required for executing the second function based at least on the second function having a reference to the first class, and
executing the second function by at least sending, to the server, the package to at least enable the server to execute the second function.
