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

JVx 1.0 with REST support

Some of you asked us: When is JVx 1.0 available?

The answer was and is still: This year :)
More precisely: Planned release date is Friday, 23rd December.

The current version in our SVN repository is Feature complete. Only some tickets are still open, but all of them are not really important for 1.0. Some are beautifying and some are smaller bugs that do not hurt.
We are optimistic that these are done till Friday, otherwise the open tickets will be moved to Release 1.1.

In addition to numerous changes and new features, the REST support is certainly one of the most interesting innovation. The feature was not originally planned for 1.0, but it is cool nowadays.

But what do we understand as "REST support"?

Every server-side action, and every object that is available via a Life-Cycle object, are accessible via REST calls. Don't worry about security, because the same access checks are done as for common applications. If an action or object is available for an application, it is available via REST calls.
You don't need additional configurations for your applications, actions or objects - no annotations and no config files are needed.

It sounds simple? Yes, it is so simple!

I want to show you a short example, based on Restlet. We have a life-cycle object like the following:

public class Address extends Session
{
  public DBStorage getAddress() throws Throwable
  {
    DBStorage dbs = (DBStorage)get("address");
       
    if (dbs == null)
    {
      dbs = new DBStorage();

      dbs.setDBAccess(getDBAccess());
      dbs.setWritebackTable("ADDRESS");
      dbs.open();
               
      put("address", dbs);
    }
               
    return dbs;
  }

  public String getData()
  {
    return "Text data";
  }

}

The object has one action "getData" and the object "address".

Now we call the action:

String sHost = "http://localhost/jvx/services/rest/demo/Address/action/getData";

ClientResource cres = new ClientResource(sHost);

Representation rep = cres.get();

String sData = JSONUtil.getObject(rep, String.class);

And we fetch all records:

String sHost = "http://localhost/jvx/services/rest/demo/Address/data/address";

ClientResource cres = new ClientResource(sHost);

Representation rep = cres.get();

List liRecords = JSONUtil.getObject(rep, List.class);

Is it as simple as expected? We hope so ;-)

Of course, there are options for fetching only specific records. Insert new records, update and delete one or more records. All options are implemented in test cases. Have a look at the Action or Storage tests.

More details and the documentation will follow after the release of JVx 1.0.

Howto Videos

In the last weeks, we talked long time about VisionX Support, Tutorials and Videos. What should we use? A Forum, a mailing list, a Ticketing system, ...?

We use a Forum for JVx support and think that it was a good decision because the communication works and we don't forget our tasks. So we think a Forum for VisionX related questions is also a good choice. For bug reporting, the best choice is a ticketing system and we are very happy with our Flyspray system.

We don't like mailing lists. Sometimes it is comfortable to send an email and use the mail client for communication because it is in use, all the day. But online search interfaces are awful and links to mailing lists are not very cool.

What about product documentation?

Who wants to read a lot of text? We don't want it.
We decided to use a lot of short Howto Videos (30 seconds to 1 minute), some intro texts and a lot of screenshots.

The first videos are online on our YouTube channel.
Please check them and give us your feedback.

VisionX - Some impressions

With VisionX, we make it possible to create business applications without developer skills. We are often asked, how that is possible.

Our answer is always the same - keep things simple and use a language that a user understands.
Most things in VisionX are done with wizards, because it is the easiest way to give the user an overview.

We want to show you some impressions:

User management

User management

  Manage your users

Create new users, edit existing users,
assign roles...

You don't need an administrator to
enable the access to your application!

Actions

Actions

  Create your own actions

Show a report on button click,
Send an e-mail when the invoice
state is changed, ...

Define your own processes - without developer
skills.

Reports

Reports

  Create custom reports

You need a list of all orders, customers or
invoices?

Create a standard report, change and use it. Don't learn how to use a new reporting tool, use your existing office solution!

VisionX - Public Cloud is available

The current version of VisionX is available as Public Cloud version. After a short registration you get access to VisionX.

The Public version shares all available applications with all registered users. It is different to the Beta phase because the Beta version was like a private Cloud per user.

With VisionX you get a tool to create your own applications without developer skills. A dream comes true.
It is no exaggeration to say that VisionX is the world's only tool of its kind.

What features are available in VisionX Cloud?

Here are some of them:

  • A very smart WYSIWYG User Interface editor
  • Edit actions without source code (open a screen, calculate values, hide components)
  • Reporting with customizable templates
  • Complete User management
  • Role management (customize an application per user)
  • Menu management
  • Module support and API for third party modules
  • Use existing database models and create User Interfaces
  • Import spreadsheets (csv, xls, xlsx)
  • Application customization (auto login, default screen, images, ...)
  • HTML User Interface (webui)

Are you interested? Start with VisionX - now.

JVx 1.0 beta-5 is available

It is available from the project page.

What’s different?

