RELEASE 2.0.2 – ENHANCED WEB SERVICES

In the upcoming new release 2.0.2 the Imixs JEE Workflow provides – among other things a new Web Service implementation which will become much more flexible. Now as the Imixs XML API is fully based on JAXB the SOAP Web Services and the REST Web Services are separated into web modules. This makes is much more easy to use these interfaces in workflow projects as the deployment strategy has changed. As announced the new release will run on JEE5 (Glassfish 2.1) as also under JEE6 (Glassfish 3). And also the deplyoment becomes more flexible as you are now no longer forced to deploy all web service modules together with your application.

The project documentation will be extended in the near future with an additional section for XML & Web Services.

You can check out the current 2.0.2-SNAPSHOT release from the Subversion repository. See also the new snapshot releases of imixs-workflow-xml, imixs-workflow-rest and imixs-workflow-soap. If you have any comments or questions please post the in the Imixs Forum.

MANAGING FILE ATTACHMENTS AND LARGE BINARY OBJECTS (BLOB)

In the latest version of the Imixs JSF Tools 2.0.2 we provide a new Controller Bean which allows managing file attachments and large binary objects (BLOB). The new contoller class is called BLOBWorkitemController.

This BLOBWorkitemController is used to store large objects into a single ItemCollection mapped to a EntityBean. The BlobWorkitem is always bounded to a parent workitem by its referrer id ($uniqueidRef). So an application can implement a lazy loading for BLOBWorkitems. The read- and write access settings of BLOBWorkitems are automatically synchronized to the settings of the parent workitem. So the security features of the Imixs Workflow controller are full supported. The Data of a BLOB WOrkitem can be accessed by an embedded Itemcollection which can be loaded and saved throgh the controller bean. This makes it really easy to manage file attachments inside a JSF application. See also more infos and examples on the Imixs JSF-Tools Project Homepage.

MIGRATION TO NEW IMIXS WORKFLOW JEE API

If you migrate form the ix-workflow project to the new Imixs Workflow project it is not possible to redeploy with the new JEE Implementation into an existing EJB / EAR module.

So I recommand to follow these steps:

  1.   backup the entities form you existing Imixs Workflow Application with the new (!) org.imixs.workflow.jee.adminclient.web 1.4.3 using the Export Feature.
  2. Take care about the new persistence unit used in the persistence.xml
    org.imixs.workflow.jee.jpa
  3. Redeploy you new project with the persistence.xml option:
    <property name=”toplink.ddl-generation”
    value=”drop-and-create-tables” />
  4. Reimport you backupfile with the new imixs WOrkflow AdminClient Tool

DATABASE MIGRATION DERBY -> MYSQL

If you have started you workflow project using the build-in Derby Database from Glassfish you maybe can run into a performance problem if you manage a lot and complex of Data. This is because Derby is not so scalable in managing complex SQL statements like other Database Management Systems. In such a case you can easily migrate your workflow system form Derby to MySQL which is much more scalable.

Follow these steps to migrate data in a running system

  1. Start your Derby DB and Glassfish Server
  2. Make sure that your Workflow System is up and running
  3. Switch to the Imixs JEE Admin Client.
  4. Connect to the EntityPersistenceManager from your Workflow Instance
  5. Start a export using the default EQL Statement. This will export all existing Data of your workflow system into a file
    >SELECT wii FROM Entity wiI
    If the export did not succeed a reason can be the HeapSize of your Glassfish Server instance. You can increase the default HeapSize from 512m to 1024m using the Glassfish Admin Console.
    Go to : Applicationserver->JVM Settings -> JVM Optionsand change -Xmx512m into -Xmx1024m
  6. Undeploy your Workflow Instance
  7. Shutdown your Derby Database
  8. Setup a new MySQL Database and create a new JDBC Connection Pool using the Glassfish Console
  9. Now you can switch the JDBC/Ressource of your Workflow System from your Derby Database to your new MySQL Database
  10. Deploy your Workflow Instance again – this will generate the necessary Tables in your new MySQL Database
  11. Optionall : after deplyoment you can setup Entity Index Fields manually if necessary
  12. Import your Data form the Export File you generated in Step 5.

Thats it!

If the import process fails on MySQL check the following:

PACKETTOOBIGEXCEPTION

If you got the Excepiton:

com.mysql.jdbc.PacketTooBigException: Packet for query is too large

you should change the max_allowed_packet setting in your MySQL server for the import process

  1.  Open your MySQL console
    >mysql -u root -p
  2. Change the max_allowed_packet setting
    >SET GLOBAL max_allowed_packet=3000000000;
  3. Restart your Glassfish Server (not the MySQL Database!)
  4. Reimport your data
  5. Restart you MySQL Server and Glassfish Server to reset the max_allowed_packet settings.

PERSISTENCEEXCEPTION

If you got the Exeption:

javax.persistence.PersistenceException: Exception [TOPLINK-4002] (Oracle TopLink Essentials – 2.0.1 (Build b09d-fcs (12/06/2007))): oracle.toplink.essentials.exceptions.DatabaseException
Internal Exception: com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column ‘DATA’ at row 1

MySQL tells you that the BLOB field is to small to store the data. This is because MySQL generates per default a SmallBlob (64K) for your Data Fields in the Entity Table. You can change the Blob type after the deplyoment of your Workflow Instance :

  1. Open your MySQL console
    >mysql -u root -p
  2. Connect to to your Database
    >USE mydatabase;
  3. Change the BLOB Type to LONGBLOB (4GB) or MEDIUMBLOB (16MB)
    >ALTER TABLE Entity CHANGE DATA DATA MEDIUMBLOB NOT NULL;

LICENSING OF IMIXS OPEN SOURCE WORKFLOW

As we were often ask about the licensing of of the Imixs Open Source Workflow which is subject to the General Public License (GPL). I want to give you today a short idea how your own individual Software project is affected form this license when you are using the Imixs Workflow components.

Assuming that you plan to develop an individual software system using the Imixs Workflow System you have to take care about the subject of GPL. But since your software project is no workflow management system or a pure workflow engine, like the Imixs Workflow itself, there is no reason to worry about the GPL. You are free to use the Imixs Workflow components implementing any kind of business process application.
In contrast if you enhance or modify components of the Imixs Workflow Implementation or you implement a derived unit you are constrained to leave this code also under GPL.
Our goal is to avoid that someone restrict the purpose of the Imixs Workflow Software. Everyone is free to use the Imixs Workflow as free software in the manner of the Free Software Foundain (http://www.fsf.org/).

So we appreciate everybody who plan to use the Imixs Workflow in an individual Software Project. You be bound to inform your users and customer that Imixs Workflow is fee software under GPL. This means that he will receive also the source code (of the Imixs Workflow) or can get it if he want it. He can change the software or use pieces of it in new free programs.
If you enhance the Imixs Workflow you are bound to leave this code again under GPL and share your experience with the community.

So we did not restrict you in your freedom to develop software and business applications using the Imixs Workflow. We also did not restrict your freedom to distribute your software or charge for service if you wish.
Free Software is about to exchange experience and knowledge, not to restrict other people in there freedom to use it.