Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
CN120066518B - Go Language Structure Automatic Conversion Method and System - Google Patents
[go: Go Back, main page]

CN120066518B - Go Language Structure Automatic Conversion Method and System - Google Patents

Go Language Structure Automatic Conversion Method and System

Info

Publication number
CN120066518B
CN120066518B CN202510126525.8A CN202510126525A CN120066518B CN 120066518 B CN120066518 B CN 120066518B CN 202510126525 A CN202510126525 A CN 202510126525A CN 120066518 B CN120066518 B CN 120066518B
Authority
CN
China
Prior art keywords
conversion
field
type
code
fields
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
CN202510126525.8A
Other languages
Chinese (zh)
Other versions
CN120066518A (en
Inventor
李昕宇
周磊
王骞
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.)
Beimi Technology Zhuhai Co ltd
Original Assignee
Beimi Technology Zhuhai Co ltd
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 Beimi Technology Zhuhai Co ltd filed Critical Beimi Technology Zhuhai Co ltd
Priority to CN202510126525.8A priority Critical patent/CN120066518B/en
Publication of CN120066518A publication Critical patent/CN120066518A/en
Application granted granted Critical
Publication of CN120066518B publication Critical patent/CN120066518B/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/42Syntactic analysis
    • G06F8/427Parsing
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • G06F11/0778Dumping, i.e. gathering error/state information after a fault for later diagnosis
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/079Root cause analysis, i.e. error or fault diagnosis
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/43Checking; Contextual analysis
    • G06F8/436Semantic checking
    • G06F8/437Type checking
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/447Target code generation
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/45Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
    • G06F8/451Code distribution

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Quality & Reliability (AREA)
  • Computing Systems (AREA)
  • Computational Linguistics (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

The application relates to the technical field of computer programming, and discloses an automatic conversion method and an automatic conversion system for a Go language structure. The method comprises the steps of firstly receiving definitions of a source structure body and a target structure body as input, automatically matching fields of the two structure bodies according to preset rules through a field mapping rule engine to generate a field mapping relation, then automatically generating conversion codes containing field assignment and type conversion logic by using a code generator based on the field mapping relation, and finally compiling the generated conversion codes into executable conversion functions which can convert data in a source structure body instance into the target structure body instance according to the field mapping relation when a program runs. The method realizes automation of structure body conversion, avoids the problem of easy error caused by manually writing conversion codes, improves maintainability of the codes, remarkably improves conversion efficiency by replacing reflection mode during operation by code generation, and simultaneously supports batch conversion and concurrent processing, thereby meeting performance requirements of large-scale data processing.

Description

Automatic conversion method and system for Go language structure
Technical Field
The application relates to the technical field of computer programming, in particular to the technical field of Go language structure data conversion.
Background
In Go language application development, structure is the underlying tool for data modeling. As application systems increase in size and complexity, the need to transfer and convert data between different modules increases. For example, it is necessary to convert a database entity structure into a business logic structure, convert a business logic structure into an API response structure, or complete a compatibility conversion of a structure in micro-service communication.
At present, two technical schemes are mainly adopted for the structure body conversion, namely one is to manually write mapping logic of the structure body fields by a developer, and the other is to use reflection technology to perform field conversion in running. Both of these solutions have significant limitations. Manually writing translation code is not only labor-intensive, but also prone to field omission or assignment errors. When the fields of the fabric change, the corresponding transcoding needs to be modified synchronously, which increases maintenance costs and risk of errors. Although the use of reflection techniques can reduce the amount of code written, the reflection operations can introduce additional runtime overhead that affects program performance. Meanwhile, the reflection mode is difficult to find type errors in the compiling period, and may cause abnormal running.
These problems are more pronounced in a large-scale data processing scenario. For example, in a micro-service architecture, conversion of a large number of data structures between services may be required frequently. If the reflection mode is adopted, the performance cost can be obviously increased along with the increase of the data quantity, and if the manual coding conversion mode is adopted, the workload of code maintenance can be rapidly increased along with the increase of the service quantity.
In addition, the existing conversion scheme lacks a unified processing mechanism for special cases, such as the cases of incomplete matching of field types, inconsistent field names, nested structure body conversion and the like. This necessitates a developer to write a large amount of adaptation code, increasing development complexity. Meanwhile, the lack of perfect error handling and test support also presents challenges to the quality assurance of the code.
Therefore, a new technical scheme is needed, which can simplify the coding work of the structural body conversion on the premise of ensuring the conversion accuracy and the type safety, and has the characteristics of high efficiency, flexibility and expandability so as to adapt to different service scene requirements.
Disclosure of Invention
The application aims to provide an automatic conversion method and an automatic conversion system for a Go language structure body, so as to solve the problems in the background technology.
The application discloses an automatic conversion method of a Go language structure, which comprises the following steps:
Receiving as input a source structure definition and a target structure definition, each of the source structure definition and the target structure definition comprising a structure name, a field name, and field type information;
According to a field mapping rule preset through a configuration file or a default mode, automatically matching fields in the source structure definition and the target structure definition through a field mapping rule engine to generate a field mapping relation, wherein the field mapping relation comprises a mapping rule and a type conversion rule from a source structure field to a target structure field;
Automatically generating, by a code generator, a construct conversion code based on the field mapping relationship, the conversion code comprising field assignment statements and type conversion statements that convert a source construct instance to a target construct instance;
compiling the conversion code to generate an executable conversion function, wherein the conversion function can convert and fill data in a source structure body instance into a target structure body instance according to the field mapping relation when a program runs, or provide the data as an independent function for a calling party to use.
In a preferred embodiment, the field mapping rules comprise field name complete matching rules for processing the situation that field names are completely the same, field name neglect case matching rules for processing the situation that field names are only different in case, field name containing relation matching rules for processing the situation that field names have containing relations, and user-defined mapping rules for allowing users to specify mapping relations among specific fields through configuration files.
In a preferred embodiment, the type conversion rules comprise conversion rules among basic data types, conversion rules of time types and character string types, conversion rules of numerical precision, conversion rules of user-defined types and conversion methods among user-defined types, wherein the conversion rules are used for processing conversion among basic types of integers, floating points and Boolean values, the conversion rules comprise analysis and formatting rules of time formats, the conversion rules of numerical precision are used for processing conversion among numerical value types with different precision and precision control, and the conversion rules of user-defined types support conversion methods among specific types.
In a preferred embodiment, the field mapping rule engine comprises a field name matching module, a field type matching module and a priority processing module, wherein the field name matching module is used for matching fields in a source structure body and a target structure body according to field name similarity and comprises complete matching, partial matching and fuzzy matching, the field type matching module is used for matching fields in the source structure body and the target structure body according to field type corresponding relation and supporting type compatibility checking and automatic type conversion, and the priority processing module is used for determining field mapping relation when matching conflicts according to preset priority rules and comprises name priority, type priority or custom priority rules.
In a preferred embodiment, the code generator generates the conversion code by analyzing the field mapping relation to generate a signature of the conversion function, including a parameter type definition and a return value type definition, and generating a type-safe conversion statement according to the field type, specifically comprising:
Direct conversion statement for basic type, which is used to process conversion between basic data types;
parsing and formatting statements for time formats for handling conversion of time types;
aiming at the conversion statement of the numerical precision, the method is used for processing the conversion of numerical values with different precision;
aiming at a special processing statement of a custom type, the method is used for processing type conversion defined by a user, generating null value check codes for pointer type fields, wherein the null value check codes comprise null pointer judgment and default value processing, and generating error processing and exception capturing codes to ensure the safety of a conversion process.
In a preferred embodiment, the transfer function also has the following features:
supporting batch conversion of a plurality of structure body examples, including batch processing of an array and a sliced collection type;
the concurrent safe conversion operation is supported, and the data consistency in the multithreading environment is ensured through mutual exclusion lock or atomic operation;
providing error return values to indicate anomalies in the conversion process, including error information of type mismatch and field missing;
containing code logic for handling one or more of the following special cases:
when there is a field in the source structure that is not in the target structure, deciding whether to ignore or log according to the configuration;
when the field which is not in the source structure exists in the target structure, setting a default value or keeping the field to be zero according to configuration;
when the types of the homonymous fields in the source structure body and the target structure body are not matched, attempting type conversion or reporting errors;
When the structure body is nested and converted, the conversion of nested fields is recursively processed;
The pointer type field contains null pointer checking and memory allocation logic when it is converted.
In a preferred embodiment, before the structure body conversion code is automatically generated by a code generator based on the field mapping relation, the method further comprises the step of generating or updating the field mapping relation according to field mapping configuration information input by a user through a graphical interface, and specifically comprises the following steps:
The configuration information adopts JSON or YAML format, so as to ensure the readability and maintainability of configuration;
configuring field mapping rules, and supporting the corresponding relation and conversion rules among custom fields;
the configuration of type conversion rules allows the user to define the conversion method among specific types;
Ignoring field configuration, designating fields that do not need to be converted;
default configuration, setting default for optional fields in a target structure, providing verification and error prompt functions of configuration files, ensuring the correctness and effectiveness of configuration, supporting version control and backup management of the configuration files, and facilitating rollback and tracking of configuration.
The application also discloses an automatic conversion system of the Go language structure body, which comprises:
A receiving module for receiving as input a source structure definition and a target structure definition, each of the source structure definition and the target structure definition comprising a structure name, a field name, and field type information;
the field mapping rule engine is used for automatically matching the fields in the source structure body definition and the target structure body definition according to a field mapping rule preset through a configuration file or a default mode to generate a field mapping relation, wherein the field mapping relation comprises a mapping rule and a type conversion rule from a source structure body field to a target structure body field;
A code generator for automatically generating a structure conversion code based on the field mapping relation, the conversion code including a field assignment statement and a type conversion statement for converting a source structure instance into a target structure instance;
and the compiling module is used for compiling the conversion codes to generate executable conversion functions, and the conversion functions can convert and fill the data in the source structure body instance into the target structure body instance according to the field mapping relation when the program runs or provide the data as independent functions for a calling party to use.
The automatic conversion method and the system for the Go language structure have the following technical effects:
Greatly improves the efficiency and performance of the structure body conversion. Specifically, the application adopts precompiled period static analysis and dynamic code generation technology, and avoids the performance overhead of the traditional reflection scheme in the running process. In a large-scale data conversion scenario, performance improvements of up to 200% can be achieved compared to reflection schemes. At the same time, intelligent code inlining and branch prediction techniques enable the generated code to perform more efficiently than handwritten code. Particularly, during batch conversion, CPU and memory resource consumption is effectively reduced through a coroutine task slicing and cache preheating mechanism.
The workload of the developer and the error risk are remarkably reduced. Specifically, the conventional manual writing of the structure body conversion code is cumbersome, error-prone, and poor in maintainability. The application can reduce the code writing workload of the developer by more than 70% by automatically generating the type safe and efficient conversion code. Meanwhile, an accurate field matching algorithm and a compiling period error checking mechanism greatly reduce the error risk of code conversion and improve the development quality and efficiency.
Greatly shortens the time for problem investigation and debugging. Specifically, the unique error processing mechanism of the application carries out the compile-time error pre-detection by constructing the directed acyclic graph model of type conversion and generates defensive codes, so that the conversion codes have higher robustness. Meanwhile, the error tracking chain and the context-aware log system can accurately locate the position and reason of the problem. In practical application, the mechanism can shorten the problem locating time by 80%, and greatly reduce the difficulty and cost of system maintenance.
Good expansibility and flexibility, and is suitable for various complex service scenes. Specifically, the application adopts the architecture design of the configuration driver to support declarative configuration files and plug-in extensions. The user can conveniently define the complex conversion rule and the custom type converter according to own business requirements without modifying the core code. Particularly under the micro-service architecture, the application can also be used as an independent conversion service to provide services through a standard API interface. The application can flexibly adapt to different application scenes, such as data migration of a legacy system, data format conversion of different protocols and the like.
Provides a wide space for technical innovation and optimization. Specifically, the application has prospective architecture design, adopts advanced concepts of plug-in, service and the like, and reserves sufficient expansion points. New technical means, such as optimizing field matching algorithm by machine learning, dynamically adjusting code generation strategy by adaptive optimization, etc., can be integrated conveniently in the future. Meanwhile, a perfect error processing mechanism and a log system provide a data base for continuous optimization and problem analysis of the system. This provides a wide imagination space for the continued evolution and technical upgrades of the present application.
In conclusion, the method and the device have obvious technical effects and practical application values in multiple dimensions of improving development efficiency, ensuring code quality, optimizing running performance, adapting to business requirements and the like. The realization of these effects benefits from the integration of various technical innovations and concepts in the aspects of architecture design, algorithm realization, engineering optimization and the like, which are the result of the synergistic effect of a plurality of key technologies, and the realization of the application is difficult by simply combining the prior art. Therefore, the application has important reference significance and popularization value for Go language development ecology and even the whole software engineering field.
The numerous technical features described in the description of the present application are distributed among the various technical solutions, which can make the description too lengthy if all possible combinations of technical features of the present application (i.e., technical solutions) are to be listed. In order to avoid this problem, the technical features disclosed in the above summary of the application, the technical features disclosed in the following embodiments and examples, and the technical features disclosed in the drawings may be freely combined with each other to constitute various new technical solutions (these technical solutions are regarded as already described in the present specification) unless such a combination of technical features is technically impossible. For example, in one example, feature a+b+c is disclosed, in another example, feature a+b+d+e is disclosed, and features C and D are equivalent technical means that perform the same function, technically only by alternative use, and may not be adopted simultaneously, feature E may be technically combined with feature C, and then the solution of a+b+c+d should not be considered as already described because of technical impossibility, and the solution of a+b+c+e should be considered as already described.
Drawings
Fig. 1 is a flow chart illustrating an automatic Go language structure conversion method according to a first embodiment of the present application.
Fig. 2 is a schematic structural view of an Go language structure automatic conversion system according to a second embodiment of the present application.
Detailed Description
In the following description, numerous specific details are set forth in order to provide a thorough understanding of the present application. It will be understood by those skilled in the art that the claimed application may be practiced without these specific details and with various changes and modifications from the embodiments that follow.
Description of the partial concepts:
Structure (Struct) key words in the Go language for defining composite data types, different types of fields can be encapsulated. The structure is the basis for object-oriented programming in the Go language.
Each data item in the Field (Field) structure is called a Field, consisting of a Field name and a Field type. The fields may be basic data types, or complex types such as structures, arrays, slices, maps, etc.
Field tags (tags) the structure field may be added with an optional Tag in addition to the name and type. A tag is a string attached to a field, and is bracketed with a reverse-prime number to provide meta-information for the field. Common tags are json, bson, xml, etc. to guide the serialization and deserialization behavior of data.
Reflection (Reflection), a mechanism that examines and modifies program behavior at runtime. The Go language provides a reflection function, which can dynamically acquire type information and value information of variables at runtime, and can dynamically call functions and methods. Reflection is commonly used for implementation of general algorithms and frameworks.
The field map FIELD MAPPING determines the correspondence of fields between the source structure and the target structure during the structure conversion. The field map may be matched and associated based on information such as field name, field type, field tag, etc.
Code Generation (Code Generation), a technique for automatically generating Code during compilation. The code with the specific functions and structures is automatically generated using the necessary information as input according to predefined templates and rules. The code generation can reduce repeated coding work and improve development efficiency.
Abstract syntax tree (AST, abstract Syntax Tree) a tree representation of the abstract syntax structure of the source code. After parsing the code, an abstract syntax tree is generated, and the nodes of the tree represent various syntax structures in the code, such as statements, expressions, statements, and the like. AST is an important intermediate representation of code analysis and conversion.
Type compatibility Type Compatibility A determination is made as to whether the source structure field type can be converted to the characteristics of the target structure field type at the time of structure conversion. Type compatibility determines the feasibility and security of the conversion. The Go language has strict rules for the conversion between different types.
Error Handling (Error Handling) a mechanism to handle exception conditions and Error conditions during program execution. The Go language advocates explicit error handling by returning an error value or panic to represent and communicate the error. Reasonable error handling may enhance the robustness and reliability of the program.
Unit Testing (Unit Testing), a method of Testing code correctness and behavior. Unit testing is testing for the smallest testable unit (typically a function or method) of a program. The Go language has a lightweight test framework built in, and can conveniently write and run unit tests.
The following outline of some of the innovative features of the present application:
The application realizes a breakthrough automatic structure body conversion method by creatively combining a field mapping rule engine with a code generator. The method is different from the traditional runtime reflection scheme, and adopts a hybrid technical architecture based on precompiled-period static analysis and dynamic code generation. Specifically, the field mapping rule engine not only considers the semantic similarity of field names when processing field mapping of a structural body by realizing a multi-dimensional field matching algorithm, but also combines a compatibility matrix of field types and relative position information of the fields in the structural body, so that higher field matching accuracy is realized under a complex service scene (such as cross-version data model conversion in a micro-service architecture).
On the basis, the code generator adopts a code generation technology based on abstract syntax tree transformation, and realizes an optimal code generation strategy on the premise of ensuring type safety by carrying out static analysis and optimization on a control flow diagram of the target code. The method not only solves the performance bottleneck in the traditional reflection scheme, but also realizes the execution efficiency close to that of the handwriting code in the running process through intelligent code inlining and branch prediction technologies. Particularly, when a large-scale batch conversion scene is processed, the consumption of CPU and memory resources is obviously reduced by combining a task slicing technology of a coroutine and a cache preheating mechanism.
Another innovation of the present application is its unique error handling mechanism that enables pre-discovery of potential type-conversion risks at compile-time and generation of corresponding defensive code by building a directed acyclic graph model of type conversion. The method not only improves the robustness of codes, but also greatly reduces the problem investigation difficulty in complex service scenes through an error tracking chain and a context-aware log system.
In engineering practice, the application realizes high expandability through configuration driving architecture design. The system not only supports defining complex conversion rules through a declarative configuration file, but also can extend a custom type converter through a plug-in mechanism, so that the system can adapt to various special service requirements, such as the scenes of processing data migration of a legacy system, processing data format conversion of different protocols and the like. In particular in micro-service architecture, the service encapsulation capability of the present application enables it to exist as a stand-alone conversion service, providing high performance data conversion services for the entire system through a standard RESTful interface.
From the technical realization point of view, the application forms a complete technical solution by innovatively and organically combining the static analysis technology in the compiling principle, the resource scheduling strategy in the concurrent programming and the service management concept in the distributed system. The scheme not only solves the performance and maintainability problems in the traditional reflection scheme, but also reserves enough space for future expansion and optimization through the unique technical architecture. For example, the system may adaptively optimize the code generation strategy by collecting performance metrics at run-time, or optimize the accuracy of the field matching algorithm by machine learning techniques.
The organic combination of the technical characteristics enables the method to show remarkable technical effects in practical application, namely, under a large-scale data conversion scene, performance improvement of up to 200% can be achieved compared with a traditional reflection scheme, under a complex service scene, code writing workload of developers can be reduced by more than 70%, and in a system maintenance stage, problem positioning time is shortened by 80% through a perfect error processing mechanism and a log system. The achievement of these effects depends on the synergistic effect of the various technical features of the present application, which is difficult to achieve by simply combining the prior art.
For the purpose of making the objects, technical solutions and advantages of the present application more apparent, embodiments of the present application will be described in further detail below with reference to the accompanying drawings.
A first embodiment of the present application relates to a Go language structure automatic conversion method, the flow of which is shown in fig. 1, the method comprising the steps of:
Step 100. Receiving as input a source construct definition and a target construct definition, each of the source construct definition and the target construct definition comprising a construct name, a field name, and field type information.
Step 200, according to a field mapping rule preset through a configuration file or a default mode, automatically matching fields in the source structure definition and the target structure definition through a field mapping rule engine to generate a field mapping relation, wherein the field mapping relation comprises a mapping rule and a type conversion rule from a source structure field to a target structure field.
Step 300, automatically generating a structure body conversion code by a code generator based on the field mapping relation, wherein the conversion code comprises a field assignment statement and a type conversion statement for converting a source structure body instance into a target structure body instance.
And 400, compiling the conversion code to generate an executable conversion function, wherein the conversion function can convert and fill data in a source structure body instance into a target structure body instance according to the field mapping relation when a program runs, or provide the data as an independent function for a calling party to use.
Specifically, the present embodiment mainly includes four steps:
step 100 is receiving an input. The input includes a source structure definition and a target structure definition, which both need to contain basic information such as structure name, field name, and field type. The purpose of this step is to obtain a detailed definition of the structure that needs to be transformed.
For example, it is assumed that there are two structures:
type User struct{
Name string
Age int
}
type UserDTO struct{
UserName string
UserAge int
}
then User is the source structure and UserDTO is the target structure. Step 100 is to receive complete definition information for both structures.
Step 200 is to generate a field mapping relationship according to a preset rule. The preset rules may be from a configuration file or may be default mapping rules. The field mapping rules engine will match the fields in the source and target structures according to these rules to generate a mapping relationship between them. This mapping relationship includes not only field correspondence but also conversion rules between different types of fields.
Continuing with the example above, the default field mapping rule maps Name to UserName and Age to UserAge. In addition, some types of conversion rules are needed, such as direct assignment of string to string, direct assignment of int to int, and the like.
Step 300 is generating a translation code according to the field mapping relationship. The code generator translates the mapping relationship into executable code, including inter-field assignment statements and necessary type conversion statements.
In the above example, the generated transcoding code may be such that:
func ConvertUserToDTO(user User)UserDTO{
return UserDTO{
UserName:user.Name,
UserAge:user.Age,
}
}
Step 400 is compiling the translation code into an executable translation function for program runtime invocation. When the program needs to perform structure body conversion, the automatically generated conversion function can be called to convert and fill the data of the source structure body into the target structure body. The conversion function may also be called by other codes as a separate public function.
After this compilation, convertUserToDTO functions can be used at runtime:
user:=User{Name:"Tom",Age:18}
dto:=ConvertUserToDTO(user)
In general, this automatic conversion method greatly simplifies the encoding work of the structure body conversion by predefining the conversion rule and automatically generating the code, while ensuring the correctness of the conversion code. The developer no longer needs to write the conversion logic for each structure, but can automate this process through declarative mapping rules, greatly improving development efficiency.
The benefit of this approach is that the field mapping rules are independent and the fields are matched automatically by the engine, rather than simply doing a strong type of one-to-one mapping. This provides the possibility of flexible field conversion, and the rules can be customized by the user through configuration files and the like, so that the method is very flexible.
It should be noted that code generation and compilation occur before the program runs, so that the conversion function in running directly calls the generated target code, which has obvious advantages in performance over dynamic conversion modes such as reflection.
The thought of the method is very valuable to be used as a reference, namely, a mapping rule is generated through static analysis of structural body definition, an object code is generated through the rule, and finally, the object code is compiled into an executable code, and the whole process does not need to be manually participated. This is also a good paradigm for automatically generating repetition codes in other scenarios.
Optionally, the field mapping rules include a field name complete matching rule for processing the situation that field names are completely the same, a field name neglect case matching rule for processing the situation that field names are only different in case, a field name containing relation matching rule for processing the situation that field names have containing relations, and a user-defined mapping rule for allowing a user to specify the mapping relation between specific fields through a configuration file.
Optionally, the type conversion rules comprise conversion rules among basic data types, conversion rules of time types and character string types, conversion rules of numerical precision, conversion rules of user-defined types and conversion methods among user-defined types, wherein the conversion rules are used for processing conversion among basic data types of integers, floating points and Boolean values, the conversion rules comprise analysis and formatting rules of time formats, the conversion rules of numerical precision are used for processing conversion among numerical value types with different precision and precision control, and the conversion rules of user-defined types support conversion methods among user-defined specific types.
Optionally, the field mapping rule engine comprises a field name matching module, a field type matching module and a priority processing module, wherein the field name matching module is used for matching fields in a source structure body and a target structure body according to field name similarity and comprises complete matching, partial matching and fuzzy matching, the field type matching module is used for matching fields in the source structure body and the target structure body according to field type corresponding relation and supporting type compatibility checking and automatic type conversion, and the priority processing module is used for determining a field mapping relation when matching conflicts according to preset priority rules, wherein the field mapping relation comprises name priority, type priority or custom priority rules.
Specifically, regarding step 200 and step 300, the following are involved:
Four possible field mapping rules:
1) And the field names are completely matched with rules, namely, when fields with the same name exist in the source structure body and the target structure body, the mapping relation is directly established. For example, a source structure has a field called "Name" and a target structure has a field called "Name", so that both can be mapped directly.
2) The field names ignore case matching rules, which is a relaxation of the first rule, allowing the case of the field names to be different. For example, "UserName" of a source structure may be mapped to "UserName" of a target structure "
username。
3) The field names contain a relationship matching rule that a mapping can also be established if the field name of one structure contains the field name of another structure. If the source structure has "HomeAddress" and the target structure has "Address", then both can also be mapped.
4) The user defines the mapping rule, which allows the user to explicitly specify the special mapping relation between certain fields by means of configuration and the like. This is helpful in handling special cases.
Further, optional type conversion scenarios in the type conversion rule:
Conversion between basic data types, such as int-to-float, pool-to-string, etc.
Conversion of time type and character string type. The time types often have a specific format and need to be properly parsed and formatted at the time of conversion.
Conversion of numerical accuracy. For example, the source field is float64, the target field is float32, and a process precision cut-off is required.
Conversion of custom types. If the structure contains a user-defined type, a user-defined type conversion rule is required. This may be achieved by letting the user provide a transfer function.
Optionally, the three main components of the engine of the field mapping rules engine section:
And the field name matching module is responsible for matching the fields of the source structure body and the target structure body according to the field name matching rules. Full matches, partial matches (e.g., containment relationships), fuzzy matches (e.g., case insensitive) all belong to its duties.
And the field type matching module is responsible for checking whether the types of the two matched fields are compatible and whether type conversion can be performed.
The priority processing module is used for solving the conflict situation that one field is possibly matched with a plurality of fields. The final mapping relation is determined by a preset priority rule, such as priority with high matching degree, priority of name matching over type matching, and the like.
Through the implementation of the optional specific rules and engines, the whole field mapping process becomes very flexible and powerful, and various practical application scenes can be processed. The method is also a bright point, does not simply make one-to-one strong matching, but automatically processes the mapping relation through a set of intelligent rule engine, so that the workload of a user is reduced to the maximum extent, and different requirements are met to the maximum extent. The design of the rule engine also has good expandability, and new rules can be flexibly added under the original rule system or the priority of the rules can be adjusted so as to meet the new conversion requirement.
The back of these rules reflects in fact some requirements and problems in the conversion of the structure, such as incomplete consistency of field names, incomplete uniformity of field types, different emphasis of matching in different scenarios (such as name importance or type importance), etc. These problems, if handled manually by the developer, can be a very tedious and error-prone process. The introduction of a rules engine solves this problem well, allowing the developer to focus on the business logic itself and to handle these conversion details by passing them through the framework.
Optionally, the code generator generates the conversion code by analyzing the field mapping relation to generate a signature of the conversion function, including a parameter type definition and a return value type definition, and generating a conversion statement with safe type according to the field type, including:
Direct conversion statements for basic types, for handling conversions between basic data types;
parsing and formatting statements for time formats for handling the conversion of time types;
A conversion statement for numerical precision for handling conversion of numerical values of different precision;
The method comprises the steps of generating a null check code for a pointer type field, generating an error processing code and an exception capturing code, and ensuring the safety of a conversion process.
Specifically, first, the core work of the code generator is to generate the translated code, which is divided into several key stages:
The first stage is to generate a function signature, which is equivalent to designing a "framework" of functions. The generator needs to determine the input parameters and return value types of the function. For example, when a database model needs to be converted into an API response model, the function signature needs to use the database model as an input parameter and the API response model as a return value.
The second stage is to handle specific field transformations, which are divided into four cases:
Basic type conversion, which processes the simplest data type conversion, such as converting an integer to a floating point number, or converting a string to an integer.
Time-type conversion is more specific because time data often needs to be converted in a specific format. For example, it is necessary to convert a time stamp in a database into a user-friendly date string, or conversely, to parse a date string input by a user into a standard time format.
Numerical precision conversion this involves precision conversion between numerical types, such as converting a 64-bit floating point number to a 32-bit floating point number, or precision control when handling monetary amounts. Such conversions require special attention to precision loss and rounding rules.
Custom type conversion-this handles the special types that the user has custom, and may require specific conversion logic to be implemented. Such as converting a type containing detailed address information into a simple address string.
The third stage is to process the pointer type field, which is an important security consideration. When handling pointer types, it is necessary to check whether it is a null pointer and provide a default value if necessary. This is just as care is needed in handling fragile items to ensure that program crashes are not caused by mishandling.
The fourth stage is the generation of an error handling mechanism. This corresponds to adding "seat belts" to the overall conversion process, including:
checking data validity
Handling possible transition anomalies
Providing clear error information
Ensure that even if a problem occurs, the program can be processed gracefully
The measures together form a complete protective net, so that the safety and reliability of the data conversion process are ensured. Just like the operation of a vehicle when driving, attention is paid to safety measures such as safety belts, anti-collision systems and the like.
The whole code generation process is like an automatic production line, each stage is focused on a specific task, and finally high-quality and reliable conversion codes are produced. The automatic mode not only improves the development efficiency, but also reduces human errors and ensures the accuracy and safety of the conversion process.
The design fully considers various situations possibly encountered in actual development, provides a comprehensive solution, ensures development efficiency and ensures code quality.
Optionally, the transfer function further has the following features:
supporting batch conversion of a plurality of structure body examples, including batch processing of set types such as arrays, slices and the like;
the concurrent safe conversion operation is supported, and the data consistency in the multithreading environment is ensured through mutual exclusion lock or atomic operation;
providing error return values to indicate anomalies in the conversion process, including error information such as type mismatch, field missing, and the like;
containing code logic for handling one or more of the following special cases:
when there is a field in the source structure that is not in the target structure, deciding whether to ignore or log according to the configuration;
when there is a field in the target structure that is not in the source structure, setting a default value or holding the field to a zero value according to the configuration;
Attempting a type conversion or reporting an error when the types of the homonymous fields in the source and target fabrics do not match;
when the structure body is nested and converted, the conversion of nested fields is processed recursively;
Upon conversion of the pointer type field, null pointer checking and memory allocation logic is included.
Specifically, firstly, the batch conversion function greatly improves the processing efficiency. Imagine that 1000 user records are read from the database, all of which need to be converted to API response format. The batch conversion function allows processing of these data at once, rather than repeatedly invoking a single conversion function 1000 times. This is much more efficient than manual single piece manufacturing, just like factory flow line production.
The concurrent security feature ensures data security in a multi-threaded environment. For example, a Web server processes multiple requests simultaneously, all of which require data conversion. Through the protection of mutual exclusion lock or atomic operation, just like adding a lock to shared resources, only one thread can be ensured to modify data at the same time, and data confusion is avoided.
Error handling mechanisms provide clear problem feedback. When a problem occurs in the conversion process, such as type mismatch or field missing, the function will not silence and fail, but return specific error information.
Further, special case processing logic handles the following complex scenario:
More source structure fields than target structures, such as where the source data contains user details, the API need only expose basic information. The extra fields may be ignored directly at this point, or logged for tracking, depending on configuration choices. This is just like a box of fruit is received, and it is optional to take only the required portion, either for storage or for immediate discard.
The target structure field is more than the source structure, for example, the new version of the API needs to expose more information, but the source data is still in the old format. A default value may be set for the newly added field at this time, or a value of zero may be maintained. This is similar to fields that are encountered without corresponding information when filling out a form, and a fill default or blank may be selected.
Processing of homonymous field type mismatch-when fields of the same name but different types are encountered, the system will attempt a reasonable type conversion and report an error if conversion is not possible. This is just as if it were necessary to convert the celsius temperature to fahrenheit, with well-defined conversion rules being followed.
Processing of nested structures, namely processing complex nested structures, requires deep processing of each layer of conversion layer by layer. The system recursively processes each level, ensuring complete data conversion.
Special handling of pointer types-pointer types require special care to first check if it is a null pointer and then allocate new memory space if necessary. This is just like when handling fragile products, it is necessary to check the package for integrity before new safeguards are prepared.
These features together create a robust conversion system that can handle not only simple conversion scenarios but also various complications.
In the whole, the functional characteristics enable the conversion function to be more perfect and practical, can meet various requirements in practical development, and ensure the safety, reliability and high efficiency of the data conversion process.
Optionally, before step 300, the method further includes generating or updating the field mapping relation according to field mapping configuration information input by a user through a graphical interface, specifically including:
The configuration information adopts JSON or YAML format, so as to ensure the readability and maintainability of the configuration;
the field mapping rule configuration supports the corresponding relation and conversion rule between the custom fields;
Type conversion rule configuration, allowing the conversion method between specific types to be customized;
ignoring field configuration, specifying fields that do not need to be converted;
Default configuration, setting default for optional fields in the target structure, providing verification and error prompt functions of configuration files, ensuring the correctness and effectiveness of configuration, supporting version control and backup management of the configuration files, and facilitating rollback and tracking of configuration.
Optionally, after step 400, the following steps are further included:
(1) Encapsulating the conversion function into RESTful API and providing a network call interface, specifically comprising:
Step 410, defining standard API request and response formats;
Step 420, implementing authentication and authorization mechanisms to ensure the security of API calls;
step 430, providing API documents and call examples;
(2) Providing an online fabric conversion service through the RESTful API specifically includes:
step 440, receiving and processing a batch conversion request of a user;
-step 450, performing a structure transformation and generating a transformation result;
Step 460, implementing a request throttling and timeout handling mechanism;
Step 470, recording an API call log for problem investigation and performance optimization;
Step 480 of returning a response containing the detailed conversion result and the error information.
Optionally, the following performance optimization measures are also included:
(1) Generating a static conversion code at the compiling period, and avoiding performance cost caused by using the reflection;
(2) The parallel processing optimization of the batch conversion scene specifically comprises the concurrent processing by using a cooperative path pool, and the task slicing and load balancing;
(3) The method comprises the steps of carrying out inline optimization on the conversion codes, and particularly reducing the cost of function call;
(4) The caching mechanism for realizing the conversion result comprises the steps of caching and storing the common conversion result by using a memory, realizing the expiration strategy and the updating mechanism of the cache, and providing the functions of cache statistics and monitoring.
The automatic switching method for the Go language structure body provided by the application provides a new technical scheme aiming at the technical problems of complicated code switching, error-prone, low-efficiency and poor maintainability of the structure body in the existing Go language development. The method automatically analyzes the input source structure body and target structure body definition through the combination of technical means such as a field mapping rule engine, a code generator, a conversion function and the like to generate the efficient, safe and maintainable conversion code, thereby improving the efficiency and quality of structure body conversion in Go language development.
Specifically, the field mapping rule of the present application adopts a new design mode. The field mapping rule engine can process various complex field mapping scenes by realizing various matching rules and strategies such as field name matching, field type matching, priority processing and the like and combining user-defined configuration. The field mapping rules are matched with the code generator, the field mapping relation obtained by matching is converted into the type-safe and efficient conversion code, and the problem caused by manually writing the conversion logic is solved.
In terms of code generation, the code generator of the present application achieves specific technical features. The method can generate corresponding type conversion sentences according to field types, process the conditions of pointer types, nested structures, custom types and the like, and ensure the correctness and completeness of the generated conversion codes. The code generator cooperates with the conversion function, and the conversion function executes the generated conversion code during running to realize the functions of batch conversion, concurrency safety, error processing and the like, thereby embodying the technical characteristics of the application in the aspects of performance optimization and exception handling.
Furthermore, the extended functionality and optimization of the present application further enhances its utility and performance. Through functions of graphic interface configuration, version management, RESTful API support and the like, the application can adapt to different development environments and requirements. Through technical means such as code generation during compiling, parallel processing, inline optimization, a caching mechanism and the like, the conversion performance is improved. In the aspects of error processing and code quality assurance, the application realizes mechanisms such as type compatibility checking, configuration verification, exception handling, log recording and the like, and quality assurance measures such as code verification, code optimization, unit test and the like.
In summary, the automatic conversion method of the Go language structure provided by the application solves the efficiency and quality problems of structure conversion in Go language development through the design and combination of key technologies such as a field mapping rule engine, a code generator, a conversion function and the like and the realization of performance optimization, error processing, expansion function and the like. Compared with the prior art, the application forms a new technical scheme in the aspects of conversion automation degree, code execution efficiency, applicable scene, user convenience and the like, and has practical application value.
In order to better understand the technical solution of the present application, the following description is given with reference to a specific example, in which details are listed mainly for the purpose of understanding, and are not intended to limit the scope of protection of the present application.
In this example, an automatic Go language structure conversion method is provided, which specifically includes:
1. automatic field mapping technique
-A field mapping rule engine:
An extensible set of field mapping rule engines is provided that default to support direct mapping of field names. The engine may parse the definition of the source and target constructs and automatically match the field names and types.
Innovation point-support of user-defined mapping rules, e.g. specifying correspondence between fields by means of configuration files.
Application advantages are avoiding manual matching of fields, improving efficiency and accuracy.
-A field ignore mechanism:
Providing flexible override rules allows a developer to specify fields that do not require conversion by tagging fields or configuration files.
Innovation point: dynamically adjusting the ignore logic in combination with compile-time checking and runtime configuration.
Application advantages of reducing redundant switching logic and improving tool applicability.
Specifically, in the present example, the automatic field mapping technique is implemented first. The field mapping rule engine adopts an extensible design architecture, and has the basic function of analyzing definition information of a source structure body and a target structure body and automatically establishing a mapping relation between fields. The engine by default supports direct mapping based on field names while allowing the user to customize the mapping rules through the configuration file. The configuration file adopts JSON format, and a user can explicitly specify the corresponding relationship between the source structure field and the target structure field. In addition, the field mapping rules engine implements a field override mechanism that a developer can specify which fields do not need to be converted by adding a Tag (Tag) to the fabric field or setting an override rule in the configuration file.
2. Multi-type data conversion support
Built-in type converter:
a unified type conversion interface is provided to support automatic conversion from common data types (such as 'time. Time', 'Decimal. Decimal') to target types (such as character strings).
Innovation point-based on reflection or interface assertion techniques, flexible type recognition and conversion is achieved.
Application advantage of adapting to the requirements of different traffic scenarios, simplifying the type conversion logic.
-An advanced type parser:
Parsing of the string into complex data types (e.g., time and high precision values) is achieved.
Innovation point, the analysis rule of common time format and numerical precision is built in, and the user expansion is supported.
Application advantages of ensuring the accuracy of the data during conversion and avoiding format errors.
Specifically, the type conversion system of the present example implements conversion support for multiple data types. Built-in type converters provide a unified conversion interface for handling conversions between common data types. For example, the time. Time type is converted into a string type, or the decmal. Decmal type is converted into a basic value type. The type converter uses reflection technology to identify the field type and execute corresponding conversion operation according to preset conversion rules. For complex data types, specialized type resolvers are implemented. The resolvers can process the analysis from the character string to the time type, support various time formats, and also can process the analysis and conversion of high-precision numerical values, so that the numerical value precision is ensured not to be lost in the conversion process.
3. Pointer type and non-pointer type unified handling
-Pointer type support:
A special handling mechanism for pointer objects is provided, automatically checking if the input is 'nil' and returning a secure default value.
Innovation point-design unified pointer processing logic inside the tool, avoiding manual inspection of 'nil'.
Application advantage-enhancing the robustness and security of the code.
Specifically, in terms of pointer type processing, the present example implements a unified processing mechanism. When a pointer-type field is encountered, the system automatically checks if it is nil. If the nil pointer is detected, the system returns a corresponding zero value or a default value according to the field type, so that null pointer abnormality is avoided. This processing mechanism is integrated into the code generation template, ensuring that the generated translation code has perfect null processing logic.
4. Batch conversion optimization
-A bulk data conversion mechanism:
the efficient batch data conversion function is provided, and automatic traversing and conversion of slices and arrays are supported.
Innovation point-optimizing the performance of large-scale data conversion in combination with parallel processing techniques.
The application advantage is that the processing efficiency is remarkably improved, and the requirement of high concurrency scenes is met.
In particular, the present example implements an optimized batch processing mechanism for the requirements of batch data conversion. When the input data is of slice or array type, the system will automatically adopt parallel processing mode. In particular, using goroutine features of the Go language, data is processed concurrently in slices, each goroutine being responsible for processing a portion of the data's conversion work. The system can automatically adjust concurrency according to the CPU core number and the data volume so as to achieve the optimal processing performance.
5. Dynamic code generation
-A code generation module:
the conversion code of the Go language is dynamically generated according to the source structure and the target structure definitions input by the user.
Innovation point is that the dynamic generation and injection of codes are realized by combining 'text/template' and 'Go/ast' of the Go language.
Application advantage-reducing duplication of labour, leaving the developer to concentrate on business logic.
Specifically, the code generation module is one of the core components of the present example. The module generates a code frame by using text/template package of Go language, and then parses and optimizes the generated code by Go/ast package. The code generation process can consider various aspects of field mapping rules, type conversion rules, pointer processing and the like to generate complete conversion function implementation. The generated code contains necessary error handling and type checking logic to ensure the security of the conversion process.
6. Integration with development environments
Tool integration and extension interface:
A command line tool (CLI) is provided that allows a developer to quickly generate and debug translation code.
Innovation point-support for real-time preview and error checking and provide a seamless experience in connection with development environments.
Application advantages-improving the ease of use and user satisfaction of the tool.
Further, for convenience of developer use, the present example provides a command line tool. The tool supports interactive operations, and a developer can specify definition files of a source structure body and a target structure body through command line parameters, and the tool can automatically generate corresponding conversion codes. The tool also implements a code preview function that allows the developer to view the code content before it is generated and make adjustments as necessary. Meanwhile, the tool integrates an error checking mechanism, and can timely find out potential type mismatch or configuration error problems.
Optionally, in the present application, in order to further enhance the practicability and adaptability of the system, a series of high-level features are implemented, including configuring functions of hot update, cache mechanism, transaction management, remote call interface, etc., and specific implementation of these features will be described in detail below.
In particular, in the aspect of configuration hot update, the application adopts a dynamic configuration loading mechanism, so that the system can update the conversion rule in real time without restarting. The system continuously monitors the change of the configuration file through the file monitoring service, and when the configuration is detected to be changed, the configuration reload flow is automatically triggered. To accommodate different usage scenarios, the system supports reading configuration information from a variety of data sources, including JSON files, YAML files, relational databases, environment variables, and remote configuration centers, among others. When a plurality of configuration sources exist, the system loads the configurations in sequence according to a preset priority strategy, so that no conflict is generated between the configurations. Meanwhile, the system also realizes a configuration rollback mechanism, and when the new configuration causes system abnormality, the system can automatically fall back to the configuration of the last stable version, thereby ensuring the continuous availability of the system.
In the aspect of performance optimization, the application introduces a multi-level caching mechanism. The system adopts an LRU (least recently used) algorithm to realize memory caching, and is used for storing conversion results which are frequently used recently. For caching data, a reasonable life cycle (TTL) is set in the system, and excessive memory occupation is avoided through a regular cleaning mechanism. In the distributed deployment scene, the system also supports the use of a distributed cache system such as Redis and the like as a secondary cache, and realizes the data sharing of the cross-process. When the field mapping rule is changed, the cache system can automatically identify the affected cache item and clear the affected cache item, so that the consistency of data is ensured.
In order to ensure the reliability of data conversion, the application realizes a complete transaction management mechanism. Upon performing a fabric transformation, the system automatically creates a transaction context, recording all operations in the transformation process. If an exception occurs in the conversion process, the system can automatically roll back to a state before conversion according to the transaction log. In addition to automatic rollback, the system also supports user-defined rollback policies, where full rollback or only data of the erroneous portion may be selected. For the case of conversion failure, the system can persist detailed failure information (including error fields, error types, data states, etc.) into a specialized error log database, facilitating subsequent problem analysis and repair.
In terms of system integration, the present application provides gRPC-based remote call interfaces. By using Protocol Buffers as a data serialization format, the system has significant advantages in terms of network transmission efficiency. The gRPC interface supports bidirectional streaming communication, and is particularly suitable for processing large-scale data conversion tasks. Thanks to the cross-language nature of gRPC, the system can be easily invoked by other programming languages (such as Java, python, C ++, etc.). Under the distributed deployment scene, the system combines the load balancing function of gRPC to realize the intelligent allocation of the conversion task.
Meanwhile, the application also supports the WebSocket protocol, and provides an ideal solution for the real-time data conversion scene. Through the WebSocket long connection, the system can push the result to the client immediately after the conversion is completed, and delay caused by traditional HTTP polling is avoided. When errors occur in the conversion process, the system can also push error information to relevant clients in real time, and the user can be helped to quickly find and solve the problems. The system realizes the management of the WebSocket connection pool, and effectively reduces the cost of frequently establishing connection.
In the aspect of data security, the application realizes a comprehensive encryption mechanism. For sensitive fields (such as passwords, identification numbers, bank account numbers and the like), the system defaults to the AES-256 algorithm for encryption storage. In the network transmission process, the system uses RSA asymmetric encryption to ensure the data security. For special data such as user passwords, the system adopts algorithms such as SHA-256 or bcrypt to carry out one-way hash processing. In addition, the system also realizes fine-grained access control, and an administrator can set different data access rights for different users.
In order to improve user experience, the application develops a visual configuration interface. Through the graphical interface, the user can intuitively view and edit the field mapping relationship, and the system supports adjustment of the field mapping through a drag operation. In debug mode, the user can input test data and view the conversion results in real time, and the system will present detailed conversion process logs, including conversion status and data changes for each field. When a problem is found, the system can provide intelligent fault diagnosis and repair suggestions, and help a user to quickly optimize conversion rules.
Through the realization of the advanced characteristics, the application not only solves the basic structural body conversion requirement, but also provides comprehensive support in the aspects of usability, performance, safety and the like, so that the application can adapt to various complex application scenes.
The key points and the points to be protected of the present example mainly include the following aspects:
First, the present example provides an automated field mapping rule generation and application mechanism. The method is technically characterized in that field definition of a source structure body and a target structure body is analyzed through a field mapping rule engine, and a mapping relation between fields is established according to similarity of field names or field types. This example supports specifying the correspondence of fields by a Tag (Tag) of a configuration file or a structure body field. The content to be protected in this example includes a method for generating field mapping rules and implementation logic, and a field mapping technical framework supporting dynamic rule definition and extension.
Second, dynamic code generation techniques are another key point of this example. Traditional structure body conversion requires a developer to manually write field assignment codes, is easy to generate errors and has high maintenance cost. The present example generates a translation code from a text/template package and a Go/ast package in the Go language based on the source and target structure definitions provided by the user. The content to be protected in the example comprises an algorithm and an implementation method for generating dynamic codes, and relates to the technology of designing a code template, analyzing and modifying a grammar tree and the like.
The present example provides support for multi-type data conversion. The struct field may relate to a complex data type such as time. Converting these types requires consideration of format compatibility, loss of accuracy, and the like. The present example implements a converter between common data types while providing a type parser for conversion between strings and complex data types. The content to be protected in this example includes the design and implementation of type converters, and the definition and extension mechanisms of complex data type conversion rules.
In terms of pointer type processing and batch conversion, the present example designs a unified pointer type processing mechanism. During the fabric conversion, for the field of the null pointer (nil), the mechanism avoids program exceptions by automatically detecting and returning a default value. Aiming at a batch conversion scene of large-scale data, the method realizes an optimization method based on a parallel processing technology, and improves conversion performance through utilization of multi-core CPU resources. The content to be protected in this example includes a method for unified processing of pointer type and non-pointer type, and a method for designing and optimizing performance of batch conversion algorithm.
In terms of field processing mechanisms, the present example provides field ignoring and differencing processing functions. Fields that do not require conversion may be specified by a configuration file or a structure tag. For fields requiring special handling, default settings or specific format conversions are supported. The content to be protected in this example includes definition and implementation of field ignoring rules, and specific implementation logic for differentiated field handling.
In terms of development tool support, the present example implements a command line tool (CLI). The tool is used to generate the fabric translation code and support code debugging and testing. The content to be protected in the example comprises a design and implementation method of a CLI tool, and relates to technical content such as user interaction, parameter analysis, code generation and the like.
In terms of performance and reliability, the method replaces reflection calling by a code generation mode, and reduces performance overhead in running. Aiming at the change of the structural body definition, the example realizes an automatic adaptation mechanism and reduces the workload of code maintenance. The content to be protected in this example includes the implementation of the relevant performance optimization algorithm, and the adaptive mechanism of the structure change.
In summary, the present example solves the problems of efficiency, correctness, maintainability, etc. in Go language structure conversion by the above technical solution. The key technical points and the contents to be protected related to the example comprise aspects of field mapping rules, dynamic code generation, multi-type data conversion, pointer type processing, batch conversion optimization, field neglect and differentiation processing, tool integration, performance optimization and the like, and a complete structural body conversion technical scheme is formed.
A second embodiment of the present application relates to an Go language-structure automatic conversion system having a structure as shown in fig. 2, the Go language-structure automatic conversion system comprising:
A receiving module for receiving as input a source structure definition and a target structure definition, each of the source structure definition and the target structure definition comprising a structure name, a field name, and field type information;
the field mapping rule engine is used for automatically matching the fields in the source structure body definition and the target structure body definition according to a field mapping rule preset through a configuration file or a default mode to generate a field mapping relation, wherein the field mapping relation comprises a mapping rule and a type conversion rule from a source structure body field to a target structure body field;
A code generator for automatically generating a structure conversion code based on the field mapping relation, the conversion code including a field assignment statement and a type conversion statement for converting a source structure instance into a target structure instance;
and the compiling module is used for compiling the conversion codes to generate executable conversion functions, and the conversion functions can convert and fill the data in the source structure body instance into the target structure body instance according to the field mapping relation when the program runs or provide the data as independent functions for a calling party to use.
The first embodiment is a method embodiment corresponding to the present embodiment, and the technical details in the first embodiment can be applied to the present embodiment, and the technical details in the present embodiment can also be applied to the first embodiment.
It should be noted that, it should be understood by those skilled in the art that the implementation functions of the modules shown in the embodiments of the Go language structure automatic conversion system described above may be understood with reference to the description of the Go language structure automatic conversion method described above. The functions of the modules shown in the above-described implementation of the Go language structure automatic conversion system may be implemented by a program (executable instructions) running on a processor, or may be implemented by a specific logic circuit. The Go language structure automatic conversion system according to the embodiment of the present application may be stored in a computer-readable storage medium if implemented in the form of a software function module and sold or used as a separate product. Based on such understanding, the technical solutions of the embodiments of the present application may be embodied in essence or a part contributing to the prior art in the form of a software product stored in a storage medium, including several instructions for causing a computer device (which may be a personal computer, a server, or a network device, etc.) to execute all or part of the methods described in the embodiments of the present application. The storage medium includes various media capable of storing program codes, such as a usb (universal serial bus), a removable hard disk, a Read Only Memory (ROM), a magnetic disk, or an optical disk. Thus, embodiments of the application are not limited to any specific combination of hardware and software.
Accordingly, embodiments of the present application also provide a computer storage medium having stored therein computer executable instructions which when executed by a processor implement the method embodiments of the present application.
In addition, the embodiment of the application also provides an automatic Go language structure conversion system, which comprises a memory for storing computer executable instructions and a processor, wherein the processor is used for realizing the steps in the method embodiments when executing the computer executable instructions in the memory. The Processor may be a central processing unit (Central Processing Unit, abbreviated as "CPU"), other general purpose Processor, digital signal Processor (DIGITAL SIGNAL Processor, abbreviated as "DSP"), application SPECIFIC INTEGRATED Circuit, application Specific Integrated Circuit (ASIC), etc. The aforementioned memory may be a read-only memory (ROM), a random access memory (random access memory RAM), a Flash memory (Flash), a hard disk, a solid state disk, or the like. The steps of the method disclosed in the embodiments of the present application may be directly embodied in a hardware processor for execution, or may be executed by a combination of hardware and software modules in the processor.
It should be noted that in the present patent application, relational terms such as first and second, and the like are used solely to distinguish one entity or action from another entity or action without necessarily requiring or implying any actual such relationship or order between such entities or actions. Moreover, the terms "comprises," "comprising," or any other variation thereof, are intended to cover a non-exclusive inclusion, such that a process, method, article, or apparatus that comprises a list of elements does not include only those elements but may include other elements not expressly listed or inherent to such process, method, article, or apparatus. Without further limitation, an element defined by the phrase "comprising" does not exclude the presence of other like elements in a process, method, article, or apparatus that comprises the element. In the present patent application, if it is mentioned that an action is performed according to an element, it means that the action is performed according to at least the element, and includes both cases that the action is performed according to only the element and that the action is performed according to the element and other elements. Multiple, etc. expressions include 2, 2 times, 2, and 2 or more, 2 or more times, 2 or more.
All references mentioned in this disclosure are to be considered as being included in the disclosure of the application in its entirety so that modifications may be made as necessary. Further, it is understood that various changes or modifications of the present application may be made by those skilled in the art after reading the above disclosure, and such equivalents are intended to fall within the scope of the application as claimed.

