Category: News
We're hiring
Wir suchen Verstärkung für unser Framework Team. Wenn du immer schon an einem Open Source Framework mitarbeiten wolltest und Forschung/Entwicklung genau das ist was dir zusagt, dann bewirb dich bitte!
DOAG 2018 - Low code
Let's talk about VisionX and Low Code Development at DOAG 2018 |
![]() |
We're waiting for your questions ![]() |
![]() |
DOAG 2018 - I'm a speaker
![]() |
I'm a speaker at DOAG 2018 in Nuremberg. It's the 5th year in a row ![]() My German talk will be about The talk is a practice report about using a Low Code Development Platform to create a Workflow for Web and (Web/native) Mobile apps. |
Workflow Engine for Oracle Forms
I'm happy to announce that our Workflow Engine will work with Oracle Forms.
The current state is beta but we'll release our Workflow engine in the next days. We found some time to test the integration in Oracle Forms and the result is soo cool. It works like a charm.
So it will be possible to embed our Workflow engine in your oracle Forms. It'll be possible for your users to design custom flows and processes. The engine itself is database driven and will work with your Oracle Forms application.
More details will follow in the next days, but here's a first impression:
It's a standard Oracle Forms window/canvas with our Workflow Designer, embedded as Java Bean.
Feel free to ask your questions
MacOS Swing Look and Feel
We improved the support for standard MacOS LaF in our Swing UI and VisionX. The LaF has a lot of rendering problems. We tried to use another LaF implementation but had other problems. So we decided to keep the standard Java MacOS LaF.
The problems
- The InternalFrame border problem
- The field border problem
A simple JTextField has a 5 pixel focus border. This is horrible because the focus is about 2 pixel. The other problem is that a JTextArea wrapped in a JScrollPane doesn't have the 5 pixel border. This makes it hard to create nice looking layouts.
We fixed this problem:
Looks better. One problem is that the JScrollPane doesn't paint the focus if the JTextArea has the focus. This is a LaF problem and we didn't find a workaround for this problem.
- Application Menubar
Standard Java appliacations show the menubar in the same frame
If you set the system property:
System.setProperty("apple.laf.useScreenMenuBar", "true"); - Comboboxes
The height of Standard Comboboxes is wrong:
We fixed the problem as good as possible:
- VisionX Toolbar height
The toolbar height was wrong because of layout calculation problems:
We fixed the problem and the toolbar height is correct:
- VisionX Wizard gaps
The image gaps in VisionX wizards was not recognized:
It looks better without gaps:
- Wrong button rendering
If you had a button without an image and a button with an image, the height of the button without image was higher than the button with an image. This is a LaF rendering bug:
The fonts are also different. We didn't know why there has to be such a difference, but we fixed the problem in Swing UI:
the menu will be placed in the menu bar of MacOS:
We fixed the problem that setting the menu to null will keep the menu as it was.
All changes are available in our nightly JVx builds
VisionX CSS Styling feature
The upcoming release of VisionX will support CSS styling. We'll show you a first impression with a short video:
Vaadin AddOn for VisionX
The editor supports autocompletion and syntax highlighting:
We did integrat the RSyntaxTextArea for this. If you want to know how this works, check the documentation.
Screen Embedding AddOn for VisionX
We have a new AddOn for all VisionX users. It's the Embedding AddOn.
The new AddOn makes it possible to embedd one work-screen into another work-screen. Simply re-use screens in other screens.
Get an impression
Vaadin AddOn for VisionX
The AddOn is commercial and not included in VisionX. Contact our sales team to get more information!
JVx REST interface update
Our generic REST interface of JVx got an update.
The REST services are a powerful feature of JVx and built-in. Usually you would implement your own REST services, but JVx has the concept of lifecycle objects and the powerful action mechanism. It would be ugly to implement another layer on top of JVx just for REST services. This is a framework feature.
We had this powerful feature for a long time and it is still in use for different use-cases:
AngularJS 4 with VisionX and JVx REST services
AngularJS with JVx in action
Our REST interface just works and you are able to create microservices very fast and efficient.
But the interface has a problem with some kind of parameters because they are also generic. Suppose you have the following method:
The result type (IFileHandle) isn't a problem because JVx will send the bytes in the REST response, but the parameters: pFilter and pSort are specific types and not base types like String, Array, int, float.
It wasn't possible to call such methods without wrapper methods like:
{
return createReport(createCondition(pFilter), createSort(pSort));
}
Still not hard to solve, but parsing the filter and sort definition weren't trivial tasks. In fact, it was annoying.
We now have support for such parameters and much more. It's not super modern but an awesome solution!
Assume you have following code in one of your lifecycle objects:
{
DBStorage dbs = (DBStorage)get("adrData");
if (dbs == null)
{
dbs = new DBStorage();
dbs.setDBAccess(getDataSource());
dbs.setWritebackTable("ADDRESS");
dbs.open();
put("adrData", dbs);
}
return dbs;
}
The DBStorage class offers a public method:
ICondition pFilter, SortDefinition pSort) throws Exception
This method creates a CSV report (address data in this example). It has some parameters for the expected filename, optional column names which should be used for the report, optional labels for the column names, the filter condition and sort definition.
To call this method as REST service, simply send a post request with following information:
e.g. URL:
(demo is the application name, Address is the lifecycle object name, adrData is the object name)
Body:
"{j:new LessEquals('NR', 10)}",
"{j:new SortDefinition(new String[] {'NR', 'STAIR'}, new boolean[] {true, false}}"]);
The body contains Java Code (in the JSON string).
W00t?
JVx got support for executing simple Java code. We introduced the new utility class SimpleJavaSource. It's a backport from our commercial product VisionX. The SimpleJavaSource is able to execute the given parameters and creates real Java objects. It doesn't support conditions or loops, so it's really simple - but powerful!
With our new SimpleJavaSource and the support for parameter Code, it'll be possible to call most methods without additional wrapper methods.
The SimpleJavaSource class is now included in JVx and ready to use. It's simple but powerful:
ssj.addImport("javax.rad.model.condition.*");
String sEqualsCode = "new Equals('ID', 0).or(new Like('NAME', '%john%'))";
ICondition cond = (ICondition)ssj.execute(sEqualsCode);
The new features will be available with our next JVx release and are already available via nightly builds.