Moving from Metastorm BPM Version 7 to Version 9
Metastorm BPM has been evolving since its very early days as an Oracle application. It has been a strong leader in the BPM area for over 12 years. It was a market leader in the Web Client arena, and has consistently kept up with and taken advantage of the ever changing technological landscape as it has grown.
Throughout these changes the fundamental ease of use and 'descriptive' Process Design that has made it a favourite of many for many years has been maintained.
The latest incarnation as a fully .Net application and code generator is yet another almost complete makeover, possibly as significant as its transition from Oracle. We've waited a long time for this, but the real question is, are we going to enjoy the same ease of process design and overriding clarity that we have come to rely on, and has been the main strength of the product to date.
In this and the articles to follow over the next few weeks we shall try to give you all the information you will need to answer that question, and, we hope, many others.
Jerome was one of the original development team of the Metastorm BPM product at Metastorm, and has been using it for over 12 years.
He has also written the Metastorm BPM Developer's Guide
Although Process Design is core to the whole Business Process Management initiative, the 'window onto the Process' for the users is undoubtedly the Forms.
One of the great benefits of Metastorm BPM has been the tight integration between the Forms Designer and the Process Designer. Here we see if this is still the case, and if creating fields, variables and business rules is as easy as it always has been.
imageThe standard properties we are used to are still there for forms. The only important addition is the Caption. Like the Caption properties for other components and elements, it can be anything you like, and is configurable for different languages (see our future section)
imageClicking on the 'When user loads form' or 'When user exists form' property takes you straight into a Visual Script (see our future section).
'When user exists form' is presumably only run on form save and seems misnamed.
imageClicking on one of the three Client Scripts takes you straight to the Client Script editor. Here you can write JScript or VBScript.
This is a much better method than the rather clumsy approach in previous versions requiring a function and a call from the relevant Event. You can still do that, if required, however.
imageAt long last we are able to turn of the paging of grids. This is a very welcome change.
imagePaging is in itself useful, but as we have said many times, not when universally applied. Fortunately, when you do set paging, you are able to set the page size at last.
This value is only editable through the up and down buttons (not even using the keyboard arrows), you cannot type here. This will require dozens of mouse-clicks every time it is used (RSI, anyone?). I hope this will be fixed soon!
imageThe single and multiple clip fields are now separate, which makes much more sense. Changing from single to multiple used to 'lose' the reference to the variable which is not intuitive.
imageForm segments appear in the Toolbox, one for each available Segment. These are dragged to the Form like any other field.
imageThey remain the same, however, as you are able to simply select another Segment if you wish.
imageYou are able to set fields off any edge of the form quite easily.
imageWe are not sure if this is by design or not, however.
imageLabels will now, like Field Captions, just resize themselves as more text is entered.
imageBut I can't make it smaller, not even by editing the properties!
I assume this is because they are in fact normal fields with no control just a Caption. If that is the case, it could be hard to fix.
It is certainly quite amazing that no-one has noticed this yet. Perhaps we are uncommon in providing feedback to users via labels?
imageAs with Process map elements, the Caption can be edited in- place.
imageThe name itself does not change when you do this, of course.
Fields and Variables
imageThe biggest difference we find is that Forms are no longer associated with the Process (formerly 'Map'). In order to associate a Form with the Process data, you need to drag the automatically created Business Object for that Process to the Form.
imageThis creates an instance of that Business Object, with a numeric suffix.
imageExpanding this shows the variables and parameters. We will discuss the parameters in more detail when discussing Business Objects, but they define the record accessed by this instance.
imageWe add another Process, and we find we can add the Process Business Object for that too.
It is worth noting that any form can be used in any Process. This means they can be shared between Processes, although care must be taken (more on that later).
imageHere I've added a couple of custom Business Objects. One is editable, and one, with a RO suffix, is read-only.
Note the different icons, and that the Process Business Objects are editable by default.
imageThe context menu on a read- only Business Object allows you to select (among other things) 'AlwaysRefresh'. Selecting this is akin to setting a field to 'is dependent'. Note that you have to set any associated field to 'is dependent' to make this work.
You can also set the page size for records retrieved. This is only important for grids, I believe. I am not certain what effect this value has for things like dropdown options, if any.
imageNote also that you can add the same Business Object more than once. This may be useful if you want to populate a dropdown with one, and fill fields based on the selection from the dropdown, for example.
imageHere we show the Parameter. For Process Business Objects the default is always the Folder Id.
imageWe can change this, however, to be the Folder Parent. This would allow you to retrieve data easily from the Parent Folder without resting to SQL.
You can also set this data, thus updating the fields in the database. This bypasses the normal transaction and audit capabilities of Metastorm BPM, so must be used with extreme care.
imageThe easiest way to create fields on the Form is to drag them straight from the Business Object instance. The appropriate field type is created.
Note that dropdowns and list boxes will always have to be created and have variables linked in a two-step process as they will not be created like this.
imageHere a text field is created, and you can see it is named after the variable (name and Caption), linked to the Business Object and the variable, as well as being made optional.
imageYou can also multi-select fields (Ctrl- and Shift-Click) and drag them in one go. A huge time saver!
imageBut it gets better ? you can choose to have fields or a grid!
imageHere is the result if you select fields.
imageAs you can see, all properties are set as if you dragged them one at a time.
imageNow I take some more (from by custom Business Object as it makes no sense from a Process Business Object) ...
image... and select a Grid this time ...
image... and it creates a grid. The fields are all named after the variables, BTW, mine are actually Column1, 2 and three (bad choice, sorry).
Looking at the Column properties, everything is set as I'd want, all I need to is set the width and title as desired, and perhaps change the behaviour.
imageFor the read-only Business Object, when I drag variables across and maker a grid, the fields are correctly read-only.
imageThe variable dialog is similar to previous versions, but has a more useful tree interface as opposed to tabbed. You can also add a description for it now.
Notice that there is also a Business Object created (called 'Local') for each Form. This allows creation of temporary variables for Forms.
imageYou can create fields for these Local variables in the same way.
imageYou can also create Local variables for Form Segments. This will be extremely useful for reusable functional Form Segments.
imageForm segments are added in much the same way as we added Sub-Processes in the Process map. They appear in the Toolbox, and can be dragged onto the Form.
imageInterestingly, the variables from the Form Segment then become available as a new Business Object instance.
This could provide significant interaction between the Segment and containing Form, which was not previously possible. As an example you could set a variable on your containing form that hides or displays certain fields in the form segment, if set to be dependent.
imageOption lists have changed quite a bit too.
imageSelecting the ellipsis ...
image... gives you three options.
imageThe list of values is any expression that returns a list of values. Typically this will be a set of comma delimited strings.
There is no longer a need to have a different delimiter as all strings are now in double quotes.
We are not certain how this will affect migrated option lists with different delimiters, however.
imageIf you choose a Business Object, you select the Business Object and field ...
image... or two fields for a name- value pair list.
If you choose a Select statement you can write any SQL or use the Query Builder (see our future section) to generate one.
imageThis is something we took a while to discover, and have yet to see mentioned by Metastorm or in the documentation.
You can group fields together.
imageThey look awful now (as do Form Segments), but I am sure that will be fixed.
imageThe properties are just the group name and size. You can change the size, but I am not sure what use that is.
imageSelect ungroup from the Context menu to split them up again for editing.
imageA very nifty feature is the ability to resize multiple fields at once.
imageAs you drag one field, they all change.
You can also use the Layout ribbon with the 'Size Equally' item to do this. You can, of course, use all the other items we saw in the Process map.
imageIt works however the fields are laid out.
imageFor fields with a changeable height, you can change that too.
imageWhen adding and moving fields, they will try to 'snap' to alignment with other fields. It is a bit strange at first, but you get used to it quickly. It is a very quick and easy way to line up new fields.
imageYou will get lines to show you what alignment is being attempted, too.
imageThe same thing happens when resizing fields as well.
A typical scenario is drag a field to the Form and it snaps to align with existing fields. Then you resize it and it snaps to resize to match similar fields. All in two simple movements.
imageGoing near to the edge of the Form causes the field to try to snap into place at a reasonable distance.
This will add some sorely needed consistency to Form Design!
There is a 'Tab Order' item on the Design menu. This is a toggle button. When toggled 'on', you can click on each field in turn to set the tab order.
imageThis is the start ...
image... and here I have clicked on a field and it is now the first in the tab order.
Clicking on another will make it second, etc.
imageWhat is more interesting is what happens when fields are grouped.
imageNow the grouped fields are in a 'tab group' when setting the tab order.
imageSelecting the group ...
imageSets the tab order of the group (it is hard to see, but it is now '1') and the fields are 1.1, 1.2, obviously).
imageAnd you can select an individual field in the group to set the tab order within the group.
imageHere I have split the group into two groups.
imageAnd grouped them into a single group, so I have nested groups!
imageAnd this is now displayed and functional in the tab order!
There seems to be no limit, apart from what is practical.
This is very powerful and I am sure we shall be finding many ways to use this feature effectively.
imageIt has been pointed out that adding a field onto a large form could be a potential nightmare.
imageAs it happens, if you select that field it becomes first ...
image... select again, it becomes second (all the others remain in the correct order relatively).
imageThis makes it fairly painless.
imageWith grouping it can be even easier.
imageAdding the field to an existing group will automatically add it to the end. The original group becomes a nested group.
imageUngrouping the fields, selecting the new field and grouping them again as unexpected consequences, however.
You would have to reorder the fields in the group at least (and I suspect that oddity will not get fixed.