Flow4J Blog

Get the latest news from the Flow4J Blog . XML


Current release is

1.0.4 - for Eclipse 3.1 and up

0.9.4 - for Eclipse 2.x - 3.1M6

To Do

  • Flowlet alignment
  • Copy/Paste
  • Label flowlets (annotation objects like text boxes)

Feel free to send feature requests or bug reports.

Release Notes

  • Bugfix release.

    Dragging a flowlet where the flowlet and its label is selected, translated the labels position to a wrong place.
1.0.2 and 1.0.3
  • Bugfix release.

    WebFlowDictionary: bugfix: toString() threw a NPE if the session was null

    TaskCreationWizard: all checkboxes are selected by default

    corrected behaviour with builder order. Flowbuilder now comes after the javabuilder

  • Bugfix release.

    If the flow4j plugin is not in the default configuration, then adding the flow4j nature or creation of a new flow4j project added the wrong flow4jruntime.jar reference to the classath.
  • Release build for Eclipse 3.1

    This will be the mai n development branch in future. So new features will only be available for 3.1 and up.
  • 0.9.4 runs on Eclipse 2.1.x up to 3.1M4

    this release wont be updated.
  • Task flowlet creation is possible in the toolbar java types.
  • Flowlets which have properties now have a context menu entry "show properties".
  • Flowlets can be deleted through the delete key.
  • Start flowlets get a unique name on creation. An increasing number is appended t the end.
  • Added protected static methods to FlowManager to be able to modify the FlowManager internals from extended classes
  • Added a convenience method to Flow4JPlugin getTaskFlowletClassLoader(IProject)
  • Added Scripting support through BSF. Scripts can be dragged on the designer.
  • Renamed elements in the flow model XML file. taskflowlets to javataskflowlets and taskflowlet to javataskflowlet
  • In the class LinkTag the default value of "ignoreLevels" changed from true to false.
  • XML to Java binding is now dne by XStream.
  • bugfix in template flowlet's description
  • Removed hardcoded references to xerces XML Parser. Jaxp is used now
  • Updated to be Eclipse RC3 compatible
  • Updated castor to
  • Improved task flowlet instanciation in the designer
  • Drag And Drop implemented; Task flowlet java files can be dragged from the package explorer in the flow editor
  • designed some icons
  • Projet property page implemented to specify the flow repository builder class
  • FlowRepositoryBuilder generates class that implements IFlowRepository and contains the code to register all flows in the project.
  • Performance optimization. Task Flowlet instances are cached in the model part.
  • Parameterizable task flowlet labels
  • After unmarshalling he flow xml, the properties are checked. In the case the task class can be loaded, phantom props are deleted and missing ones will be reset to empty string.
  • Bugfix: project classpath contains classpath of required projects
  • Flowdoc refactored in its own plugin
  • Flowdoc creates HTML documents with XDoclet beside JPG images
  • Usage of JRefactory pretty printer instead of the build in eclipse one
  • Moved ISrcStructure in packege net.orthanc.flow4j.model.codegen
  • Removed the value field from the TaskPropertyDescriptor
  • Added method getProperty(key) to the IPropertyHolderBind interface
  • Added description property to Decision Flowlets
  • improved Flowlet Label direct edit feature
  • Struts Integration
  • FlowManager.registerFlows(IFlowRepository) checks for null and empty Collection.
  • Refactored IFlowlet.getFlowName() to IFlowlet.getName()
  • Added getStartNames() method to the IFlow interface.
  • Generated flow's execute() got the "final" access modifier.
  • IFlow interface has a getStartFlowlets() method that returns an array of the used start flowlets. Thus other frameworks can query the flow's start flowlets. This will be used for the Struts integration.
  • added the class StartFlowlet to the runtime package. The reason is explained in the previous point.
  • StartFlowlets may have properties. Specify the property names, and the property entries are generated automtically. Tooltips show the properties.
  • Changed flow4j.xsd: elements taskproperties and taskproperty are now called more general: properties and property
  • BugFix. The flow UpdateFlowFile crashed when a new file with extension f4j was created. The SAX parser does not like empty files :)
  • FlowManager.executeFlow() methods which create a FlowDictionary automatically, return the created dictionary
  • The flow4jruntime.jar is added automatically to the classpath if
    • a new Flow4J project is created
    • the Flow4J nature is added to an existing non-Flow4J project
  • Task flowlet class can now declare input and output properties, which have only informational purposes. default implementation that returns null is supported in the AbstractTaskFlowlet class.
  • Fixed a bug if the task flowlets class name was not written with a capital letter. In this case a NoClassDefFoundError was thrown. Now this is catched too.
  • Improved task flowlet tooltip layout.
  • Refactored ItaskFlowlet.getTaskName() to getName()
  • Interface ItaskFlowlet got new API methods:




    setProperty(name, value)
  • Implemented AbstractTaskFlowlet as a convenience class from which users can subclass their own task classes.

    Task flowlets should extend AbstractTaskFlowlet instead of implementing IIaskFlowlet
  • Bugfix in tooltip width
  • Implenented ant task that can create jpeg and pdf output of flow graphics
  • Refactored Flow4JServlet. The following t wo servlets replaced Flow4JServlet:
    1. FlowDispatcherServlet - Dispathes to the flow given in the URL path info and executes the flow. This servlet is useful if you want to return binary info like PDF content.
    2. JSPDispatcherServlet - Executes the given flow as FlowDispatcherServlet and additionally forwards the request to the resource that is declared by the template flowlet at the end of the flow. The resource can be a JSP page or a HTML page or some other.
  • Bugfix # 887423

    WebFlowDictionary caused an infinite recursion if there was no valid session in the dictionary.
  • FlowManager allowes the re-registering of a flow class with the same name. This was necessary because jboss did not get rid of the FlowManager and the flow classes after a hot-deployment.
  • Added Flow4JRuntimeWebUtils for utility methods.
  • Flow4JServletException got some more constructors of the superclass
  • The custom JSP tag < flow4j:link > got a new attribute "ignorelevels" that is necessary if you use the tag in directly called jsp pages. In this case the browser adds the relative folder structure to the path.

    If you set ignorelevels="true" then flow4j compensates the path that the server will add, by "../" sequences.
  • Added custom tag link that only need the Flow and its Start name to generate a valid link.
  • Refactored the servlet package. Now exists ...runt ime.web.taglib and ...runtime.web.servlet packages
  • Added WebFlowDictionary taht extends FlowDictionary but this searches for values in the following order in the following containers:
    1. flow dictionary
    2. HTTP request
    3. HTTP session, if one exist
  • added i2s() and s2i() methods to FlowDictionary, so int's and strings can be converted in the decisions label
  • Fixed a bug in direct editing of tasks if the project is not in the workspace or runtime-workspace but imported from somewhere else on the filesystem.
  • If a call or jump flowlet references the same flow, then the start method is called directly instead of asking the FlowManager to execute the flow.
