This website uses cookies for visitor traffic analysis. By using the website, you agree with storing the cookies on your computer.More information

VisionX 5.6 - New hidden feature for developers

Upcoming version 5.6 has two hidden features. More interesting for Java developers than for Citizen developers. The first feature makes it possible to include external application directories.

Usually, you start creating a new application with VisionX. The location is <visionx_install_folder>/rad/apps/<appname>. This is not the best place if you have your own directory structure or if you want to use a VCS like git or subversion. In this case, no worries. Simply copy the application folder to the right place and drag the folder back into VisionX. An information message will be shown and everything is done. If you delete such "linked" application, only the link will be removed. This hidden feature replaces manual usage of apps.xml in your rad directory. It was a manual task which is not necessary anymore.

The second hidden feature is in the main screen of VisionX. If you press Shift + Alt, two new icons will appear for every application:

New options for an application

New options for an application

A click on the first icon will open the application directory in system explorer and the second icon will import or open the application in a running Eclipse installation, if EPlug is installed.

Both features are a big help in your daily work with VisionX.

Screencasts with VisionX 5.6

VisionX 5.6 will have awesome new features like

  • VisionX Cloud support
  • Dashboard support
  • Chart support
  • Scheduler
  • AuditLog (optional)
  • REST action calls

The new release will be available by the end of this week!

And another new big feature is our Video recorder:

VisionX Recorder

VisionX Recorder

The recorder is a small bar under VisionX, if enabled:

VisionX with recorder

VisionX with recorder

To enable this bar, press Shift + Alt (MacOS: Shift + Option). It makes it possible to record a video of the whole screen or just the application. It's also possible to take a screenshot instead of a Video. The videos are compressed with Techsmith Screen Capture Codec. So it's required to install this codec in your OS to playback recorded videos. It's also possible to use VLC as video player. On macOS the elmedia Player is a good option.

If you want a standard video format, it's possible to automatic convert the videos. Simply download the Videoconverter archive and extract its content into the lib directory of your VisionX installation folder. If converter is available, all recorded videos will be converted automatically into the converted folder of your recordings directory. The format is AVI with MPEG4 codec. This should playback well under most OS'.

The recorder should be used especially if you talk to our support. It's easier to find problems if you record them.

Some customer applications

Sometimes it's better to show real-world applications than writing about features and possibilities.

VisionX is an awesome platform and in this blog posting I want to show you some of our customer applications - as good as possible!

The first one is SNOWsat Maintain. Our customer is Pistenbully. There are some official details available on our customers website. A short YouTube video, in German, as well.

The prototype of an S5 audit administration tool was created by Dr. Werner Smekal. It's not production ready, but the screenshot looks really clear.

A really cool scientific project management software was created by TU Darmstadt. Really impressive.

News collection

It's some time ago that I wrote here. The year was so unexpected and we had so many challenges. I don't mean Covid-19, I want to write about our hot stuff from our dev team.

Best news first: Next VisionX release will be available before Christmas. It's outstanding and the best version since our first release.

But some advertising first :)

We had a talk about Low-Code and VisionX on December 2nd at Berlin Low-Code Solution Week 2020. Our talk is in German, but very interesting and fresh. Watch the video.

Another thing we want to introduce, is our VisionX academy site. It contains a lot of new explainer videos. Simply check our explainer videos. Most are not longer than 2 minutes.

And now the big news!

Our new VisionX release has a brand new Connectivity AddOn and also a brand new Query Editor AddOn. The Connectivity AddOn enables you to use any REST service in your application. We tried to keep the Service integration as simple as possible and support about 20 Service providers with about 50 services - out of the box. Some services providers are SAP, Salesforce, Trello, Slack, Jira, OData, ...

Our brand new Query Editor is end-user friendly and super easy to use:

Query Editor

Query Editor

Simply define your own queries and use them in any screen.

Another key-changer is our brand new mobile client. It's a complete rewrite of our old clients. It's based on Flutter and it's fully OpenSource. The repo is available on Github. A demo application is also available on Github.

The client is more powerful than the old client and supports all Layout features of VisionX. The old didn't support any layout customization. And the key-changer here is that the live preview runs in any web browser. You don't need a mobile device to test the mobile preview!

Are you curious yet?

More is coming...

What exactly? VisionX cloud infrastructure and automatic cloud deployment!

Es fluttert gewaltig - Artikel

Es gibt seit kurzem einen neuen Artikel über unsere brandneue Flutter App in der deutschen Presse. Hier das Intro:

Wer eine App für mobile Geräte entwickeln möchte, steht zumindest vor einer wichtigen Frage: Mit welcher Technologie soll die App realisiert werden? Da es aktuell verschiedenste Möglichkeiten gibt, ist die Antwort nicht sofort klar. Mit diesem Problem war das Framework-Team von SIB Visions ebenfalls konfrontiert, als es darum ging, einen Client für das Open Source Application Framework JVx zu entwickeln. Wie
vor allem was umgesetzt wurde, wird ...