We fixed some important bugs and implemented new security checks. The new release does not have new killer features and it is more of a stabilization release. We think that the "Christkind" or maybe Santa Claus will have JVx 1.0 GA in the bag.

  • Security checks

    The MasterSession did not have a special security check for accessing the life-cycle object. If the security manager checked the login credentials as valid, it was possible to access the life-cycle object for the Master Session. The problem was that is is possible to set the life-cycle name via API, before you open the connection. It is always possible to open a MasterSession with the life-cycle object of a SubSession. But if the used security manager (e.g. DBSecurityManager) has custom access rules and does not allow the access to specific SubSessions, we had a vulnerability.

    Now the MasterSession checks the access with the security manager, in the same manner as the SubSession. The ISecurityManager interface got new methods for the access checks. The DBSecurityManger contains a reference implementation.

  • Utilities

    The Utility classes are very important for JVx, because there is power inside. We tweaked existing and added new useful methods. The external program execution works now platform independent. The FileViewer now supports Linux, MacOSX and Windows.

Check the Changelog for a complete list, and use our Forum to talk with us ;-)

JVx 1.0 beta-4 is available

It is available from the project page.

What’s different?

We fixed some smaller bugs and improved metadata caching. A very cool NEW feature is the block fetching for RemoteDataBooks.

  • MetaData caching

    We have a metadata cache on the server side to reduce database calls and we have a cache role on the client-side to reduce remote calls. But it was not possible to change the cache role for specific connections. If the cache was enabled, it was enabled for the whole application.

    Now it is possible to set a connection property to change the cache handling for all databooks which use the connection.

    connection.setProperty(IConnectionConstants.METADATA_CACHEOPTION, MetaDataCacheOption.Off.toString());

    Off means no metadata on client-side and reload metadata from database on server-side.
    On means always use the metadata cache and ignore the default setting.
    Default means that the connection uses the client cache role setting.

  • Block fetching

    This is an amazing new feature and boosts an application!
    Before beta-4, every Master/Detail selection change executed a remote call if the detail was not already fetched. It depends on the number of detail databooks, but if you have one master and 5 detail databooks, every master-change executes 5 remote calls to retrieve detail data. 5 requests is not very clever because it should be possible in only 1 request? With 1.0 beta-4 this optimization is implemented, but not used per default. It depends on th number of records and number of details if it is possible to fetch all defail databooks as one block. It is your decision if it makes sense to use block fetching!

    Be careful, the block fetch columns are not the same as used for the master reference definition!

    Example:

    rdbWorkScreenMembers.setMasterReference(
        new ReferenceDefinition(new String[] {"APPL_ID", "CLASSNAME",
                                              "PARENT_NAME", "PARENT_METHOD"},
        rdbWorkScreenMembers,
        new String[] {"APPL_ID", "CLASSNAME", "NAME", "METHOD"}));

    //Block fetching does not need PARENT information, because we want all PARENTs
    rdbWorkScreenMembers.setBlockFetchColumnNames(new String[] {"APPL_ID",
                                                                "CLASSNAME"});

  • JNLP service access for Applets

    If you use the jnlp_href tag for your applet, it is now possible to use the clipboard, file open and file save JNLP services without additional coding effort. Since 1.6 u24 it is not possible to copy/paste to/from text components. We made it possible in the Swing UI and now it is available for all your applications.

  • Refactoring

    We moved IDataBook.searchNext to IDataPage and added searchPrevious to the API.

Check the Changelog for a complete list, and use our Forum to talk with us ;-)

SIB Visions in the press

We got a page in the current edition of FRESH VIEW on technologies.

Read the whole article - it is available in English and Chinese.

VisionX Beta Update

Today, we updated our VisionX Beta installation to the current version. It contains many performance improvements - Be surprised ;)

The short list:

  • VisionX works now on MacOS X (Snow Leopard)
  • Clipboard support for JREs >= 1.6.0 u24
  • Drop only database objects and/or the database user
  • MetaData caching
  • Application loading without additional server requests
  • Screen locking - prevents simultaneous editing of the same screen
  • German/English translation upates
  • Bugfixes

All test systems were resetted. Let's create applications with amazing new features!

The reset was necessary because we changed the project structure and a migration in the current product stage is not funny.

First performance tuning - I

Thanks to all VisionX users. We collected a lot of performance data because of your use. With this, we were able to reduce some bottlenecks.

Now, an application starts without delays and the designer opens a screen without additional remote calls.

Our next optimization concerns the remote calls of data objects. There are savings in the range of seconds. This optimization will be done directly in JVx and because of this, JVx developers will love it :)

First VisionX update

Today we installed the first update for VisionX. It contains many improvements, based on our user feedbacks.

A short list:

  • The screen creation with large spreadsheets (> 200 columns) works now
  • DB Specification does not show empty tags anymore
  • Show icons for user tables/views and system tables/views
  • We fixed some translations
  • Added a workaround for JRE >= 1.6.22 html formatting problems
  • Color selection for GroupPanels is now supported

We fixed a lot of smaller problems and started with performance tuning. Now we have enough data to reduce bottlenecks. We send too many requests especially during design mode switching, but that was important to find where it makes sense to optimize.

Stay tuned.