1.1 What is openjweb?
Openjweb is a Java Web application rapid development platform product based on Java open source technology. This product mainly solves the following problems: (1) in enterprise application development, basic modules such as organization structure, permissions, and functional menu management, because they are not well designed, as a result, different projects cannot be reused directly. A large number of modifications must be made before they can be used in new projects. (2) for a single table, the addition, deletion, modification, and query of the primary list class are similar in development mode, but the programmer may develop similar functions even if there is no code or page builder, it also takes a lot of time for coding and debugging. Low development efficiency. Developers often spend a lot of time debugging to find a bug. Only after debugging is completed can they find that some of them are missing in the Process of copying code, that is, some are case-insensitive and misspelled. (3) In China, a large number of companies and a large number of project developers inevitably need to implement the basic functions required for each business system, such as the organizational structure and permissions, if you have a good open-source platform, you do not need to invest unnecessary development time on these basic modules. Such a platform can greatly reduce repeated investment in social resources. (4) When the field validation rule changes the field default value rule, a new query condition column needs to be added to the page and developers are not required to modify the program code, in this way, you can set the field validator through the platform. The default value is set to add or remove a query field, so you do not need to change the program. (5) After new developers join the team, they will be trained to learn where to add business logic and where to add new validation classes, whether it can be integrated into the development process in a short time. (6) because of the large number of open-source frameworks, it is difficult to select and integrate these frameworks into a development platform based on these frameworks without rich Java development experience. However, with a unified and integrated framework, developers do not have to worry about Java product selection (the premise is that I believe in my choice ). The final purpose of the above points is to unify the specifications, reduce repeated investment, reduce development costs, and increase project profits. At the same time, it will improve the technical level of Java developers and greatly shorten the time required for developers to become architects.
1.2 Main Technical Framework of openjweb
The basic framework of openjweb 1.6 is struts2 + spring2.5.6 + hibernate3 + spring security2.0. In addition, strut1 (some functions were previously developed), DWR, fckedit, extjs, and jfreechart, the tree control uses dhtmlxtree. In addition, jotm is integrated, which is JTA in Tomcat and supports cross-database transaction processing.
1.3 Business Value Analysis of openjweb
Many software companies often develop application systems for enterprises for a year or longer. Such a long development and implementation cycle has led to a significant change in the demand because the project has not been fully implemented, therefore, openjweb adopts the platform customization + secondary development assistance mode in the development mode, which can greatly reduce the project development workload, shorten the project implementation cycle, and even customize business modules by users in the later stages, therefore, after the software company delivers the product, the new business needs still need to be developed by the software company. It should be said that for larger enterprise application projects, the more cost saved by openjweb. This is reflected in: (1) general enterprise applications have a large number of background maintenance modules, and many of these modules are inevitably designed to solve the development of JSP files on pages, processing of paging and sorting functions, implementation of addition, deletion, modification, and query functions, database tabulation, and retrieval of code-name list drop-down windows on the page, if no platform tool provides quick development support, it takes at least two days for a function like basic information maintenance of a simple customer to complete, it takes only 10 minutes to customize the settings. The difference between the two days and ten minutes is definitely not a small amount. For a project with a million yuan, using platform development can save at least 0.2 million of the project cost. For software companies, reducing the project cost by 20% means that the project will increase the profit rate by 20%! Openjweb? The efficiency of the quick function generator in project development is unmatched by the traditional software development model. functions can be generated as long as the data structure is designed. It is extremely helpful in prototyping project requirements. (2) The openjweb platform has well integrated the framework products of the open-source community, and has also been verified by a number of large projects. users using the openjweb platform can avoid repeated selection risks, it also saves time to re-build the application framework. (3) Application Development and Implementation Based on platform products are the main model of the software industry in the future. Using platform products for development can completely free software companies from the R & D era of hands-on workshops, the implementation of large-scale projects does not require the very costly implementation method of recruiting a large number of developers. In addition, the mature platform reduces the code error rate, which greatly reduces the modification time of the error code. (4) mature development platforms have transparent and consistent development models and frameworks, so changes in project personnel will not affect the system architecture products of the product. Therefore, the risk of project failure caused by key personnel resignation is greatly reduced. (5) The platform product has implemented many functions, including addition, deletion, modification, query, and generation, organization structure permissions, data permission control, field checker, business logic generator, default value setting, and code table management, you do not need to repeat the development of similar functions. (6) This platform not only has great application value for software companies and end users, but also is a good learning platform for Java developers, it has great learning value and training value. The openjweb platform integrates many products in the open-source field and provides Java personnel with an "one-stop" Learning Channel for Java open-source technology. It can learn how to use these open-source technologies in a short time. Through the study and use of openjweb, Java personnel can improve their technical skills in a short period of time, so that they can stand out in the highly competitive workplace. Based on the above values, openjweb? The quick development platform is also a good practical teaching material for training institutions.
1.4 Main openjweb user groups
(1) For software companies that have not yet or just selected the Java platform, this platform already has many well-developed functions and does not need to be developed repeatedly. You can directly use the Community edition provided by the platform. (2) For software companies mainly engaged in project implementation (customized development by project), using this platform to develop projects can greatly reduce the development workload. (3) Consultant: The consultant can use this platform to customize a prototype application in a short time, so that an application system model can be quickly presented to the customer during the ticket or demand investigation process. (4) enterprise users. With this platform, software companies can still use the platform to customize their new business applications after their services expire, instead of relying on software companies, so as to truly respond on demand. (5) training institutions. The openjweb platform is a rare and fast web application development platform based on open-source frameworks. Generally, IT training institutions are hard to obtain such code with practical value, java training for the openjweb platform will certainly enable students to experience real enterprise-level application development during a relatively short training period. (6) individual entrepreneurs or small and medium-sized software companies. Small and medium-sized software companies have no funds to hire a full-time senior architect. Introducing an excellent open-source platform for software development is their best choice.
1.5 main features of openjweb1.6
This section only describes features. For more information about the features and operations, see the operation manual.
1.5.1 multi-language support
You can use the dot-language link on the system homepage after logging on to switch between different languages (however, there are currently many pages without text translation, and only some words can be translated to see the effect of language switching ). The form List page and Edit page labels support multilingual. You only need to define the texts of each language in the table field definition. After the code is compiled from the platform, the corresponding multilingual resource file can be automatically generated.
1.5.2 homepage of the Portlet Style
The background homepage with A Portlet style allows you to drag the Portlet window. Currently, I have set up my to-do tasks, my existing tasks, and other Portlet (no OA and workflow systems have been designed yet, so the information in porlet is currently demo data ).
1.5.3 online compilation function
After the function code is generated through the platform, you do not need to execute code compilation in the IDE development environment. You can click "compile code" on the page. After compilation, the new Code takes effect.
1.5.4 provides the timer development interface
The platform has provided specific timer development and configuration examples. You only need to add your own new timer method in the specified period class, and configure it in the spring configuration file.
1.5.5 provides the mail sending API call interface
The platform has provided an API for sending and calling multiple attachments in HTML format. This API can be used to send mass mails conveniently.
1.5.6 integrated fckedit? Online Editor
This platform provides fckedit? Visual online editor.
1.5.7 provides business logic component interfaces and implementation class generation functions
When creating a table, if you choose to generate the business logic component, the business logic interface and implementation class are automatically generated. And automatically configured in the spring configuration file
1.5.8 support JTA-based cross-database transactions
Cross-database transaction control can be implemented. When an exception is thrown, both databases can be rolled back at the same time.
1.5.9 table structure management
After table and table fields are defined, you can generate database tables, Hibernate ing files, and Java entity classes. In table field definition, you can define the type, length, whether it is not empty, the label text of each language, which field validators are used, and the default value is used to generate rule settings, whether or not table fields are displayed on the list page and Edit page, display sequence, and input methods of table fields (input box, date selection, pop-up window, drop-down list, and other input forms) whether the table field is a query condition field. In addition, the table field generation function is added to table field maintenance. After a table is created, if a new field is added, Entity classes are no longer required from the development environment, modify the hibernate ing file, and you do not need to open the database management tool to add new fields. You only need to perform operations on the page to complete the above content.
1.5.10 code table management
It is also called data dictionary management. It is mainly used to define the drop-down options of the page's up/down list. For example, the title can be 001 engineer and 002 senior engineer. You can either define a code table in a dedicated data dictionary table or specify two fields in any table as the code field and Name field. If there are not many codes of the same type (less than 50), you can use the code table for management. If there are too many detailed items in the code table, we recommend that you create a special table for maintenance. For other fields, see use this code table, select from the pop-up window.
1.5.11 Function Definition
You can create a single table for a database table to add, delete, modify, and query pages. You can also create an add, delete, modify, and query page for the master list (with multiple tabs ). When creating a master table, you must maintain the comparison between the master table and the list. After configuring the function-related attributes on this page, click "generate code" to generate the struts2 action configuration file, action control layer class, list page, and Edit page, in the pop-up window, select the page (each function may be used as a reference input for other page fields ). If the type of the form to be created (single table, master table, and detail table) is set on this page, you can create corresponding styles for different form types.
1.5.12 data permission Definition
You can specify a table to set different data permissions for different users, including query permissions, modification and deletion permissions.
1.5.13 field validator
The platform can read the field validator class from the field validator table for data verification before saving. If you have developed a new validator (which requires an interface for the validator), you can input it to the database and selectively bind it to the table field definition.
1.5.14 Query
The page generated by the platform contains query columns displayed on the list page. To add or remove query columns, you only need to modify whether to query fields in the table field definition, set the query condition to "no" and then regenerate the code for this function. In addition, any fields in the query table can be defined in the combined query, and the logical relationship between the query conditions can be combined with brackets. The input method of the query condition field on this platform is automatically changed with the configuration input form. For example, if it is a date input, the query condition automatically displays the date selector. If it is a pop-up window, the pop-up button is displayed automatically. If the drop-down list is displayed, the list items are automatically retrieved in the query condition column.
1.5.15 permission Maintenance
Maintain a permission tree. In the permission tree, function menu permissions and button permissions can be defined. If a URL is set, unauthorized users cannot access the URL. This table is the table for the spring security framework to read permission information and is the core database table of the permission framework.
1.5.16 maintenance of company Basic Information
Maintains the list of top legal entities. Is the root of the organizational structure tree. Here, you can enter the company and customer company. If your company needs to establish its own organizational structure and users in the system for business purposes, you need to register company information here.
1.5.16 Organization Structure Maintenance
You can select a top-level company to maintain the organizational structure tree. The organizational structure tree can define multiple types of organizational structures, including administrative departments, customers, suppliers, roles, positions, and business groups, personnel information can be maintained in an organizational structure, and a multi-to-many organizational structure-personnel relationship can be maintained. For example, an organizational structure node is a role, then you can add the personnel that belong to this role. In this way, a multi-to-many matrix organizational structure-personnel relationship is formed. If the organizational structure is granted permissions, the personnel directly under the organizational structure can obtain the organizational structure permissions. In addition, role permissions can be inherited, that is, the upper-level role can have the permissions of the lower-level role. In addition, the system can directly authorize the personnel. In this way, a person's permissions include direct authorization, obtaining permissions from the organizational structure, obtaining permissions from the role-type organizational structure, and inheriting permissions. This constitutes a complete authorization system.
1.5.17 Excel export Function
The function page generated through the openjweb platform provides the Excel export function for the page data, so on this platform, the Excel export function for the Common List format of a single table does not need to be developed by developers, which undoubtedly saves a lot of time for developing the Excel export function. The Excel export function of this platform has the following features:
(1) The Excel export function in common format no longer requires developers to write code. The add, delete, modify, and query pages generated by the platform all have the Excel export function.
(2) You can customize the query conditions for exported Excel tables.
(3) You can define the title text of an Excel table, the header text of a cell in Excel, and the sequence of fields corresponding to the cell. You can define which fields are displayed and hidden in the database in Excel, in this way, you can control the display sequence of cells and the content to be displayed.
(4) because many fields in the database table store encoding, and the name needs to be displayed in Excel. For example, the province field stores 0001. In fact, this code maps to Beijing, therefore, you must display Beijing in an Excel file. In this platform, you can define the name of any encoding field. This is to query the name of the encoding by setting an SQL statement.
1.5.18 import data to the database using Excel
The add, delete, modify, and query page generated by the platform provides the ability to export data in Excel and import data into the database from Excel. This enables quick data editing through Excel, which is useful when the system inputs a large amount of data. Since each page is generated by the platform to import data buttons and implementation, you do not need to write the code to import the database to excel again when using the new features of the platform. Before using the EXCEL function to import data to a database, you can export data from the console, edit the data in the exported Excel file, and import the data to the database after editing, during the import process, the system automatically determines which data is added and which data is modified based on the set business primary key, in this way, the system can choose whether to insert a new data or replace the New Value in the original row. If some values in an Excel cell are names, you need to reverse query the encoding when entering them into the database. For example, the city in Excel is "Beijing", but the encoding of "Beijing" in the database is 001, in this way, Beijing will be automatically replaced with 001 when Excel is imported into the database (provided that the SQL statement of the reverse query encoding of this field is defined in the table field definition ).
1.5.19 quick function Modeling
Openjweb provides the function menu quick creation function. After the menu is created, the menu permission is assigned to the user, and a new subsystem framework can be created soon. The function module can be used as long as the page is developed to connect to the menu and bind the permission. For more information, see the user manual.
1.5.20 full-text search
Openjweb integrates the Lucene search engine and develops file Resolvers in HTML, txt, PDF, Excel, Word, and other formats. On the openjweb platform, when the information is published as a static page, the static page is saved to a public directory. The background timer of the platform can call the search engine regularly to re-create indexes. Therefore, the released static pages can be searched by keywords on the search pages at intervals.
1.5.21 spring security and CAS
This platform provides spring security and CAS Server 3 + integration methods. If you need to configure spring security and CAS server, refer to Web. xml. CAS and applicationContext-security.xml.cas. User Manual to describe part of the configuration process.
1.5.22 tree structure Generator
The openjweb platform implements a tree structure generator. You can define a tree-based table structure on the platform and generate a tree-based addition, deletion, modification, query, and maintenance page. This function solves the difficulty and long cycle of developing the Tree Structure Maintenance function in enterprise application development. Using this platform, you can create an add, delete, modify, and query function in just a few minutes, you do not need to write any code. For specific operations, see 02-openjweb1.6user manual.
1.5.23 simple approval workflow
The openjweb platform implements a simple workflow. You can customize the status of the process and set the approval action (corresponding to the page button, different approval actions can change the status of a business object from A to B. The corresponding page button is automatically generated for each approval action. You can also specify the execution permission for the approval action. For details, see development video.
1.5.24 edit and publish content management system information
With the support of the simple approval flow, the platform implements the configuration of the Information approval flow. You can use the fckedit online editor to generate a static html page when publishing information after the approval is passed, you can also specify the corresponding topic before publishing information. The content of the static page can be regularly indexed by the platform's search engine. For details, see development video.
1.5.25 supports multiple RDBMS
Tested, the platform can be used in Oracle, Sybase, sqlserver, and MySQL environments. Table creation on the platform supports multiple databases.