Der vollständige Artikel ist hier zu finden. Prädikat lesenswert :)

VisionX with Docker support

The next VisionX release will support Docker. If you are not familiar with Docker, it's worth a try. It offers super fast deployment and app delivery without additional hardware or software installation. If you're interested in Docker simply use Google.

The whole Docker technology is a big plus for application developers and also for our low-code platform VisionX. We will support Docker deployment with our next release.

Every application, created with VisionX, requires a Java application server like Tomcat and a relational database like Postgresql in order to run. If you don't own such runtime environment, it might be tricky to roll out your application! Sure, there are very cheap hosting provider which offers root server and application hosting, but this requires lots of IT skills. With docker, deployment is getting easier for you.

With next VisionX, it will be possible to create a pre-defined docker container in seconds. Use this container to create your own docker image and use Docker to run your application.

We'll show you some impressions how this will work:

Docker support

And it will also be possible to use existing Docker Hosting Provider to run your application.
We tried it out with sloppy.io:

sloppy.io

Our docker container uses our own Tomcat definition, which can be found here. Feel free to use our tomcat image in your environment. It solves some common configuration problems like custom port definition, username, password.

VisionX update release 5.4.3900 is available

VisionX 5.4.3900 is available!

It's a small bugfix release with following improvements:

  • Fixed using server storage in combobox

    It wasn't possible to use a server storage in the data wizard.

  • FilterEditor API improved

    The FilterEditor API change was needed to support new features of Profiles and Filter AddOn. It's now possible to better group And/Or and to disable "expert mode".

The download area already contains links to latest VisionX binaries.

Please report any problems as usual and have fun with VisionX.

Adding new paths for native libraries at runtime in Java

If you want to add some native libraries at runtime, it was tricky with Java 8+:

This was a valid solution:

final Field fldUsrPaths = ClassLoader.class.getDeclaredField("usr_paths");
fldUsrPaths.setAccessible(true);
 
//get array of paths
final String[] saPath = (String[])fldUsrPaths.get(null);
 
//check if the path to add is already present
for (String path : saPath)
{
    if (path.equals(pPath))
    {
        return;
    }
}
 
//add the new path
final String[] saNewPaths = Arrays.copyOf(saPath, saPath.length + 1);
saNewPaths[saNewPaths.length - 1] = pPath;
fldUsrPaths.set(null, saNewPaths);

Since Java 10+ it's not possible anymore, because of: JDK-8210522
Some details from Stackoverflow

If someone still needs a solution for Java 10+, here it is:

Lookup cl = MethodHandles.privateLookupIn(ClassLoader.class, MethodHandles.lookup());
VarHandle usr_paths = cl.findStaticVarHandle(ClassLoader.class, "usr_paths", String[].class);
String[] path = (String[])usr_paths.get();

...

usr_paths.set(new String[] {"A", "B"});

This code won't work if you are using Java 8. If you want support for e.g. Java < 10, simply use reflection :)
Sounds simple, but it is not simple.....

Here's a working solution: toPDF project (search for addLibraryPath(String pPath)).

The code in detail:

Class<?> clsMHandles = Class.forName("java.lang.invoke.MethodHandles");
       
Method mStaticLookup = clsMHandles.getMethod("lookup");
Object oStaticLookup = mStaticLookup.invoke(null);

Method mLookup = clsMHandles.getMethod("privateLookupIn", Class.class, Class.forName("java.lang.invoke.MethodHandles$Lookup"));
Object oLookup = mLookup.invoke(null, ClassLoader.class, oStaticLookup);

Method mFindStatic = oLookup.getClass().getMethod("findStaticVarHandle", Class.class, String.class, Class.class);

Object oVarHandle = mFindStatic.invoke(oLookup, ClassLoader.class, "usr_paths", String[].class);

//MethodHandle mh = MethodHandles.lookup().findVirtual(VarHandle.class, "get", MethodType.methodType(Object.class));
//mh.invoke(oVarHandle);

Method mFindVirtual = oStaticLookup.getClass().getMethod("findVirtual", Class.class, String.class, Class.forName("java.lang.invoke.MethodType"));

Class<?> clsMethodType = Class.forName("java.lang.invoke.MethodType");
Method mMethodType = clsMethodType.getMethod("methodType", Class.class);

Object oMethodHandleGet = mFindVirtual.invoke(oStaticLookup, Class.forName("java.lang.invoke.VarHandle"), "get", mMethodType.invoke(null, Object.class));

Method mMethodHandleGet = oMethodHandleGet.getClass().getMethod("invokeWithArguments", Object[].class);

String[] saPath = (String[])mMethodHandleGet.invoke(oMethodHandleGet, new Object[] {new Object[] {oVarHandle}});

//check if the path to add is already present
for (String path : saPath)
{
    if (path.equals(pPath))
    {
        return;
    }
}

//add the new path
final String[] saNewPaths = Arrays.copyOf(saPath, saPath.length + 1);
saNewPaths[saNewPaths.length - 1] = pPath;

//MethodHandle mh = MethodHandles.lookup().findVirtual(VarHandle.class, "set", MethodType.methodType(Void.class, Object[].class));
//mh.invoke(oVarHandle, new String[] {"GEHT"});

mMethodType = clsMethodType.getMethod("methodType", Class.class, Class.class);

Object oMethodHandleSet = mFindVirtual.invoke(oStaticLookup, Class.forName("java.lang.invoke.VarHandle"), "set", mMethodType.invoke(null, Void.class, Object[].class));

Method mMethodHandleSet = oMethodHandleSet.getClass().getMethod("invokeWithArguments", Object[].class);

mMethodHandleSet.invoke(oMethodHandleSet, new Object[] {new Object[] {oVarHandle, saNewPaths}});

Not simple!!!

Summarized: It's not easy but it's still possible. So.... why are things getting more and more complex?

VisionX 5.4 Update release is available

VisionX 5.4.2450 is available!

It's a small update release with following improvements:

  • MySql database support

    We fixed a problem with app export (from embedded PostgreSql) and re-import into a MySql database. It wasn't possible to configure combobox columns.

  • Popup Menu button click

    Sometimes, a click on the arrow of a popup menu button, didn't show the popup and triggered the button action instead.

  • Screen generation

    A new screen with only one table was generated with an additional "white" panel.

  • Filter AddOn update

    We improved the Filter AddOn and now support And/Or grouping. It's also possible to save and load filter settings.

    Some impressions:

    Filter AddOn

    Filter AddOn

    Load settings

    Load settings

  • Filter Editor API

    We improved our Filter Editor API. It's now possible to define the Full-text Filter column names and also which column names can be filtered in general. It's possible to group filter editors by condition (or, and, ...). This enhancement is relevant for developers.

VisionX 5.4 is available

VisionX 5.4.1835 is available!

It's a great release with big changes.

The new VisionX version got updates of used open source libraries. It runs with openJDK 12 and supports openJDK 14. It comes with awesome responsive UI support for desktop, web and mobile. We support our brand new mobile UI which is still under development.

What's different?

  • New MorphPanel with full responsive support

    This feature is available for Desktop, Web and Mobile devices. Create only one screen to support all targets.

    Responsive for Desktop

    Responsive for Desktop

    Web settings

    Web settings

    Mobile settings

    Mobile settings

  • Responsive option for Panels

    Simply en/disable the responsive feature for single panels.

    Responsive option

    Responsive option

  • MorphPanel navigation bar

    The MorphPanel shows a small navigation bar directly in the screen. You can use this bar to switch between the tabs without opening the customizer every time.

    Morph Panel navigation

    Morph Panel navigation

  • New work-screen wizard

    We have 4 types of screens: Table with Detail form, Table, Form, Empty. Each type has different layout options for Web, Desktop, Mobile and Universal. The difference are gaps and margins and default settings of elements. Some layouts include full-text search and some don't include search options.

    New screen wizard

    New screen wizard

  • New customizable screen generators

    The screen generators are customizable for developers. Simply create your own or extend an existing generator and use it directly in VisionX. Simply create your own definition file like this one:

    <?xml version="1.0" encoding="UTF-8"?>

    <generator>
      <group text="Table with detail form"
             image="/c/s/v/i/w/w/category_tableform.png">
        <entry class="com.sibvisions.visionx.uigenerator.WebTableFormUIGenerator"
               text="Web layout"
               image="/c/s/v/i/w/w//group_web.png" />
        <entry class="com.sibvisions.visionx.uigenerator.MobileTableFormUIGenerator"
               text="Mobile layout"
               image="/c/s/v/i/w/w//group_mobile.png" />
        <entry class="com.sibvisions.visionx.uigenerator.TableFormUIGenerator"
               text="Desktop layout"
               image="/c/s/v/i/w/w//group_desktop.png" />
        <entry class="c.s.visionx.uigenerator.UniversalTableFormUIGenerator"
               text="Universal layout"
               image="/c/s/v/i/w/w//group_universal.png" />
      </group>
    </generator>

  • Live Preview without any differences

    We improved our UI for browsers. New layouts, better performance and same features.

  • Shared folder support

    An awesome new feature is the shared folder support for your projects if you are a developer. Simply put your POJOs or Beans in the new shared folder and use this classes in your client or server classes.

  • New domain management

    Change pre-defined or create custom datatypes. The screen is available in VisionX' Administration menu.

    Domain management

    Domain management

  • Support for latest Workflow AddOn (3.0)
  • Performance improvement of Designer

This is how the responsive mode works on Desktop

Responsive mode

Some impressions of our new mobile client are available here

The download area already contains links to latest VisionX binaries.

Please report any problems as usual and have fun with VisionX.