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.


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

So I recommand to follwo these steps:

  1.   backup the entities form you exsiting Imixs Worklfow 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
  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


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:


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.


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)


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 (

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.