Claims (7)

1.一种Go语言结构体自动转换方法,其特征在于,包括以下步骤:接收源结构体定义和目标结构体定义作为输入,所述源结构体定义和目标结构体定义均包含结构体名称、字段名称和字段类型信息;对包含所述源结构体定义与目标结构体定义的Go源代码进行预编译期静态分析,将其解析为抽象语法树(AST)以提取字段定义,并通过字段映射规则引擎根据所述字段定义中的字段名称、字段类型及字段在结构体中的相对位置信息,按照通过配置文件或默认方式预设的优先级规则,自动匹配所述源结构体和目标结构体中的字段,生成字段映射关系,所述字段映射关系包含源结构体字段到目标结构体字段的映射规则和类型转换规则;1. A method for automatic conversion of Go language structures, characterized by the following steps: receiving a source structure definition and a target structure definition as input, wherein both the source structure definition and the target structure definition contain structure name, field name, and field type information; performing pre-compilation static analysis on the Go source code containing the source structure definition and the target structure definition, parsing it into an abstract syntax tree (AST) to extract field definitions, and automatically matching the fields in the source structure and the target structure according to the field name, field type, and relative position information of the fields in the structure, and according to the priority rules preset by the configuration file or default method, generating a field mapping relationship, wherein the field mapping relationship contains the mapping rules from the source structure fields to the target structure fields and the type conversion rules; 基于所述字段映射关系构建类型转换的有向无环图(DAG)模型,在代码生成之前对所述DAG模型进行拓扑校验以执行编译期错误预检,并生成防御性代码和错误追踪链,在检测到类型不匹配时输出错误定位信息,通过代码生成器采用基于抽象语法树变换的代码生成技术,自动生成结构体转换代码,并对目标代码的控制流图进行静态分析和优化,实现代码内联和分支预测;所述转换代码包含将源结构体实例转换为目标结构体实例的字段赋值语句和类型转换语句;所述代码生成器生成转换代码的具体步骤包括:分析字段映射关系生成转换函数的签名,包括参数类型定义和返回值类型定义;根据字段类型生成类型安全的转换语句,具体包括:针对基本类型的直接转换语句,用于处理基本数据类型之间的转换;针对时间格式的解析和格式化语句,用于处理时间类型的转换;针对数值精度的转换语句,用于处理不同精度数值的转换;针对自定义类型的特殊处理语句,用于处理用户定义的类型转换;为指针类型字段生成空值检查代码,包括空指针判断和默认值处理;生成错误处理和异常捕获代码,确保转换过程的安全性;将所述转换代码编译生成可执行的转换函数,所述转换函数可在程序运行时将源结构体实例中的数据按照所述字段映射关系转换并填充到目标结构体实例中,或作为独立的函数提供给调用方使用;在批量转换场景时,结合协程池的任务分片技术和缓存预热机制。Based on the field mapping relationship, a directed acyclic graph (DAG) model for type conversion is constructed. Before code generation, the DAG model undergoes topology verification to perform compile-time error pre-checking and generate defensive code and error tracing chains. When a type mismatch is detected, error location information is output. A code generator employs abstract syntax tree transformation-based code generation technology to automatically generate struct conversion code. Static analysis and optimization of the target code's control flow graph are performed to achieve code inlining and branch prediction. The conversion code includes field assignment statements and type conversion statements that convert source struct instances to target struct instances. The specific steps of the code generator in generating the conversion code include: analyzing the field mapping relationship to generate the signature of the conversion function, including parameter type definitions and return value type definitions; generating type-safe conversion statements based on the field types, specifically including… This includes: direct conversion statements for basic types, used to handle conversions between basic data types; parsing and formatting statements for time formats, used to handle time type conversions; conversion statements for numerical precision, used to handle conversions between values of different precision; special processing statements for user-defined types, used to handle user-defined type conversions; generating null check code for pointer type fields, including null pointer checks and default value handling; generating error handling and exception handling code to ensure the safety of the conversion process; compiling the conversion code into executable conversion functions, which can convert and populate the data in the source structure instance into the target structure instance according to the field mapping relationship at runtime, or be provided as an independent function to the caller; in batch conversion scenarios, combining coroutine pool task sharding technology and cache preheating mechanism. 2.如权利要求1所述的方法,其特征在于,所述字段映射规则包括:字段名称完全匹配规则,用于处理字段名称完全相同的情况;字段名称忽略大小写匹配规则,用于处理字段名称仅大小写不同的情况;字段名称包含关系匹配规则,用于处理字段名称存在包含关系的情况;用户自定义的映射规则,允许用户通过配置文件指定特定字段间的映射关系。2. The method as described in claim 1, wherein the field mapping rules include: field name exact match rules for handling cases where field names are exactly the same; field name case-insensitive match rules for handling cases where field names differ only in case; field name inclusion relationship match rules for handling cases where field names have an inclusion relationship; and user-defined mapping rules that allow users to specify mapping relationships between specific fields through configuration files. 3.如权利要求1所述的方法,其特征在于,所述类型转换规则包括:基本数据类型之间的转换规则,用于处理整数、浮点数、布尔值的基本类型之间的转换;时间类型与字符串类型的转换规则,包括时间格式的解析和格式化规则;数值精度的转换规则,用于处理不同精度数值类型之间的转换和精度控制;自定义类型的转换规则,支持用户定义特定类型之间的转换方法。3. The method as described in claim 1, wherein the type conversion rules include: conversion rules between basic data types, used to handle conversions between basic types such as integers, floating-point numbers, and booleans; conversion rules between time types and string types, including parsing and formatting rules for time formats; conversion rules for numerical precision, used to handle conversions and precision control between numerical types with different precisions; and conversion rules for custom types, supporting user-defined conversion methods between specific types. 4.如权利要求1所述的方法,其特征在于,所述字段映射规则引擎包括:字段名称匹配模块,用于根据字段名称相似度匹配源结构体和目标结构体中的字段,包括完全匹配、部分匹配和模糊匹配;字段类型匹配模块,用于根据字段类型对应关系匹配源结构体和目标结构体中的字段,支持类型兼容性检查和自动类型转换;优先级处理模块,用于根据预设优先级规则确定匹配冲突时的字段映射关系,包括名称优先、类型优先或自定义优先级规则。4. The method as described in claim 1, wherein the field mapping rule engine comprises: a field name matching module, used to match fields in the source structure and the target structure according to the similarity of field names, including complete matching, partial matching and fuzzy matching; a field type matching module, used to match fields in the source structure and the target structure according to the correspondence of field types, supporting type compatibility checks and automatic type conversion; and a priority processing module, used to determine the field mapping relationship when there is a matching conflict according to a preset priority rule, including name priority, type priority or custom priority rule. 5.如权利要求1所述的方法,其特征在于,所述转换函数还具有以下特征:5. The method as described in claim 1, wherein the transformation function further has the following characteristics: 支持批量转换多个结构体实例,包括数组、切片的集合类型的批量处理;Supports batch conversion of multiple struct instances, including batch processing of arrays and slice collection types; 支持并发安全的转换操作,通过互斥锁或原子操作确保多线程环境下的数据一致性;It supports concurrent and safe conversion operations, ensuring data consistency in a multi-threaded environment through mutex locks or atomic operations; 提供错误返回值指示转换过程中的异常,包括类型不匹配、字段缺失的错误信息;Provide error return values to indicate exceptions during the conversion process, including error messages such as type mismatch and missing fields; 包含用于处理以下一种或多种特殊情况的代码逻辑:Includes code logic for handling one or more of the following special cases: 源结构体中存在目标结构体中没有的字段时,根据配置决定是忽略还是记录日志;If the source structure contains fields that are not present in the target structure, the configuration determines whether to ignore them or log them. 目标结构体中存在源结构体中没有的字段时,根据配置设置默认值或保持字段为零值;If the target structure contains fields that are not present in the source structure, set default values or keep the fields with zero values according to the configuration. 源结构体与目标结构体中同名字段的类型不匹配时,尝试进行类型转换或报告错误;When the types of fields with the same name in the source structure and the target structure do not match, attempt to perform type conversion or report an error. 结构体嵌套转换时,递归处理嵌套字段的转换;When performing nested struct conversions, the conversion of nested fields is processed recursively. 指针类型字段转换时,包含空指针检查和内存分配逻辑。When converting pointer type fields, null pointer checks and memory allocation logic are included. 6.如权利要求1所述的方法,其特征在于,在基于所述字段映射关系,通过代码生成器自动生成结构体转换代码之前,还包括:根据用户通过图形界面输入的字段映射配置信息,生成或更新所述字段映射关系,具体包括:6. The method as described in claim 1, characterized in that, before automatically generating the structure conversion code through the code generator based on the field mapping relationship, it further includes: generating or updating the field mapping relationship according to the field mapping configuration information input by the user through the graphical interface, specifically including: 配置信息采用JSON或YAML格式,确保配置的可读性和维护性;Configuration information is provided in JSON or YAML format to ensure readability and maintainability. 字段映射规则配置,支持自定义字段间的对应关系和转换规则;Field mapping rule configuration supports customizing the correspondence and conversion rules between fields; 类型转换规则配置,允许自定义特定类型间的转换方法;Type conversion rule configuration allows you to customize conversion methods between specific types; 忽略字段配置,指定不需要进行转换的字段;Ignore field configuration and specify fields that do not need to be converted; 默认值配置,为目标结构体中的可选字段设置默认值;提供配置文件的验证和错误提示功能,确保配置的正确性和有效性;支持配置文件的版本控制和备份管理,方便配置的回滚和追踪。Default value configuration sets default values for optional fields in the target structure; provides configuration file validation and error message functionality to ensure the correctness and validity of the configuration; supports version control and backup management of configuration files for easy rollback and tracking of configurations. 7.一种Go语言结构体自动转换系统,其特征在于,包括:7. A Go language struct automatic conversion system, characterized in that it includes: 接收模块,用于接收源结构体定义和目标结构体定义作为输入,所述源结构体定义和目标结构体定义均包含结构体名称、字段名称和字段类型信息;The receiving module is used to receive a source structure definition and a target structure definition as input. Both the source structure definition and the target structure definition contain structure name, field name, and field type information. 字段映射规则引擎,用于对包含所述源结构体定义与目标结构体定义的Go源代码进行预编译期静态分析,将其解析为抽象语法树(AST)以提取字段定义,并通过字段映射规则引擎根据所述字段定义中的字段名称、字段类型及字段在结构体中的相对位置信息,按照通过配置文件或默认方式预设的优先级规则,自动匹配所述源结构体和目标结构体中的字段,生成字段映射关系,所述字段映射关系包含源结构体字段到目标结构体字段的映射规则和类型转换规则;The field mapping rule engine is used to perform pre-compilation static analysis on the Go source code containing the source structure definition and the target structure definition, parse it into an abstract syntax tree (AST) to extract field definitions, and automatically match the fields in the source structure and the target structure according to the field name, field type and the relative position of the field in the structure, according to the priority rules preset by the configuration file or default mode, to generate field mapping relationships. The field mapping relationships include mapping rules from source structure fields to target structure fields and type conversion rules. 代码生成器,基于所述字段映射关系构建类型转换的有向无环图(DAG)模型,在代码生成之前对所述DAG模型进行拓扑校验以执行编译期错误预检,并生成防御性代码和错误追踪链,在检测到类型不匹配时输出错误定位信息,通过代码生成器采用基于抽象语法树变换的代码生成技术,自动生成结构体转换代码,并对目标代码的控制流图进行静态分析和优化,实现代码内联和分支预测;所述转换代码包含将源结构体实例转换为目标结构体实例的字段赋值语句和类型转换语句;所述代码生成器生成转换代码的具体步骤包括:分析字段映射关系生成转换函数的签名,包括参数类型定义和返回值类型定义;根据字段类型生成类型安全的转换语句,具体包括:针对基本类型的直接转换语句,用于处理基本数据类型之间的转换;针对时间格式的解析和格式化语句,用于处理时间类型的转换;针对数值精度的转换语句,用于处理不同精度数值的转换;针对自定义类型的特殊处理语句,用于处理用户定义的类型转换;为指针类型字段生成空值检查代码,包括空指针判断和默认值处理;生成错误处理和异常捕获代码,确保转换过程的安全性;The code generator constructs a directed acyclic graph (DAG) model for type conversion based on the field mapping relationship. Before code generation, it performs topology verification on the DAG model to perform compile-time error pre-checking and generates defensive code and error tracing chains. When a type mismatch is detected, it outputs error location information. The code generator uses abstract syntax tree transformation-based code generation technology to automatically generate struct conversion code and performs static analysis and optimization on the control flow graph of the target code to achieve code inlining and branch prediction. The conversion code includes field assignment statements and type conversion statements that convert source struct instances to target struct instances. The specific steps of the code generator in generating the conversion code are detailed below. The steps include: analyzing field mapping relationships to generate the signature of the conversion function, including parameter type definitions and return value type definitions; generating type-safe conversion statements based on field types, specifically including: direct conversion statements for basic types, used to handle conversions between basic data types; parsing and formatting statements for time formats, used to handle time type conversions; conversion statements for numeric precision, used to handle conversions between numeric values of different precisions; special processing statements for custom types, used to handle user-defined type conversions; generating null check code for pointer type fields, including null pointer checks and default value handling; and generating error handling and exception handling code to ensure the safety of the conversion process. 编译模块,用于将所述转换代码编译生成可执行的转换函数,所述转换函数可在程序运行时将源结构体实例中的数据按照所述字段映射关系转换并填充到目标结构体实例中,或作为独立的函数提供给调用方使用;在批量转换场景时,结合协程池的任务分片技术和缓存预热机制。The compilation module is used to compile the conversion code into an executable conversion function. The conversion function can convert and fill the data in the source structure instance into the target structure instance according to the field mapping relationship at runtime, or it can be provided to the caller as an independent function. In batch conversion scenarios, the task sharding technology of the coroutine pool and the cache preheating mechanism are combined.
CN202510126525.8A 2025-01-27 2025-01-27 Go Language Structure Automatic Conversion Method and System Active CN120066518B (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202510126525.8A CN120066518B (en) 2025-01-27 2025-01-27 Go Language Structure Automatic Conversion Method and System

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202510126525.8A CN120066518B (en) 2025-01-27 2025-01-27 Go Language Structure Automatic Conversion Method and System

Publications (2)

Publication Number Publication Date
CN120066518A CN120066518A (en) 2025-05-30
CN120066518B true CN120066518B (en) 2026-03-20

Family

ID=95806885

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202510126525.8A Active CN120066518B (en) 2025-01-27 2025-01-27 Go Language Structure Automatic Conversion Method and System

Country Status (1)

Country Link
CN (1) CN120066518B (en)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN120315677B (en) * 2025-06-18 2025-09-12 中国人民解放军军事科学院战争研究院 A method for constructing low-coupling simulation behavior rule resources based on reflection mechanism
CN121209838B (en) * 2025-11-28 2026-01-30 北京麟卓信息科技有限公司 Code editor cross-language function positioning method based on layered context driving

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107295039A (en) * 2016-03-31 2017-10-24 阿里巴巴集团控股有限公司 Data access treating method and apparatus
CN117473966A (en) * 2023-10-31 2024-01-30 中国建设银行股份有限公司 Data processing method, device, equipment and storage medium

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7782331B2 (en) * 2004-06-24 2010-08-24 Microsoft Corporation Cross-platform runtime code generation for bit block transfer functions
CN110008448B (en) * 2019-04-02 2023-10-17 中国工商银行股份有限公司 Method and device for automatically converting SQL code into Java code
KR102739692B1 (en) * 2022-07-20 2024-12-10 뱅크웨어글로벌 주식회사 Apparatus and method for generating rest api source using json format data
US20240086163A1 (en) * 2022-09-08 2024-03-14 Neograms Sarl Iterative and interactive method for code conversion
CN116088849A (en) * 2022-12-28 2023-05-09 上海自然而然信息科技有限公司 Method for compiling and rearranging schema of business process by cloud engine and executing method
CN118283148B (en) * 2024-06-04 2024-08-06 南京信息工程大学 A method and device for automatically generating a cross-platform application layer protocol parser

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107295039A (en) * 2016-03-31 2017-10-24 阿里巴巴集团控股有限公司 Data access treating method and apparatus
CN117473966A (en) * 2023-10-31 2024-01-30 中国建设银行股份有限公司 Data processing method, device, equipment and storage medium

Also Published As

Publication number Publication date
CN120066518A (en) 2025-05-30

Similar Documents

Publication Publication Date Title
CN107861728B (en) Method and system for converting traditional program language into modern program language
US8473897B2 (en) Common intermediate representation for data scripting language
CN102037447B (en) Advice-based translation of constraint sets for imperative execution
CN120066518B (en) Go Language Structure Automatic Conversion Method and System
Syme et al. Expert F♯
US8321833B2 (en) Compact syntax for data scripting language
US8819046B2 (en) Data query translating into mixed language data queries
US20050108684A1 (en) Method and system for generating an application object repository from application framework metadata
US20240176593A1 (en) System and method for API driven rapid application development and execution
US10019243B2 (en) Packaging system to facilitate declarative model-driven development
EP2628071A1 (en) Method and system for developing data integration applications with reusable semantic types to represent and process application data
US8949784B2 (en) Type system for declarative data scripting language
US12038940B2 (en) Architecture for data map converters
Gedik et al. A model‐based framework for building extensible, high performance stream processing middleware and programming language for IBM InfoSphere Streams
US9292586B2 (en) System and method for synchronizing a repository with a declarative defintion
Jovanovic et al. Engine independence for logical analytic flows
CN120218040A (en) A dynamic template generation method, device and medium based on business needs
CN120803527A (en) System for assisting in transplanting Android language into hong Meng ArkTS language
Maschotta et al. An OCL implementation for model-driven engineering of C++
Cherkashin et al. Representation of MDA transformation with logical objects
Madani et al. Distributed model validation with Epsilon
CN116719838B (en) Chain type calling method based on vastbase object method in object-oriented programming
Canzoneri Exploring extensibility of devsecops modelling language (doml)
US12619398B1 (en) Systems and methods for generating segment-specific source code for mainframe-source artifact
Shafin et al. Automated testing of Web Services system based on OWL-S

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant