User Guide
  • Introduction
  • Overview
    • About 4WS.Platform
      • Architecture
      • Enterprise Edition
      • Tech specs and requirements
      • Warp SDK
    • Creating a web application
  • Core features
    • Tables
    • SqlTool
    • Definition of Data models and Relations
      • Relations
      • Reverse Engineering
      • Custom Fields
    • Defining business components
      • What are business components
      • Business components to fill-in panels
      • Creating business components
        • By a datastore entity
        • By a MongoDB collection
      • Defining Custom Java Business component
    • Defining the UI
      • App Designer
        • App Designer Menu
        • Definition of additional data sources
        • Panel containers and layouts
          • Tab panel
          • Alternative panel
          • Accordion panel
          • Vertical orientation panel
          • Horizontal orientation panel
          • Columns panel
          • Table panel
          • Generic panel
          • Responsive panel
        • Window content
          • Grid Panel
          • Form Panel
          • Filter Panel
          • Tree Panel
          • Google Map Panel
          • Preview Panel (old Image panel)
          • Tree + Grid Panel
          • Image Gallery
        • Windows list
        • Panel definition
          • Columns properties
          • Controls properties
          • Filter properties
          • Supported components
        • Variables
        • Code selectors
          • When not to use a dynamic combo-box
        • Smart Filter and Advanced Filter
        • Multi Value Combobox Filter
        • Multi Value Tree Filter
        • Buttons
        • Translations
          • Translations about GUI components and internationalization settings
          • Data coming from database
          • Custom code and translations
        • Application Menu
        • Bulk import binded to a grid
        • Range Date Filter
      • Web Interpreter
        • Grid components
        • Detail forms
        • Other components
        • Other features
          • Chat
        • Global variables
          • Client-side global variables
          • Server global variables
        • Forgot Password
    • Working with users and roles
      • Rule for roles
      • Permissions Administrator
    • Wizard
      • How to add a checkbox grid to select one or more rows
      • How to load a second grid when clicking on a row from the first grid
      • How to load a form when clicking on a row of the grid
      • How to open a window when double clicking on a row of the grid
      • How to open a window with right click on the popup menu
      • How to open a window when pressing a button on the grid toolbar
      • How to load a grid after loading a form
      • How to open a window when pressing a button on the form toolbar
      • How to load a grid when clicking on a tree node
      • How to load a form when clicking on a tree node
    • Defining events
      • Panel events
      • Column events
      • Control events
      • Filter events
      • Timer events
      • Start-End event
    • Server-side Javascript & Web Service
      • Server-side Javascript
      • Grid component filled by a server-side JS
      • Detail component filled by a server-side JS
      • How to define a server-side JavaScript action
      • Web service
  • Setting up the environment
    • How to install
    • Application parameters
    • Global parameters
  • Modules
    • Reports & Charts
      • Jasper Report + iReport
      • Online report
      • Docx templating
      • Charts
      • Pivot Grid
      • Multidimensional pivot grid
      • Data Export from SQL query
    • SSO
      • Identity management in Platform
        • Identity management on the internal Platform database
        • Identity management based on Google SSO
      • LDAP
        • LDAP support
        • Identity management based on LDAP and database
        • Identity management based on an embedded LDAP server used by Alfresco and or Activiti
        • Identity management based on a remote LDAP server to connect to Platform on the cloud
        • Connecting an LDAP server to Activiti BPM
        • Connecting an LDAP server to Alfresco ECM
      • Google SSO
        • Google SSO
        • Google OAuth2
        • Identity management based on Google SSO
      • Custom SSO
      • Firebase
    • Mobile
      • Mobile introduction
      • Offline vs Online
        • Server side features
        • Server side functionalities
        • Server side Platform features
        • Mobile app features
      • Mobile side specifics
        • Customizations
          • Custom theme editor
        • App Menu
        • Window content
          • Detail scrollable form
          • Scrollable paginated grid
          • Constraint layout
          • Constraint panel
          • Collection grid view
          • Preview panel (mobile)
        • Form Controls
      • Reference guide
      • Cleaning up data
      • How to
      • App deployment
        • App deployment for the iOS platform
        • App deployment for the Android platform
      • Style properties
      • Appendix : Synchronization flow
      • Translations
    • GSuite
      • Introduction
      • Client-side integration
      • GMail
      • Calendar
      • Drive
      • Contacts
    • Google Cloud Platform
      • Datastore
        • Google Datastore Introduction
        • How to create Datastore entities
      • Google Cloud Storage
    • Scheduler
      • Scheduler Introduction
      • Process settings
        • How to define a sequence of consecutive processes
        • How to define a Custom Java Business component
        • How to define a Grid Data Import
        • How to define a server-side Javascript action
      • Email notifications
      • Process executions
      • Manually start a scheduled process
      • Process input parameters
    • Queue Manager
    • Log & Analysis
      • Application Log
      • Log statistics
      • App analyzer
      • Table log
      • Threads
      • Sessions and heap memory
      • Heap memory analysis
      • Access Log
      • Datastore statistics
      • Total monthly costs with Google Datastore
      • Service Monitoring
        • Introduction
        • Defining a service to monitor
        • Notifications setup
        • Events automatically managed by Platform
        • Remote Platform servers
        • Knowledge base
        • Adding log programatically
        • Searching for logged data
        • Use cases
    • File Management
    • Export and Import of Metadata
      • Application Metadata Management
    • Trigger writing operations
    • Audit
    • BPM
      • BPMN Introduction
      • BPMN main parts
      • Activiti Setup
      • Platform integration
        • Processes
        • Models
        • Process instances
        • To-do list
        • Process history
      • Process Web Modeler
        • Model Creation
          • Start-End Event
          • Gateways
        • Supported objects
        • Start tasks and user tasks
        • Form properties
          • Important notes
          • Property types
        • Service tasks
          • Web service
          • SQL Query
          • SQL statement
        • Mail task
        • Script task
          • Example : how to get a value previously read from a SQL query
          • Example : how to get the current process instance id
        • Timer events
        • Subprocess and Call Activiti
      • Utility methods available in Platform
        • How to start a process from a JavaScript action
        • How to complete a user task from a JavaScript action
      • An example
        • Processes
        • Instances
        • Activities
        • History
    • Embedded CMS
    • ECM
      • Alfresco
        • Alfresco Introduction
        • Integration between 4WS.Platform and Alfresco
          • Integration at GUI level
          • Integration at model level
          • Integration at authentication and authorizations level
          • Additional features
        • How to use 4WS.Platform and Alfresco together
          • Set the same Identity Management system
          • Define document types and aspects in Alfresco
          • Import the document types and aspects definitions in 4WS.Platform
          • Define document types and aspects in 4WS.Platform
          • Reverse engineering of document types or aspects
          • Definition of business components to fill-in panels
          • Definition of the GUI
          • Additional server-side services
        • Requirements
        • Current limits in 4WS.Platform - Alfresco integration
      • Archiflow
        • Setup
        • Archiflow artifacts
        • How to
    • Lotus Notes Migration Tool
    • NoSQL databases
      • MongoDB
        • MongoDB Introduction
        • Setting up the environment
        • How to create collections
        • How to create business components
        • How to create windows filled with data coming from MongoDB collections
        • Design rules
      • Google Datastore
        • Google Datastore Introduction
        • Setting up the environment
        • How to create entities
        • How to create business components
        • How to create windows filled with data coming from Datastore entities
        • Design rules
    • TensorFlow
    • Web Page Development
      • Pure Web Page Development
      • Google Material Design development
      • Appendix A - a complete example without any lib
      • Appendix B - a complete example with Google MD
    • Jira Integration
    • Platform for GAE
    • SQL errors management
    • Multidimensional pivot grid
    • Quality
      • Automated Web Service Testing
      • Automated unit testing
      • Source code static analysis using ESlint
      • Source code static analysis using SonarQube
  • Troubleshootings
  • Best practises
    • Database design
    • Database maintenance
    • Creating a Web app : common use cases
    • Creating a mobile app : common use cases
Powered by GitBook
On this page

Was this helpful?

  1. Core features
  2. Defining business components

What are business components

PreviousDefining business componentsNextBusiness components to fill-in panels

Last updated 5 years ago

Was this helpful?

Business components are usually connected to a data model, except for two special kind of business component, used to create a read only query and called "Query for a report to show on grid" and "Component for control query". A business component allows to define a query to execute and used to populate a grid/tree nodes or a detail form component. The select part is usually read-only, since it is automatically composed from the from clause, which is implicitelly defined starting from the selected data model connected to the business component and from the selected relations. This means that the user can choose a data model (a specific table) and out-relations: starting from these models (tables) the select and from clauses are automatically composed. The user can define manually the where, order, group by and having clauses.

Any number of business components can be defined, so you can populate a bunch of different grids, each with a specific filtering condition. An exception to this behavior are the "Query for a report to show on grid" and "Component for control query" components, where neither data model nor relations are required: the user is free to define each part of the SQL query. Consequently, any number of retrieval queries can be defined. Each business component has a component type associated; these are the supported types:

  • Grid component automatically/manually created – when creating a grid component, it can have linked this component type; it is automatically created along with the data model creation

  • Detail component automatically/manually created – when creating a detail form component, it can have linked this component type; it could be automatically created along with the data model creation

  • Grid service automatically/manually created -starting from an URL invoking a web service, the response form the web service is retrieved, which must be in JSON format and having a format compatibile with the object definition; the service must return a list of records

  • Detail service automatically/manually created -starting from an URL invoking a web service, the response form the web service is retrieved, which must be in JSON format and having a format compatibile with the object definition; the service must return a single record, starting from the primary key values provided in the URL

  • Custom Java grid component – when creating a grid component, it can have linked this component type; in this case, the bean name of the component developed manually by the programmer is specified. See this section for more details.

  • Custom Java detail component – when creating a detail form component, it can have linked this component type; in this case, the bean name of the component developed manually by the programmer is specified. See this section for more details.

  • SQL definition component – a generic SQL instruction (insert, update, delete) manually invoked by the GUI, when a specific event happens

  • Custom SQL def. component – a generic SQL operation performed internally to a custom business component; in this case, the component bean name is specified

  • Query for a report to show on grid – a generic SQL query, linked to a grid component, manually defined by the user; since the SQL statement can include any number of tables, the linked table must be read only

  • Component for counter retrieval – a special business component invoked to generate a counter for a field when inserting records; in this case, the component bean name is specified.

  • Component for control query – a generic SQL query, same as the query for a report to show on grid, but it doesn’t create a new window with a grid.

  • Grid component filled by a server-side JS – once chosen the linked object, you are free to use server-side javascript and create all the business logic you need to get back a JSON string representing a list of records to fill in a grid. This business component can replace a “Grid component automatically/manually created” when the business logic is too complex to be managed by a single SQL query. See this section for more details.

  • Detail component filled by a server-side JS – once chosen the linked object, you are free to use server-side javascript and create all the business logic you need to get back a JSON string representing a single record to fill in a detail form. This business component can replace a “Detail component automatically/manually created” when the business logic is too complex to be managed by a single SQL query.

  • Grid component filled by a GDrive folder – when Platform is connected to a GSuite account, you can access to Google Drive folders. This component allows you to specify a Google Driver folder and get a list of all files stored in that folder. For each document a series of attributes are fetched. Such a list is used to fill in a grid.

  • Grid component filled by a GDrive folder and subfolders –when Platform is connected to a GSuite account, you can access to Google Drive folders. This component allows you to specify a Google Driver folder and get a list of all files stored in that folder and all its subfolders too. For each document a series of attributes are fetched. Such a list is used to fill in a grid.

The first two components requires to be linked to a specific object, where the object (or data model) represents a database table and its fields. The first component can be used to automatically generate a SQL query composed of a SELECT + FROM clauses, whose definition comes from the object the business component is linked to: starting from the object definition, the SELECT + FROM clauses can be automatically generated. The user has just to complete it, by adding for instance a filtering condition (WHERE clause). The result is a business component that can fetch a list of (filtered) records from a table, perfect to fill in a grid. The second component can be used to automatically generate a SQL query composed of a SELECT + FROM + WHERE clauses, whose definition comes from the object the business component is linked to: starting from the object definition, the SELECT + FROM clauses can be automatically generated. Moreover, the WHERE clause is automatically composed as well, starting from the primary key definition for the corresponding table: the WHERE allows to get one only record, starting from its primary key, which is not “fixed” in terms of values, but parameterized. The result is a business component that can fetch a single record from a table, starting from the primary key values, perfect to fill in a detail form.