Trace: • Technical FAQ
Table of Contents
Firewall setup
VisionX requires http (port 80) and https (port 443) to cloud.sibvisions.com for e.g. solution store, cloud management and other features.
Which database & which platform are you using?
VisionX supports all major database vendors: Oracle, Postgres, MySql/MariaDB, MS Sql, DB2, EDB and Hana. We're using Java and support all Java application servers like: Tomcat, Wildfly, Glassfish, etc. You can deploy the created application with VisionX or manually, to the cloud, on premise, or as client/server desktop application.
Is VisionX on premise or a cloud service?
We offer both, but VisionX always runs on your local workstation.
What are the requirements for deployed applications?
A VM/Server with Java 8, a Java application server and one of the supported databases, e.g. CentOS VM, OpenJDK 8, Apache Tomcat, Postgres.
Can we integrate with Active Directory?
Yes, that's possible with Microsoft AD, but it is not included.
Which Vaadin UI version is included?
We use the latest Vaadin UI based on Vaadin 8.1.6. The system requirements for Vaadin 8.1.6 can be found here.
When dragging a table into a screen...Do you query all records
We have lazy loading everywhere and per default we only load the records that you see on the screen and some more to fill a buffer. We usually load records for about 100 milliseconds but at least the visible amount. The scrollbar shows that more rows are there. When you scroll down, more rows are loaded. The speed depends on the database query/performance and network speed.
Is it possible to search based on 2 or more columns (but not all columns)
No problem, just drag another search field from the bottom of the screen. Choose a column and condition (equal, smaller, …) for each field. All of them will be combined with an AND. A search field without specific condition will act as full-text search for “all columns”.
Is it possible to create a drop down based on a query?
For example: select distinct (S_YEAR) from PERSON_LIST
Be careful because distinct queries are usually “slow”, because of the force full table scan at the database level. To use a custom query for a drop down you do the following:
- Add the table/view as data object in the bottom of the VisionX designer e.g. PERSON_LIST
- Change the query in the data wizard in the bottom right corner e.g. add the distinct keyword before the query columns
- Go to your base table where the drop down should be used, define a manual combobox there, and choose PERSON_LIST object from previous step
Additional information:
Views and Storages
Create Dropdown Without Foreign-Key Relation
Out of memory in VisionX
If you get an Out of memory or a Java heap space error, simply increase the memory of VisionX in visionx.bat or visionx.sh:
@ECHO OFF .\runtime\bin\java -Xmx512M ... -jar lib\visionxloader.jar
Change 512M to e.g. 1G or 1500M. Don't forget to restart VisionX.
Additional JVM start parameters
On Windows, VisionX is usually started with visionx.exe. To define additional JVM parameters, however, visionx.bat or visionx.sh must be used, as any JVM parameters can be set with it, e.g .:
@ECHO OFF .\runtime\bin\java -Xmx512M -Dfile.encoding=UTF-8 ... -jar lib\visionxloader.jar
In this example, the system parameter file.encoding was set to UTF-8.
However, it is entirely possible to set any JVM parameters when using visionx.exe. Since VisionX uses the open source project launch4j, all features of the library can be used, such as the possibility of entering the JVM parameters in an ini file:
All you have to do is create a file called visionx.l4j.ini in the same directory as visionx.exe. The file can then be filled with the desired parameters:
-Dfile.encoding=UTF-8
How to start VisionX with de_CH language settings
Simply change the start script (visionx.bat, visionx.sh) and add your language settings:
-Duser.country=CH -Duser.language=de_CH -Dtomcat.arguments=-Duser.country=CH;-Duser.language=de_CH
Full script:
- visionx_de_CH.bat
@ECHO OFF .\runtime\bin\java -Duser.country=CH -Duser.language=de_CH -Dtomcat.arguments=-Duser.country=CH;-Duser.language=de_CH -Xmx512M --add-opens=java.base/jdk.internal.loader=ALL-UNNAMED --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED -jar lib\visionxloader.jar
If you use Windows and start VisionX with visionx.exe, it's also possible to create a file with the name visionx.l4j.ini:
- visionx.l4j.ini
-Duser.country=CH -Duser.language=de_CH -Dtomcat.arguments=-Duser.country=CH;-Duser.language=de_CH
WAR creation shows compiler errors!
Usually such problems occur if you do manual coding with an IDE. To find out what's the compiler error, simply enable logging and add the line
com.sibvisions.visionx.server.ant.AntRunner.level = ALL
to the file <visionx>/lib/logging.properties
. Read more information about VisionX logging.
To see the output, start visionx with visionx.bat
. All problems will be shown in the console.
Another option is to start the WAR creation manually, in your IDE, with included ANT build file: build.xml. Every application contains this build file.
The start.complete
task will create the WAR file.
Column with same name created when making a subtable
When I click “Make Subtable” after adding a field on the “Edit table” screen, a mandatory column is added that has the same name as the subtable. This is always confusing to me, as I have almost never had a situation where I would have wanted to create a column that has the same name as the table. I am always unsure if best practice here would be to replace the table name with the intended first column name, or if the column with the table name has to be kept in place for another reason (especially since it is mandatory). Can it just be replaced?
Also, when I click the “Make Subtable” button in the “New Screen” wizard, the ID column is not shown. But when I edit an existing table, add a new field and click “Make Subtable” the ID column is shown. Is that intentional?
This is nearby best practice, the only downside is, that we do not know the plural or singular of the given word, to have it perfect.
The theory and best practice in detail:
Tables should be in plural (eg. Projects, Tasks, States…).
This is database theory, but in VisionX you can also use singular, to have less work (clicks and edits) to do, as the first column will be automatically singular.
Mainly a table should have a name/identifier column beside the internal id column.
This column should have a proper name that identifies the table behind this column.
(eg. Project, Task, …)
This column should never be called “Name” or “Identifier”, …, because nearby every table will then have a “Name” column.
VisionX generates the label out of the box from the column names.
If you have several tables inside a screen, you would have several Name editors, and will not know, to which table they belong.
Actually the label of this editor will be renamed to Project or Task in the screen afterwards…
Also in comboboxes it make sence, that the value to choose is not called Name. It is a way better to have out of the box a field “Project” , “Task” or “State” to choose a Project, Task or State.
So this is the reason why it is the best practice, to initially give directly the identifier column a proper name, that identifies the table behind.
There is the possibility, that this identifier column should be calculated and not entered directly.
eg: Contacts.
Here it makes sence to have a “Contact” column, that is shown, if you have to choose a contact in another table (eg in Projects table)
Actually you have the columns first name and last name. The column contact could be calculated either “[First Name] [Last Name]” or like in Outlook, “[Last Name], [First Name]”…
Designing the data model this way, you'll have a contact combobox in projects screen to choose “Doe, John”, “Mustermann, Max”, …
Short Summary
A table should have a name that describes the data it stores.
Normally this table should have a identifier/name column whose name describes which kind of data you get (so this should be the singular of table name), and whose value represents the whole row, to be able to use it as a combobox.
Change E-Plug standard ports
The standard ports for E-Plug communication are 1725 (E-Plug port in Eclipse for VisionX to E-Plug) and 1726 (Port in VisionX for E-Plug to VisionX). If you have problems e.g. ports are already in use, simply change the ports with following system parameters:
EPlugPort (default: 1725)
, VisionXPort (default: 1726)
Simply add the system parameters to the start configuration of VisionX.
VCS folders
Which folders should be added to VSC like git or svn?
All folders and files in your application directory, but not:
config_new.xml (if available) build/classes src.client.backup src.server.backup work/classes
My WebContent/ui will be overwritten automatically
The directory contains the react UI and if you update VisionX, the latest version will be put into your application. Yes, your WebContent/ui
folder will be updated automatically. If you don't want that, simply create a file with name .custom
in your 'WebContent/ui
folder. But be careful because if you have such file, VisionX won't update to the latest version. So it's in your hands and if you have an incompatible version, you have to update on your own or remove the .custom
file.
How to update react UI to latest version?
The latest version can be found here. Download the zip, unzip the content into your VisionX installation: <VisionX>/rad/apps/visionx/resources/application/WebContent/ui
directory. VisionX will update all your applications automatically after next VisionX restart or next application reload.
It's also possible to update only single applications. To do this, copy the content into your application' WebContent/ui
folder. But be careful because VisionX will automatically update to its own version if you don't create a .custom
file.
If you use a react UI from the github repo, we don't guarantee compatibility with VisionX because the UI depends on the server implementation. Problems with custom or manually updated react UI versions are not included in standard product support.
Update export doesn't contain custom folders
The update export doesn't contain custom files or folders. We automatically include following files and folders of WebContent directory:
*.css *.json *.jpg *.png *.gif images/** scripts/** content/** data/** js/** css/**
If you want support for your custom folders, you have to change the following file:
<VisionX>/rad/apps/visionx/resources/ant/export.xml
and search for:
<target name=“update”
There are different include definitions like:
<include name=“WebContent/css/**”/>
Simply add your own includes and the update export will contain your custom files and directories as well.
Different Windows file encodings
Sometimes, you have the same Windows OS but different file encodings, e.g. cp1252 vs. UTF-8. This is not a VisionX problem, it's an OS setting. Some Windows installations have a new UTF-8 feature. You can see this option by going to Settings and then: All Settings → Time & Language → Language → Administrative Language Settings
Will look like:
Simply unset UTF-8 or set cp1252 instead of UTF-8 as described here.
Application directory
If you want to know the directory in which an application is stored, simply press Shift + Alt (Shift + Option, MacOS) to show new icons besides the application. Here are some details.