Just-in-time Compilation for Business Process Execution

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Business process definitions often need to be updated quickly, but existing methods struggle with compiling code ahead of time due to unknown key attributes of the deployment system, leading to inefficiencies and security concerns when deploying updated processes.

Innovation Solution

Implementing just-in-time compilation (JIT) to generate compiled code at runtime, allowing business processes to execute using compiled code instead of interpreted instructions, even if key attributes are unknown at development time, and using a virtual file system to manage source and class files without relying on the native file system.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Speed

If code is compiled ahead of time, then runtime performance is improved, but deployment flexibility deteriorates due to unknown key attributes of the deployment system

Engineering Contradiction:
Improveruntime performanceVSAvoiddeployment flexibility
Core Design Contradiction:
SpeedVSAdaptability or versatility

Solution Approach 1:

The business process definition is translated into an intermediate representation (IR) that captures the process logic in a platform-independent manner. This preliminary translation enables the process to be executed on different deployment systems without requiring ahead-of-time compilation, as the IR can be compiled to native code at runtime when the actual deployment target is known.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The system employs dynamic compilation where the intermediate representation is compiled to native machine code at runtime rather than being statically compiled ahead of time. This dynamic approach allows the same business process definition to be adapted to different deployment systems (different operating systems, hardware architectures, JVM versions) without requiring reCompilation, thus maintaining both performance and flexibility.

Inventive Principle:
Principle #15Dynamics

2Productivity

If business process definitions are updated quickly, then responsiveness to change is improved, but compilation reliability deteriorates due to unknown deployment attributes

Engineering Contradiction:
Improveupdate speedVSAvoidcompilation reliability
Core Design Contradiction:
ProductivityVSReliability

Solution Approach 1:

The business process definition is first translated into an intermediate representation that is independent of specific deployment attributes. This preliminary translation step separates the business logic from deployment-specific details, allowing rapid updates to the process definition without affecting compilation reliability, as the IR can be recompiled to match the actual deployment environment when updates are deployed.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The intermediate representation serves as a mediator between the business process definition and the deployment environment. It acts as a platform-independent intermediate format that can be compiled to various target platforms, ensuring that updates to business process definitions can be rapidly implemented without compromising compilation reliability, since the IR can be compiled to match the specific deployment attributes of each environment.

Inventive Principle:
Principle #24Intermediary (Mediator)

3Adaptability or versatility

If interpreted instructions are used, then deployment flexibility is improved, but runtime performance deteriorates

Engineering Contradiction:
Improvedeployment flexibilityVSAvoidruntime performance
Core Design Contradiction:
Adaptability or versatilityVSSpeed

Solution Approach 1:

The system dynamically compiles the intermediate representation to native machine code at runtime, transitioning from interpreted execution to compiled execution. This dynamic compilation allows the system to maintain deployment flexibility (through the platform-independent IR) while achieving native-level runtime performance (through JIT compilation to machine code), effectively resolving the trade-off between flexibility and performance.

Inventive Principle:
Principle #15Dynamics

Solution Approach 2:

The system replaces the mechanical interpretation mechanism (which executes instructions one by one) with a compilation mechanism (which generates optimized machine code). By substituting the interpreted execution model with a just-in-time compiled execution model, the system achieves both the flexibility of platform-independent deployment (through the IR) and the performance of native code execution (through JIT compilation).

Inventive Principle:
Principle #28Mechanics substitution (Replace mechanical system)

4Reliability

If a virtual file system is used to manage files, then security is improved by detecting malicious changes, but system complexity increases

Engineering Contradiction:
ImprovesecurityVSAvoidsystem complexity
Core Design Contradiction:
ReliabilityVSDevice complexity

Solution Approach 1:

The virtual file system acts as an intermediary layer between the physical file system and the business process execution environment. It provides a simplified, secure interface for managing process definition files, class files, and other resources. The virtual file system detects and prevents malicious changes by validating files against predefined security policies, thus improving security without significantly increasing visible system complexity, as the complexity is encapsulated within the virtual layer.

Inventive Principle:
Principle #24Intermediary (Mediator)

Data Source

PatentUS10657476B2Just in time compilation (JIT) for business process execution
Publication Date: 2020.05.19 CLOUD SOFTWARE GROUP LLC
  • US10657476B2 patent drawing
  • US10657476B2 patent drawing
  • US10657476B2 patent drawing

AI summary

Techniques to provide and deploy a business process are disclosed. A business process source filed stored in a memory is received. The business process source file, as stored in memory, is provided as an input to an in-memory compiler. A business process class file stored in the memory is received as output from the in-memory compiler. The business process class file, as stored in memory, is provided to a business process engine class loader.