New Functionality

Communication

Version 9.0 has completely replaced the mechanism used for communicating between the browser and the server. This has been done for several reasons:

Future-proofing due to the third party software we are using being likely to remove support for the communication method we were using.

Making development easier by making the messages between browser and server human-readable.

Allowing us to remove some server-side code that was used to make the old mechanism work, but which had large negative performance consequences. That is, it slowed things down and caused the server to use more memory than it would otherwise have required.

Version 10 (Enterprise) requires inter-database communication so that one Calpendo can be set up as a slave to another. The new communication protocol between browser and server will be used for the server-server communication required by Enterprise.

Speed

Some systems have become much slower over time. Version 9.0 completes the major work that was begun with version 8.4 to address these speed issues. Those suffering with poor performance should find that 9.0 has a dramatic effect on the feel of the system.

 

While there will continue to be individual operations that can be tuned to perform better, it is already much faster than before in many places.

Workflows

Add a workflow function to convert a number from one unit to another called convertUnits.

Add a "Run Now" button to UserWorkflowEvent in the workflow manager

oThis makes it a little easier to test a user workflow event by providing a button in the workflow manager to run it.

Add support for converting XSL-FO formatted strings to PDF

oThere's a new workflow function called "toPDF"

oGive it an XSL-FO formatted string, and it returns the PDF file

oThere are some "Hello World" type examples in the workflow manager. Open Workflow Biskit/Versioned Workflow Biskit/Workflow/Example PDF generation with XSL FO

oXSL-FO tutorials and information:

http://www.herongyang.com/XSL-FO/

http://w3schools.sinsixx.com/xslfo/default.asp.htm

https://www.webucator.com/tutorial/learn-xsl-fo/index.cfm

https://www.antennahouse.com/comprehensive-xsl-fo-tutorials-and-samples-collection/

https://www.qctutorials.com/learning/xslfo/index.html

https://www.ibm.com/developerworks/library/x-xslfo2app/?ca=dnt-46h

http://www.cafeconleche.org/books/bible3/chapters/ch16.html

http://www.renderx.com/tutorial.html

oThe standard is described here:

https://www.w3.org/TR/xsl/

Add support for barcodes

oPDFs can include barcodes

See the XSL FO workflow example mentioned above for a "Hello World" type example.

For examples of all the types of barcode available, see http://barcode4j.sourceforge.net/examples.html

The format of the XML required inside the XSL FO file is described at http://barcode4j.sourceforge.net/2.1/barcode-xml.html

oA string-valued property can be configured to display its content as a barcode in the browser.

In the bakery, choose a String Property Type of "Barcode"

Then select one of the barcode types

These properties are inherently read-only which means they would generally either be formulaic properties (that is, generated from other properties) or be created by a workflow.

For details on the different types of barcode available, see https://github.com/lindell/JsBarcode/wiki

oNote that the PDF barcodes (generated by Barcode4j) have a different set of barcode types from those available in the browser (generated by JsBarcode). In particular, the PDF barcodes can include 2D barcodes in QR format whereas those in the browser cannot.

Reports

Add a "Run Now" button to Report Manager so that when there's a scheduled report, it can be made to run now and send its result via an email.

Add a preamble at the start of a scheduled report to control the text that appears in the email.

Add Support for Skins and Themes

Global preferences now has a new tab under Appearance

Allows the selection of skins and/or themes to load.

This provides an easy way to customise how everything looks.

Select the skins and/or themes to include, save and refresh your browser.

Each user also has personal settings where they can select skins and/or themes and provide their own personal CSS. This allows each user to customise the way their own system looks without affecting other users.

Create a new biskit of type "Theme", and once saved, the custom theme can be selected in global preferences or by individual users.

Change the default look of all tables to be much cleaner

This is done using the new support for skins.

If prefer the old look, add the "uncleanTables" skin in global preferences.

Add Support for Stepped-Editing

Add support for stepped-editing of biskits with one-to-many properties

oThis is required to properly support sample tracking.

Changes in Functionality

Menu Editor

The menu editor has had a big makeover. It is now consistent with the look and feel of the rest of Calpendo rather than doing things in completely unexpected ways. It used to have a button bar at the top and the bottom, with the one at the bottom affecting menu items and the one at the top affecting whole menus.

 

It now has a list of the existing menus on the left, and you click on a menu to view or edit, like our other editors.

Holiday Date

Now has a description property.

Services

Has a property to disable a service therefore hidden from available services.

Properties not in Biskit Detail, Allow check editing

Allow properties hidden in biskit detail in checked edit (if use layout)

oNormally, a property that is marked as hidden in biskit detail is not shown when looking at checked editing.

oNow, a layout is provided which includes such a property, it will appear in checked editing.

oIf a layout not provided, it is still hidden as before.

Password Checking

Add support for checking whether passwords have been exposed in a security breach

oWhen a user sets a new or initial password, we can now check whether that password has been exposed in a security breach.

oThere's a new global preferences setting on the Security tab for this. The administrator can choose a threshold which is the number of times a password has been exposed, beyond which the password should be rejected.

oBy default, this is turned on for everybody and the threshold set to one. This means a password will be rejected as long as it has been exposed at least once in a security breach.

oNote that this method rejects passwords that have been exposed in a security breach and does not directly check password complexity. That means it is possible to reject a complex password and accept a simple one.

External iCal Feed Support

Add support for importing bookings from an external iCal feed

Resource now has two extra properties - one to record the URL and another to specify the update frequency.

Booking has a hidden property that records the iCal ID that generated the booking.

If an iCal feed contains a repeat booking, then it will be imported as multiple non-repeating bookings, all having the same iCal ID.

Users cannot create, update or delete bookings that come from an iCal feed. The iCal importer takes complete control of the bookings.

If a booking that used to exist in an iCal feed is later removed from the feed, then Calpendo will delete the booking for it.

Support For Linking Bookings And Service Orders

This provides support for a convenient way to specify bookings for instruments that will be used in fulfillment of a service order.

To configure this, start by adding one or more properties to a service order in the bakery to store a reference to a booking.

Then, when configuring a service, after the type of biskit has been selected to use for its service orders, it will show a table with a row for all the Booking properties on the service order so that the resource to be used for that Booking can be chosen.

When entering the service order, there will be a button labelled "Select Booking" which allows a booking to be chosen for the appropriate resource.

If the service order has a project, then the user will only be offered bookings that are set up to use that project.

When an order is updated so that it references a booking, there is a check to see if the booking has a reference to a Service Order. If so, then the booking will be updated to reference the order it relates to.