CN112363704B - Service system based on micro-service architecture - Google Patents
Service system based on micro-service architecture Download PDFInfo
- Publication number
- CN112363704B CN112363704B CN202110035181.1A CN202110035181A CN112363704B CN 112363704 B CN112363704 B CN 112363704B CN 202110035181 A CN202110035181 A CN 202110035181A CN 112363704 B CN112363704 B CN 112363704B
- Authority
- CN
- China
- Prior art keywords
- service subsystem
- end service
- application
- service
- architecture
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/20—Software design
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web services
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Information Transfer Between Computers (AREA)
- Stored Programmes (AREA)
Abstract
The invention discloses a service system based on a micro-service architecture, which is provided with front-end and back-end separation and supports independent development and test of the front end; meanwhile, a detailed test case is set in the back-end system, a virtual test object is constructed to simplify the test environment and guarantee the usability of the API, the integration risk is reduced, interaction is carried out between the front end and the back end through HTTP requests, after the front end obtains data, assembly and rendering of a page are carried out, and finally the page is returned to the browser, so that front-end and back-end processing in the interaction stage is achieved.
Description
Technical Field
The invention relates to the field of communication processing, in particular to a test and development system based on a micro service platform.
Background
Traditional application development in the prior art is generally performed in a monolithic architecture. Integrating all functions into a project engineering during development; all functions are deployed to a server in a war package; the general application is deployed separately from the database; the performance of the system is improved by deploying an application cluster and a database cluster.
The single framework has the characteristics of simple project framework, low early development cost and short period, and is the first choice of small projects. However, since all functions are integrated in one project, large projects are not easy to develop, expand and maintain. The longitudinal decomposition system is cut into various systems according to the use departments, such as reimbursement, contract management, cooperative office work and the like, so that an island and a flow are caused; the application depends on the architecture environment, the development platform is incompatible with the tool, the multiplexing degree is low, the development efficiency is low, and the cost is high; data are scattered and repeated, the data are inconsistent, and an enterprise-level global data view cannot be formed; hardware is bound with application, resources cannot be shared, and performance deficiency and resource waste coexist at the same time. Therefore, for relatively large-scale projects, the single architecture is not enough to support many demands of information-based construction on construction period quality and strain capacity.
At present, the micro-service architecture is widely and popularly adopted to enable the division of labor for developing the whole development system to be more definite, the responsibility is clearer, and everyone is responsible for providing better service for other people. However, in the era of single application, common business functions are often not explicitly attributed, resulting in the problems that the respective development and application are independently developed at last, or the developed application is repeatedly implemented, or the randomly selected application development gives consideration to the functions of other applications, but the development of common applications lacks the application of a global architecture, so that the global architecture is involved and adjusted, and the development requirements cannot be well adapted. Therefore, the service system based on the micro-service framework is provided in the Web application scene based on the micro-service framework.
Disclosure of Invention
In order to solve at least one of the above technical problems, the present invention provides a service system based on a micro service framework in a Web application scenario.
To solve one of the above technical problems, a service system based on micro-service framework comprises a central configuration device, a front-end service subsystem and a back-end service subsystem,
the central configuration device is used for configuring a single application into a group of small services, each service runs in the own process, the communication among the services adopts a lightweight communication mechanism, each service is built around the business capability and is independently deployed through a full-automatic deployment mechanism, each service shares a minimum centralized management, the services are developed by adopting different languages, and different data storage technologies are used;
the front-end service subsystem adopts an MVVM (Model-View-ViewModel) architecture as a front-end architecture of a web according to the interface and data format between the front-end service subsystem and the back-end service subsystem which are pre-configured by the central configuration device, wherein the MVVM architecture adopts a bidirectional binding mode, when a Model changes, and when the Model changes, the View-Model can be automatically updated, the View can also be automatically changed, and the consistency of the same data on a page is kept; the front end of the MVVM architecture adopts an Vue progressive framework, the front end service subsystem comprises a TypeScript unit, and an externally exposed APIJ interface is compatible with TypeScript by rewriting the TypeScript unit;
the back-end service subsystem comprises a Spring module, and the Spring module is used for packaging independent applications; the back-end service subsystem provides a called API service to the front-end service subsystem according to a pre-configured data format; the front-end service subsystem and the back-end service subsystem interact through HTTP requests, and the front-end system assembles and renders a web page after acquiring data and returns the web page to the browser.
Preferably, the lightweight communication mechanism is in a mode of adopting an HTTP resource API.
Preferably, the front-end service subsystem and the back-end service subsystem both comprise application function modules, each application function module independently performs mock testing, applications in the application modules in the back-end terminal system are arranged on the interfaces to perform interface self-testing, and after the self-testing is successful, the front-end and back-end system service subsystems are jointly adjusted and the formats are verified to complete the testing.
Preferably, the Spring module is further configured to combine application objects in the application module in an XML or Java manner to implement an application function.
Preferably, the code libraries stored in the front-end service subsystem and the back-end service subsystem perform classification, and the front-end service subsystem performs testing by constructing a virtual test object as a pseudo back end.
Preferably, the back-end service subsystem encapsulates the independent application service based on a Spring Cloud framework.
Preferably, the API interface is based on: spring MVC architecture.
Preferably, a static type management unit is arranged in the Vue progressive framework for management of auxiliary functions.
Preferably, Vue is used as the MVVM framework of the front-end development to build a progressive framework of the user interface, and the application is from bottom to top.
Preferably, the system is applied to a process file management approval system.
According to the scheme, the front end and the back end are separated, the pseudo back end of a test environment is simplified by constructing a virtual test object, and independent development and test of the front end can be supported; meanwhile, a detailed test case is set in the back-end system to ensure the usability of the API and reduce the integration risk, and the back-end only needs to be responsible for providing the API service which can be called to the front-end according to the agreed data format; the front end and the back end interact through HTTP requests, after the front end obtains data, assembly and rendering of a page are carried out, and finally the page is returned to the browser, so that front end and back end processing in an interaction stage is achieved.
Drawings
In order to more clearly illustrate the technical solutions in the embodiments of the present invention, the drawings needed to be used in the embodiments will be briefly described below, and it is obvious that the drawings in the following description are only some embodiments of the present invention, and it is obvious for those skilled in the art that other drawings can be obtained according to these drawings without creative efforts.
FIG. 1 is a schematic structural framework of a system;
fig. 2 is a functional division diagram of the system.
Detailed Description
The technical solutions in the embodiments of the present invention will be clearly and completely described below with reference to the drawings in the embodiments of the present invention, and it is obvious that the described embodiments are only a part of the embodiments of the present invention, and not all of the embodiments. All other embodiments, which can be derived by a person skilled in the art from the embodiments given herein without making any creative effort, shall fall within the protection scope of the present invention.
Example 1
As shown in fig. 1, a service system based on micro-service framework includes a central configuration device, a front-end service subsystem and a back-end service subsystem.
The central configuration device is used for configuring a single application into a group of small services, each service runs in the own process, the communication among the services adopts a lightweight communication mechanism, each service is built around the business capability and is independently deployed through a full-automatic deployment mechanism, each service shares a minimum centralized management, the services are developed by adopting different languages, and different data storage technologies are used;
the front-end service subsystem adopts an MVVM (Model-View-ViewModel) architecture as a front-end architecture of a web according to the interface and data format between the front-end service subsystem and the back-end service subsystem which are pre-configured by the central configuration device, wherein the MVVM architecture adopts a bidirectional binding mode, when a Model changes, and when the Model changes, the View-Model can be automatically updated, the View can also be automatically changed, and the consistency of the same data on a page is kept; the front end of the MVVM architecture adopts an Vue progressive framework, the front end service subsystem comprises a TypeScript unit, and an externally exposed APIJ interface is compatible with TypeScript by rewriting the TypeScript unit;
the back-end service subsystem comprises a Spring module, and the Spring module is used for packaging independent applications; the back-end service subsystem provides a called API service to the front-end service subsystem according to a pre-configured data format; the front-end service subsystem and the back-end service subsystem interact through HTTP requests, and the front-end system assembles and renders a web page after acquiring data and returns the web page to the browser.
Preferably, the lightweight communication mechanism is in a mode of adopting an HTTP resource API.
Preferably, the front-end service subsystem and the back-end service subsystem both comprise application function modules, each application function module independently performs mock testing, applications in the application modules in the back-end terminal system are arranged on the interfaces to perform interface self-testing, and after the self-testing is successful, the front-end and back-end system service subsystems are jointly adjusted and the formats are verified to complete the testing.
Preferably, the Spring module is further configured to combine application objects in the application module in an XML or Java manner to implement an application function.
Preferably, the code libraries stored in the front-end service subsystem and the back-end service subsystem perform classification, and the front-end service subsystem performs testing by constructing a virtual test object as a pseudo back end.
Preferably, the back-end service subsystem encapsulates the independent application service based on a Spring Cloud framework.
Preferably, the API interface is based on: spring MVC architecture.
Preferably, a static type management unit is arranged in the Vue progressive framework for management of auxiliary functions.
Preferably, Vue is used as the MVVM framework of the front-end development to build a progressive framework of the user interface, and the application is from bottom to top.
Preferably, the system is applied to a process file management approval system.
After the front end is separated, the flow of front and back communication data is greatly reduced, the performance is also improved when rendering is transferred to a browser end, the user experience is improved, the MVVM is utilized to enable the code of people to be more concentrated in processing service logic rather than paying attention to DOM operation, bidirectional binding is adopted through the MVVM, when the Model changes, the View-Model can be automatically updated, and the View can also be automatically changed. The consistency of the data can be well achieved, and the inconsistency of the same data when the same data is used at multiple positions of the page is not needed to be worried about. The View function is further strengthened, and the View function has partial control function, so that the original complex and swollen controller is simplified, the whole code logic is clearer, and the View function is convenient to develop and maintain.
Optionally, Vue is selected as an MVVM framework developed at the front end, a progressive framework of a user interface is constructed, and the application is performed layer by layer from bottom to top. Vue-based core libraries focus only on the viewing layer, facilitating integration with third party libraries or existing projects. Alternatively, Vue is also fully capable of providing drivers for complex single page applications when used in conjunction with modern tool chains and various supporting class libraries. Js implements data binding using get and set of object.
Preferably, the Vue framework can be TypeScript for writing source codes; meanwhile, a static type system or a static management unit is adopted for auxiliary management, and optional examples include Flow used by React and TypeScript used by Angular; overwriting with TypeScript makes it easier for externally exposed APIs to incorporate TypeScript. And setting a static type management unit to maintain the complex code. TypeScript is a superset of JavaScript, supporting the ECMAScript 6 standard. The TypeScript can be compiled into pure JavaScript, and the compiled JavaScript can be run on any browser. The syntax of the JavaScript is extended by means of TypeScript, which can work together with TypeScript without any modification, which provides static type checking at compile time by type annotation. The TypeScript may process existing JavaScript code and only compile the TypeScript code therein.
Optionally, the sub-application processes in the back-end service subsystem and the micro-service architecture are based on a Spring module, and are independently encapsulated by the Spring module; the back-end service subsystem can realize various capabilities based on Spring by a layering and serving idea, and performs independent application encapsulation based on Spring Boot and Spring Cloud. Wherein the printing is non-invasive, the object in the Spring application does not depend on the specific class of the Spring. Independent of various application servers, the application based on the Spring framework can really realize the commitment of Write one and Run Anywhere. The DI mechanism of Spring reduces the complexity of service object replacement and improves the decoupling between components. The Spring module is adopted, and the Spring framework can configure and combine simple components into complex application. In the Spring module, the application objects are combined in an XML or Java mode to realize the application function, and the switching of various specific implementation logics can be easily realized by replacing the service components in the combination. Spring also provides many basic functions (transaction management, persistence framework integration, etc.), which can greatly simplify the development of application logic.
Optionally, a Spring MVC structure of a WEB application development framework implemented on the basis of a Spring framework in a Spring module may also be adopted, based on support for multiple view technologies. Spring MVC separates the roles of controllers, model objects, filters, and handler objects, facilitating separation and customization of the roles of controllers, model objects, filters, and handler objects. The Web application and network interface capability is realized through SpringMVC, so that the whole development logic is clearer.
In the prior art, the front end and the rear end share one code base, but the codes are respectively stored in two projects. The back end does not care or hardly care about the output condition of the front end element, the front end cannot independently develop and test, and a front-end and back-end interactive test case is lacked in the project.
As shown in fig. 2, in the scheme of the application, the front end and the back end are separated, the front end code is separated from the front end code library, the front end code can be subjected to Mock testing, the pseudo back end of the testing environment is simplified by constructing a virtual testing object, and independent development and testing of the front end can be supported; besides function implementation, the back-end code also has detailed test cases so as to ensure the usability of the API and reduce the integration risk. In the front-end and back-end separation architecture, the back end only needs to be responsible for providing a callable API service to the front end according to an agreed data format; the front end and the back end interact through HTTP requests, and after the front end obtains data, assembly and rendering of a page are carried out, and finally the page is returned to the browser. Front-end and back-end processing of an interaction stage is realized; in the actual application process of the process platform, application scenes needing human-computer interaction exist, and the process platform selects a mode based on front-end and back-end separation to realize the application requirements. The front end and the rear end are separated, so that a large number of interfaces can be multiplexed, and the efficiency is improved; and dynamic and static routing separation can be carried out, and the performance of the station is improved by matching with front-end compression and cache.
Example 2
Based on the examples described above, the features relating to the method steps in one embodiment can be implemented by a computer device/system provided by the present invention, which includes a memory, a processor, and a computer program stored on the memory and executable on the processor, wherein the processor executes the program to implement any one of the methods in the embodiments described above.
It will be understood by those skilled in the art that all or part of the processes in the methods of the embodiments described above may be implemented by a computer program to instruct associated hardware, where the program may be stored in a non-volatile computer-readable storage medium, and in the embodiments of the present invention, the program may be stored in the storage medium of a computer system and executed by at least one processor in the computer system to implement the processes including the embodiments of the video playing methods described above. The storage medium may be a magnetic disk, an optical disk, a Read-Only Memory (ROM), a Random Access Memory (RAM), or the like.
Accordingly, a storage medium is also provided, on which a computer program is stored, wherein the program, when executed by a processor, implements the method steps as referred to in any of the embodiments above.
The technical features of the embodiments described above may be arbitrarily combined, and for the sake of brevity, all possible combinations of the technical features in the embodiments described above are not described, but should be considered as being within the scope of the present specification as long as there is no contradiction between the combinations of the technical features.
The above examples are merely illustrative of several embodiments of the present invention, and the description thereof is more specific and detailed, but not to be construed as limiting the scope of the invention. It should be noted that, for a person skilled in the art, several variations and modifications can be made without departing from the inventive concept, which falls within the scope of the present invention. Therefore, the protection scope of the present invention should be subject to the appended claims.
Claims (6)
1. A service system based on micro-service architecture is characterized in that: the service system comprises a central configuration device, a front-end service subsystem and a back-end service subsystem,
the central configuration device is used for configuring a single application into a group of small services, each service runs in the own process, the communication among the services adopts a lightweight communication mechanism, each service shares a centralized management, each service adopts different languages for development, and different data storage modes are used;
the front-end service subsystem adopts an MVVM (multifunction vehicle virtual machine) architecture as a front-end architecture of a web page according to the formats of interfaces and data between the front-end service subsystem and the rear-end service subsystem which are pre-configured by the central configuration device, wherein the MVVM architecture adopts a bidirectional binding mode, when a Model changes, a View-Model can be automatically updated, the View also can be automatically changed, and the consistency of the same data on the page is kept; the front end of the MVVM framework adopts an Vue progressive framework, the front end service subsystem comprises a TypeScript unit, and an externally exposed API interface is compatible with TypeScript by rewriting the TypeScript unit;
the back-end service subsystem comprises a Spring module, and the Spring module is used for packaging independent applications; the back-end service subsystem provides a called API service to the front-end service subsystem according to a pre-configured data format; the front-end service subsystem and the back-end service subsystem interact through HTTP requests, and after the front-end service subsystem acquires data, assembly and rendering of a web page are performed, and the web page is returned to the browser;
the lightweight communication mechanism adopts an HTTP resource API mode; the code base of the front-end service subsystem and the code base of the back-end service subsystem are separated;
the front-end service subsystem and the back-end service subsystem both comprise application function modules, mock testing is independently carried out on each application function module, application in the application function modules in the back-end service subsystem is arranged on an interface to carry out interface self-testing, a code library of the back-end service subsystem stores test cases, and a virtual test object is constructed to simplify a test environment; and after the self-test is successful, performing joint debugging on the front-end system service subsystem and the back-end system service subsystem and verifying the data format to finish the test.
2. The system of claim 1, wherein: the Spring module is also used for combining the application objects in the application function module in an XML or Java mode to realize the application function.
3. The system of claim 2, wherein: and the back-end service subsystem packages the independent application based on the Spring Cloud framework.
4. The system of claim 3, wherein: the interface of the back-end service subsystem is an API (application programming interface) based on the Spring MVC architecture.
5. The system of claim 4, wherein: a static type management unit is arranged in the Vue progressive framework and is used for managing auxiliary functions.
6. The system of any of claims 1-5, wherein: the service system is applied to process file management approval.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110035181.1A CN112363704B (en) | 2021-01-12 | 2021-01-12 | Service system based on micro-service architecture |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110035181.1A CN112363704B (en) | 2021-01-12 | 2021-01-12 | Service system based on micro-service architecture |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112363704A CN112363704A (en) | 2021-02-12 |
CN112363704B true CN112363704B (en) | 2021-04-06 |
Family
ID=74534826
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110035181.1A Active CN112363704B (en) | 2021-01-12 | 2021-01-12 | Service system based on micro-service architecture |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112363704B (en) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112905486B (en) * | 2021-03-26 | 2022-07-08 | 建信金融科技有限责任公司 | Service integration test method, device and system |
CN113377497B (en) * | 2021-06-08 | 2023-11-28 | 湖北第二师范学院 | Service development system based on service virtualization |
CN113934476B (en) * | 2021-10-15 | 2022-08-19 | 中电金信软件有限公司 | Logic calling method and device and electronic equipment |
CN116319950A (en) * | 2022-09-07 | 2023-06-23 | 中国人民财产保险股份有限公司 | Method for realizing front-end and back-end separation of architecture, architecture system and request processing method |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107295077A (en) * | 2017-06-16 | 2017-10-24 | 深圳易嘉恩科技有限公司 | Distributed cloud platform system based on micro services framework |
CN108804513A (en) * | 2018-04-24 | 2018-11-13 | 华东计算技术研究所(中国电子科技集团公司第三十二研究所) | Automatic visual analysis method for big data platform |
CN109274724A (en) * | 2018-08-30 | 2019-01-25 | 上海艾融软件股份有限公司 | A kind of realization system and method for front and back end separation architecture |
CN111123765A (en) * | 2019-12-06 | 2020-05-08 | 山东电工电气集团有限公司 | Cable tunnel comprehensive state monitoring system based on micro-service and implementation method thereof |
CN111176627A (en) * | 2019-12-06 | 2020-05-19 | 深圳市科南软件有限公司 | Device and method for separating front end from back end based on micro-service |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180189035A1 (en) * | 2016-12-29 | 2018-07-05 | TechRev, LLC | Application development tool using graphic objects to bind object sets of different distinct divisions of a design pattern |
CN108200146B (en) * | 2017-12-29 | 2020-10-27 | 华南理工大学 | Method for realizing lightweight microservice architecture |
CN108650262B (en) * | 2018-05-09 | 2020-12-01 | 聚龙股份有限公司 | Cloud platform expansion method and system based on micro-service architecture |
-
2021
- 2021-01-12 CN CN202110035181.1A patent/CN112363704B/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107295077A (en) * | 2017-06-16 | 2017-10-24 | 深圳易嘉恩科技有限公司 | Distributed cloud platform system based on micro services framework |
CN108804513A (en) * | 2018-04-24 | 2018-11-13 | 华东计算技术研究所(中国电子科技集团公司第三十二研究所) | Automatic visual analysis method for big data platform |
CN109274724A (en) * | 2018-08-30 | 2019-01-25 | 上海艾融软件股份有限公司 | A kind of realization system and method for front and back end separation architecture |
CN111123765A (en) * | 2019-12-06 | 2020-05-08 | 山东电工电气集团有限公司 | Cable tunnel comprehensive state monitoring system based on micro-service and implementation method thereof |
CN111176627A (en) * | 2019-12-06 | 2020-05-19 | 深圳市科南软件有限公司 | Device and method for separating front end from back end based on micro-service |
Also Published As
Publication number | Publication date |
---|---|
CN112363704A (en) | 2021-02-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112363704B (en) | Service system based on micro-service architecture | |
CN111459539B (en) | Continuous integration pipeline operation method and device based on mirror layering | |
WO2022016848A1 (en) | Method and apparatus for performing application deployment according to service role | |
US9720686B2 (en) | Melding of mediation flow service component architecture (SCA) components | |
CN113448686A (en) | Resource deployment method and device, electronic equipment and storage medium | |
CN115586935A (en) | Data processing method and device, electronic equipment and medium | |
CN116028163A (en) | Method, device and storage medium for scheduling dynamic link library of container group | |
CN109343970B (en) | Application program-based operation method and device, electronic equipment and computer medium | |
CN110083366B (en) | Application running environment generation method and device, computing equipment and storage medium | |
US20100023950A1 (en) | Workflow processing apparatus | |
CN113448643A (en) | Configuration data management system and method | |
US10725744B2 (en) | Method for adapting to blockchain and device, terminal and medium performing the same | |
CN116954824A (en) | Runtime system supporting multi-process mixed operation of multiple extended reality (XR) technical specification application programs and 2D application programs, data interaction method, device and medium | |
CN111225014B (en) | Method, device and equipment for generating microservice and storage medium | |
CN110312990A (en) | Configuration method and system | |
CN114090083B (en) | Visual component configuration method, device, equipment and storage medium | |
CN111752840B (en) | Cross-system financial self-service equipment SP automatic test method, equipment and medium | |
CN114679491A (en) | Micro front-end service application method and device, storage medium and electronic equipment | |
CN109189382B (en) | Business Process System | |
CN110009463B (en) | Data communication processing system and method | |
CN112650512A (en) | Hardware driving method and device, terminal and storage medium | |
CN118233493A (en) | System control method and device and vehicle-mounted terminal | |
CN117724726B (en) | Data processing method and related device | |
CN111061460B (en) | Universal software development platform based on embedded system | |
US12039302B2 (en) | Building base applications with user interface micro frontends |
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 |