0.6.1 Usage of awt code crashed on Mac OS X. SVG Genaration still has problems on Mac OS X, but works fine on Win and Linux.
0.6.0 Added Export Wizard, that can export flow diagrams as JPEG and PDF. The batik and FOP Libraries are included in the lib folder
0.5.1 Added tool tip support for the task flowlet.
  • Fixed a buf if the project has an invalid classpath entry and a new task flowlet is created. In this case a NPE was thrown
  • removed some system.out's
  • Added the feature, that in the editor the selection-tool activated if the user clicks in a not connactable area with the connection-tool
  • Flo wlet labels can be edited directly with a double click
  • Direct Edit of task flowlet's source code on double click. Only if task java source file is in the projects source path.
0.4.4 Bugfix release. The class of a task flowlet cuold not be found in some situations
  • Added Boolean methods to FlowDictionary
  • The decision flowlet's statement is optimized instead of creating a new decision instance each time in its own method
0.4.2 Bugfix: Activating an inactive flow editor in the workbench did not substitute the task class against the task name
0.4.1 Added new methods to FlowDictionary
  • improved flow's java source generation:

    only Start- Decision and Join flowlets generate a new method
  • The if-statement in Decision flowlets can now use methods like

    getInt( key ) or i(( key )

    getStr( key )

    getDouble( key ) or d( key )

  • ant task to generate the flow's java source accepts now the

    < includes > and < excludes > attributes
  • Manually add and remove Flow4J nature to an existing project through the projects context menu
  • Introduced Flow4JServlet which triggers the given flow.
  • Implemented template-flowlets which can return the name of a JSP page.
  • Introduced class FlowDictionary instead of the ordinary java.util.Map All methods which get the dictionary as argument must adjust the type from java.util.Map to net.orthanc.flow4j.runtime.FlowDictionary
  • generated methods of call and jump flowlets have the subflow's name in their method name
  • Renamed net.orthanc.flow4j.runtime.RuntimeConsts to net.orthanc.flow4j.runtime.Flow4JRuntimeConsts
  • Task Flowlets must implement the new ITaskFlowlet interface otherwise they cannot be registered.
  • Task Flowlets have a name which is displayed in the designer if the flowlet's class can be loaded by the newly introduced TaskFlowletClassLoader. If the task's class cannot be loaded then the designer displays the fully qualified class name in red. The full class name is still settable and visible in the properties view.
  • All task flowlets in a flow are registered at the FlowManager in the static initializer. task flowlets can be registered many times, but only the first registration creates the singleton instance
  • The method FlowManager.registerFlow(IFlowletRegistry) is renamed to registerFlows(...)
  • Project creation wizard uses the Java Project wizard which lets you set the classpath.
  • While creating the Flow4J Project no fixed directory is created, ergo:
    • flows can be created everywhere in source folders
    • flow's java source is created in the same folder where the flow model resides
  • New methods in FlowManager to execute flow by its class.
  • Property descriptors of flowlet labels are those from the corresponding flowlet
  • Flows have now a name, which enables other flows to call or jump to them
  • Flow registration need only the flow's class path, because its name is in the flow's model. Many new ways how to register flow's
  • Delete the flow's java source file if the flow itself is deleted
  • FlowRepositoryBuilder creates java source with all flow classes
  • Ant task for generating flow java source
  • Automatic update of flow files to the latest version prior opening
  • API-docs are in the release
  • the plugin bytecode is java 1.3.1 compatible
  • ant script runs also for eclipse 2.1.1 on linux
  • Implemented Call- and Jump-Flowlets.
    • Call-Flowlet calls another flow and returns after its execution
    • Jump-Flowlet is a terminating flowlet like the End-Flowlet which executes the "jumped-to" flowlet but never returns to the calling flow.
  • Some bugfixes
  • Implemented join flowlets.
  • implemented decision flowlets. The boolean value of transitions which start at decision flowlets can be changed in the properties view.
  • changed xsd of stored flows to hold more than one type of connections. In future releases old stored flows will be converted automytically to the new xsd format.
  • many minor bugfixes in anchor handling
  • significant improvement of connection handling
  • Fixes problems while connection creation.
  • Also disables the connection creation on a flowlet if no unoccupied anchor is left
  • Changes sources so that the plugin runs also on java 1.3
  • Bugfix: EndFlowlets caused a NPE
  • The execute() method of flows throw an Exception if the requested start node is not found
  • Changes the IFlow.start() method to IFlow.execute()
  • Runtime classes are packages in the plugin folder in the flow4jruntime.jar file for usage in applications
  • the flowdiagram xml root element has a version attribute with the value "1"
0.1.6 Introduced EndFlowlets. All flows should be terminated by an EndFlowlet or by other terminating flowlets. Currently only the EndFlowlet exists but in future other will be created like JumpFlowlet, JspTemplateFlowlet... BTW currently no problem is reported if the flow is not terminated, but this behaviour will change in future. It also has no influence on the java source creation.
0.1.5 figures are drawn as polygons and filled with color. Created new icons for the palette.
0.1.4 This first release has the basic functionality to create and run a flow. Currently only Start and Task flowlets are present, others will follow in the next time. Flow4J projects have two natures: Flow4JNature and javaNature. Thus building a project first creates the flow's java source code (FlowBuilder) and the the java sources are compiled in bytecode (JavaBuilder).