Release Notes For Version 8.0
Table Of Contents
- New Features Of All Exprodo Applications
- New Features Of Calpendo
- Minor Changes
- Migrating To Version 8.0
- Optimizations
- Upgraded Third Party Libraries
- Example Use Cases
- Updates
- 8.0.3 (13th June, 2016)
- 8.0.4 (14th June, 2016)
- 8.0.5 (23rd June, 2016)
- 8.0.6 (23rd June, 2016)
- 8.0.7 (27th June, 2016)
- 8.0.8 (28th June, 2016)
- 8.0.9 (29th June, 2016)
- 8.0.10 (30th June, 2016)
- 8.0.11 (10th July, 2016)
- 8.0.12 (13th July, 2016)
- 8.0.13 (14th July, 2016)
- 8.0.14 (17th July, 2016)
- 8.0.15 (19th July, 2016)
- 8.0.16 (20th July, 2016)
- 8.0.17 (21st July, 2016)
- 8.0.18 (21st July, 2016)
- 8.0.19 (22nd July, 2016)
- 8.0.20 (25th July, 2016)
- 8.0.21 (28th July, 2016)
- 8.0.22 (August 17, 2016)
- 8.0.23 (September 1, 2016)
- 8.0.24 (September 5, 2016)
- 8.0.25 (September 6, 2016)
- 8.0.26 (September 21, 2016)
New Features Of All Exprodo Applications
Automated workflows
- Define events of interest and attach to each event one or more actions
to perform.
- Each action can itself trigger multiple child actions.
- There are many types of event and types of action.
- Simple or complicated automated workflows can be created.
- See Workflow Use Cases for the sort of things you can do with
workflows
- Each Automatic Email is automatically converted to an equivalent workflow.
Processes
- This provides for multi-step editing of biskits where each step is a
page with next and previous buttons.
- You can also have other buttons (help, reset, exit)
- You can use define a standard flow from one step to another, or use
workflows to control which step follows depending on what was done in
the previous step.
Privileged Search, aka Volunteer Management
- If you have some data that you want mostly hidden, but also want to allow
people to request access to it in a limited fashion.
- See Privileged Search Use Cases for an example of managing
research study volunteers.
Dual Property Path Conditions
Biskit layout system extensions:
- Add support for a "Flow" WidgetGrouperType that uses a plain FlowPanel
- This means it ignores the name of a "tab" and is intended for when you
don't want a caption or a box around things. It provides for a cleaner
look when you have multiple sections displayed together.
- Add support for being able to hide row labels on multi-column tables
New Features Of Calpendo
Calpendo has the above new features plus those listed below:
Tracking remote user usage of a computer and its running processes
- This lets you track who is logged in, when, what processes they had running.
Rule To Avoid Small Gaps Between Bookings
The IntervalRule has been modified to support the eliminatation of small gaps.
- IntervalRule was always about ensuring there was at least a given gap
between bookings.
- This could be used to ensure there was always a change-over time
on the calendar, but it could also be used to ensure certain bookings
can't be too close together. For example, two MR scanner bookings whose
protocol drives the scanner hard and makes it hot, so you need to have
a simpler booking or an empty space in between. Or two microscope
bookings that require the microscope to be at a different temperature, so
you need time for the change.
- This rule has now been extended so that you can prevent people from
leaving small gaps in the schedule. For example, if there's a 2 hour gap
in the schedule, maybe you don't want somebody putting a 1 hour booking
right in the middle of it, with half an hour gap either side. Instead,
you might prefer they book at the very beginning or end of the 2 hours,
leaving a one hour empty slot for somebody else instead of two half hour
slots.
- Just tell the rule whether you want to ensure a minimum gap (the old
behaviour) or prevent small gaps. Then, tell it when time is considered
small, or the minimum gap, and which bookings to include in the hunt for
nearby bookings.
- The algorithm used for the prevention of small gaps is that any booking
that results in a gap smaller than the one you declare will be rejected
unless the gap before or after it is zero. That is, if the minimum gap
is 45 minutes, then it is considered legal to put a 60 minute booking
into a 90 minute slot so long as it starts when the previous booking
ends, or it ends when the following booking starts.
When you let your mouse hover over a booking in the bookings calendar, you see
a tooltip that shows information about that booking. You can now customise
the content of that tooltip. To do this, edit each resource to choose the
properties that should appear.
Tentative Bookings
We now support a new booking status of tentative. These are disabled by
default and can easily be enabled by enabling and disabling pertinent
pre-defined booking permissions.
You can use workflows to automate things like cancellation of tentative
bookings if they are left around too long if that's something you want to do.
Minor Calpendo Changes
Minor Changes
- Add support for layout to display custom properties in own tab
- Add support for validation in BiskitDisplay, BiskitLayoutDisplay et al
- Display event time with seconds in the system events page
- Most tables that support dragging (for example in the bakery) now display
an icon as the drag handle instead of the text "[DRAG]"
- Use drag-and-drop for deleting property paths from permissions applies-to
and does-not-apply-to tabs.
- There are lots of optimizations that make various things faster in version 8.
Migrating To Version 8.0
Introduction To Migration
There are some major internal changes in version 8.0 in order to support
the following new features:
- Conditions updated to handle the new options required for workflows
- Renamed many biskit types by adding a namespace prefix. This is a step
towards being able to extract some biskit definitions, permissions, workflows
and reports as a downloadable plugin for others to use.
- All automatic emails are automatically converted to the new system of
workflows.
- The way the system interacts with the database has changed internally.
First Boot
When you first boot an 8.0 system with a 7.0 database, a database upgrade will
be automatically performed to account for the above changes. It is important
not to interrupt this process, which can take 3-4 minutes depending on how much
data you have.
Upgrade Warnings And Errors
While there is an attempt to fix all the things that need to be updated to
keep the system consistent, there are some things that cannot be handled
automatically. Consequently, after you upgrade, the system event log will
contain any errors or warnings associated with the database changes performed.
Also, for the first hour after booting the server, users will be told about any
database upgrade warnings or errors when they log in. If you are responsible
for upgrading Calpendo, then always make sure you log in after the upgrade and
you will be told if there were any issues that demand attention.
All warnings are designed such that they may give a warning when there's no
problem, but they should always give a warning when there is a real problem.
Before Upgrading
Manual intervention may be required, depending on the nature of the warnings
and errors received during the upgrade (see Manual Intervention for details).
It is therefore recommended that you upgrade to version 7.0.74 before an
upgrade to 8.0 because that will provide you with all the warnings that an
8.0 upgrade would give, but without the danger of actually doing them. It
means there is an opportunity for us to help with examing those warnings and
the data they reference to check whether manual changes are really required.
Manual Intervention
Manual intervention will not be required if you have no advanced booking rules,
custom report types or formulaic properties.
The manual changes, if any relate to the following:
If you have any advanced rules or custom report types, then you may need to
modify them if you use any calls directly to Hibernate. All calls to
hibernate must now pass the biskit type as well as the biskit when doing a
get or save etc. For example, you must use:
session.save(biskit.getBiskitType(), biskit);
and not
session.save(biskit);
You will be warned after upgrade if your system uses direct access to
Hibernate, but it will not know whether you use any of the old-style calls
that need changing.
- Due to the changes to biskit types, any advanced rules, custom report types
or custom formulaic properties that contain references to the old biskit types
may need changing.
Changed Biskit Types
The following biskit types are modified by this upgrade:
All Programs
In all programs, the "Union" type, which is used internally within Exprodo and
not generally useful or visible to users, has been changed to "CollectionUnion".
Calpendo Changes
In Calpendo, all the following types have changed to have a "Calpendo." prefix:
- AdvancedRule
- Booking
- BookingType
- Bookmark
- BookmarkCustomPageMenu
- BookmarkElement
- CalpendoConfig
- CalpendoLicence
- CalpendoUser
- DoubleBookingRule
- DurationRule
- FAQ
- FAQCategory
- HistopathologyServiceOrder (if the relevant module is loaded)
- HolidayRule
- IgnoreAndTallyRule
- IntervalRule
- Location
- NumberOfBookingsRule
- PredefinedSlotsRule
- Project
- ProjectGroup
- ProjectResourceSettings
- ProjectServiceSettings
- ProjectType
- RadiologicalAssessmentServiceOrder (if the relevant module is loaded)
- Resource
- ResourceGroup
- ResourceInfo
- ResourceType
- ResourceUsage
- ResourceUsageOutcome
- Rule
- RuleApplyToChildMultiCondition
- RuleApplyToRootMultiCondition
- RuleApplyToSingleCondition
- RuleCountChildMultiCondition
- RuleCountRootMultiCondition
- RuleCountSingleCondition
- RuleIgnoreChildMultiCondition
- RuleIgnoreRootMultiCondition
- RuleIgnoreSingleCondition
- RuleNotApplyToChildMultiCondition
- RuleNotApplyToRootMultiCondition
- RuleNotApplyToSingleCondition
- RuleTallyChildMultiCondition
- RuleTallyRootMultiCondition
- RuleTallySingleCondition
- SearchResultsRule
- Service
- ServiceComment
- ServiceOrder
- ServiceOrderUser
- ServiceProvider
- ServiceUser
- ServiceUserGroup
- SimpleRule
- Template
- TemplateGroup
- TemplateTAM
- TotalTimeBookedRule
- TotalTimeBookedTimeMask
- UserSettings
In addition, Calpendo.Project is no longer a base type, but now has a super
type called "BaseProject". This only has a single property, a name, but is
now used as the base type for projects in multiple Exprodo applications.
CRM Changes
In Exprodo CRM, all the following types have changed to have a "CRM." prefix:
- Action
- ActionStatus
- ActionType
- Contact
- ContactNote
- Context
- Email
- Project
SDM Changes
In Exprodo SDM, all the following types have changed to have a "SDM." prefix:
- Event
- Sequence
- SequendoConfig
- Subject
- SubjectStatus
- Subtask
- Task
- TaskRelation
Issue Tracker Changes
In Issue Tracker, all the following types have changed to have a "Issues." prefix:
- Browser
- Comment
- Company
- Component
- Group
- Importance
- IssueCategory
- Issue
- Milestone
- OperatingSystem
- Person
- Status
- Type
- Urgency
- Version
Contacts Changes
In Exprodo Contacts, all the following types have changed to have a "Contacts."
prefix:
Optimizations
There have been many speed improvements in version 8.0 as follows:
- Optimization: reduce Context object instance construction in Grantor
- Optimization: use AtomicInteger for assigning instance numbers
- Optimization: Add BiskitDef.getPropertyDefsList() to avoid map.values()
- Optimization: BiskitFactoryManager remembers which factory creates what
- Optimization: allow grantor to use an unsynchronized object pool
- Optimization: Use ArrayList for PermissionsCache definitive permissions
- Optimization: Use ObjectPool for PermissionsResult instances
- Optimization: store Biskit props in 2 maps, not 3 (1 for all direct props)
- Optimisation: Biskit_CustomFieldSerializer created unnecessary ArrayLists
- Add support for IntHashMap with Trove extract
- Optimization: Switch BiskitTracker to use the new IntHashMap
- Optimization: Avoid PropertyPath to List unnecessary intermediate objects
- Optimization: switch PermissionCache from HashMap to IntHashMap
- Optimise GetBiskits and GetBiskitTins by piggy-backing running requests
- Optimise loading of biskit-valued properties from dynamic biskits (now lazy
where possible which makes it much faster)
- Optimise the way dynamic biskits are sent over the network (now sends much
less data, so is much faster)
- Optimise some RPC calls by reusing the same hibernate session
- Optimise sending layouts to the browser (now much faster)
Upgraded Third Party Libraries
- Upgraded BeanShell2 to 2.1.8 - aborted due to bugs in 2.1.8
- Upgraded apache http client from 2.0.2 to 4.5.1
- Upgraded c3p0 from 0.9.5 to 0.9.5.1
- Upgraded commons-logging from 1.1.3 to 1.2
- Upgraded freemarker from 2.3.18 to 2.3.24
- Upgraded GWT from 2.5.1 to 2.7.0
- Upgraded gwt-dnd from 3.2.3 to 3.3.4
- Upgraded gwt-log from 3.2.1 to 3.3.2
- Upgraded from hibernate-orm-4.1.12 to 4.3.11
- Upgrade C3P0 from 0.9.2.1 to 0.9.5.1
Example Use Cases
Workflow Use Cases
Here are some example reasons to want to use workflows:
Email the lab manager or PI when the end date of a grant is nearing
so they have the opportunity to enter a new one before the monthly
financial report is emailed to University Finance.
Every week, automatically expire the accounts of any user that
hasn't logged in for 6 months. You could also email such users a week
before to let them know they have a week to log in before their
account will be expired.
Keep track of the number of bookings and amount of time booked for
each project, storing those numbers on the project so they're always
available for reporting and booking rules to use.
An alternative version of the previous item. Suppose you have a
notion of core time and non-core time. For each booking, you want
to calculate the amount of time that is within core time, and the
amount that is within non-core time, and update the booking's project
that keeps a running tally of its total use of core and non-core time.
Calculate properties that you store on a booking. For example, a
price or something that will be used as part of calculating a price.
Somebody updates a project, and it indicates that it is funded by a
grant, but some of the grant information is missing. If the project
status is also set to approved, which means it could be used for
bookings, then you could either reject the change to the project
(with a custom error message) or you could modify the project's
status to reduce it to a request.
Provide grant code on a project, but allow user to override that by
selecting a different grant code when creating a booking.
- Consistency checks when entering project information with good,
customised error messages when some requirement is broken
- Example: if a project indicates it's using an MR scanner, then
you must provide information about ethics and safety information
regarding what you're going to take into the scanner room.
You have a significant number of users who use your facility for a
short period, then go away for a while, and come back again. You
want to know who is active, and to limit the number of active users
to stay within the licence requirements. So you configure a workflow
to automatically expire users when they've been inactive for a while,
but another workflow that is automatically un-expires users when they
try to log in after a log period (perhaps provided they meet some
other criteria)
For a particular bookable resource, you require that at least one
week before the booking date, a health and safety file is attached
to the booking. So you create a workflow that will email the person
who made the booking 1 week before it is due if the attachment is
not yet there. The email gives them a reminder. Then 2 days before
the booking is due, if the attachment is still not there, then the
booking is automatically cancelled and everybody who has used the
resource over the past 3 months is sent an email telling them the
slot has just opened up.
Create a check-in and check-out system that enables an instrument
for a duration, while recording the fact that this person is using
it. You could do this by having a card reader that scans a
university card, or by having a computer or tablet next to the
instrument displaying a suitably configured page.
Privileged Search Use Cases
Here is an example of volunteer management using the privileged search
feature:
- If you have a database of research volunteers, and you want
to allow people to send requests to the volunteers to participate in a
study.
- In this scenario, you want to protect the identity of the volunteers,
while allowing people to request a balanced set of volunteer be invited
to join the study.
- So you create a privileged search to allow people to define their search
parameters, but giving back only limited information like the number of
volunteers found. Somebody approves the request, and the volunteers are
automatically sent an invitation by email. Only when the volunteers
respond will their contact details be passed to the study principal
investigator.
Dual Property Path Condition Use Cases
The following require these "dual property path" conditions:
- Be able to prevent bookings from being moved to a date outside the range
of the project's start/finish date. This needs you to compare
dateRange.start with project.start and similar for project.finish
- Be able to prevent bookings from being created outside the project
start/finish range.
- Add a booking type to project, and be able to require that the booking's
booking type is the same as the project's booking type in a rule.
Updates
8.0.3 (13th June, 2016)
Changes
- Add support for customised tooltips that appear when mouse hovers over
bookings in the calendar. Edit each resource to choose the properties that
should appear.
- Use drag-and-drop for deleting property paths from permissions applies-to
and does-not-apply-to tabs.
- Change drag-and-drop table to use a drag icon instead of the word "[Drag]"
in all tables that use it for drag-and-drop. This affects the bakery, when
changing the order or properties amongst other places.
Bug Fixes
- BUGFIX: Function output wasn't usable in workflows
Back to Top
8.0.4 (14th June, 2016)
Bug Fixes
- BUGFIX: ViblTin NPE on dealing with a shallow biskit in a collection
- BUGFIX: CRM lost track of which contact a waterfall was for
Back to Top
8.0.5 (23rd June, 2016)
Changes
Lite licence now limits the number of enabled workflow actions to 4
We now prevent the creation of multiple user settings for any user
- Add support to IntervalRule to be able to eliminate small gaps
- IntervalRule was always about ensuring there was at least a given gap
between bookings.
- This could be used to ensure there was always a change-over time
on the calendar, but it could also be used to ensure certain bookings
can't be too close together. For example, two MR scanner bookings whose
protocol drives the scanner hard and makes it hot, so you need to have
a simpler booking or an empty space in between. Or two microscope
bookings that require the microscope to be at a different temperature, so
you need time for the change.
- This rule has now been extended so that you can prevent people from
leaving small gaps in the schedule. For example, if there's a 2 hour gap
in the schedule, maybe you don't want somebody putting a 1 hour booking
right in the middle of it, with half an hour gap either side. Instead,
you might prefer they book at the very beginning or end of the 2 hours,
leaving a one hour empty slot for somebody else instead of two half hour
slots.
- Just tell the rule whether you want to ensure a minimum gap (the old
behaviour) or prevent small gaps. Then, tell it when time is considered
small, or the minimum gap, and which bookings to include in the hunt for
nearby bookings.
- The algorithm used for the prevention of small gaps is that any booking
that results in a gap smaller than the one you declare will be rejected
unless the gap before or after it is zero. That is, if the minimum gap
is 45 minutes, then it is considered legal to put a 60 minute booking
into a 90 minute slot so long as it starts when the previous booking
ends, or it ends when the following booking starts.
If you click on a workflow while editing a different workflow, it now warns
you and asks if you want to discard your changes.
Calpendo now has support for custom dynamic properties on bookmarks.
- Improved protection against creating unsupported properties
- Internally, each static biskit used to declare whether it supports
custom properties. This is now split into declaring whether it
supports dynamic and indirect properties independetly.
- This means the bakery may now allow you to add dynamic properties or
indirect properties according to what the biskit supports.
- Dynamic biskits remain the same, and only support dynamic properties.
- Even in debug mode, the bakery now prevents you from adding dynamic
or indirect properties to biskit types that don't support it.
Most tables that support dragging (for example in the bakery) now display
an icon as the drag handle instead of the text "[DRAG]"
- Prevent Total Time Booked Rule from having a maximum booking time bigger
than window size
- A typical total-time-booked-rule would prevent people from booking more
than 4 hours per week.
- In this case, it is clearly required that the time you specify for
"4 hours" must be less than that specified by "week".
- The rule has now been changed to enforce this.
Bug Fixes
Back to Top
8.0.6 (23rd June, 2016)
Changes
- Mark Config as abstract in SDM
- BookingRuleWorkflowEvent is now run just before running all rules
- the rule is set to null when it is run before all rules
- the rule is non-null when a rule has just been run
Bug Fixes
BUGFIX: #generate IndexOutOfBoundsException on exporting conditions
BUGFIX: Workflows not setting owner on conditions when saving
BUGFIX: Saving global preferences gave exception
BUGFIX: Tentative workflow referenced now-defunct 'datetime' prop name
BUGFIX: IVP fetched non-enumerable biskits in Biskit mode
- BUGFIX: create workflow & db event & biskit update gives exception
When there's no inferred BiskitDef (as there isn't when you first
create a BiskitUpdate), then you can't render the fixed BiskitBox
writeable because it doesn't know what the plausible biskits are.
The result was an exception "Can't make this BiskitBox writeable because
it was initialised as read-only"
Back to Top
8.0.7 (27th June, 2016)
Changes
- Declare Calpendo UserSettings properties as static, not indirect as was
- These properties are all static, and should not be marked as indirect.
Bug Fixes
- BUGFIX: Exception on try to view non-existent Biskit
- For example, run page #ba&type=BiskitLayoutRoot&action=view&id=184876
and it would generate an exception
- BUGFIX: Edit a BiskitDef gives OutOfBoundsException after drag change
- BUGFIX: A formula on a subtype of a subtype would fail
- BiskitDef.getEffectiveIdColumnName() delegated to the super type
incorrectly
- If it decided to delegate to the superdef, then it called
getIdColumnName() on the superdef instead of getEffectiveIdColumnName()
Back to Top
8.0.8 (28th June, 2016)
Changes
- Add support for a "Flow" WidgetGrouperType that uses a plain FlowPanel
- This means it ignores the name of a "tab" and is intended for when you
don't want a caption or a box around things. It provides for a cleaner
look when you have multiple sections displayed together.
- Display available services "order" link permanently, not only on mouse over
- Add tooltip to most static Booking properties on BookingPopup
- This adds tooltips for resource, type, booker, owner, repeat, type,
project & description
- Add support for being able to hide row labels on multi-column tables
Bug Fixes
- BUGFIX: users, user types & user group recipients lost saving scheduled reports
- BUGFIX: Shallow exception creating a dynamic biskit with manyToOne property
- BUGFIX: Default tentative booking permissions didn't do the right things
Back to Top
8.0.9 (29th June, 2016)
Changes
- Add support for creating a service order via a process (stepped-editor)
- Add support for a process step to require its contents to display read-only
Bug Fixes
- BUGFIX: The project drop-down in a service order process displayed read-only
- BUGFIX: Process with dual layouts failed to merge layouts properly
- BUGFIX: ProcessManager incremented process version without sending to browser
- BUGFIX: Starting a new service order via a process would display old order
instead of a new one when you'd already created one order
Back to Top
8.0.10 (30th June, 2016)
Changes
- Add support for disabling processes with a new enabled property on ProcessDef
Bug Fixes
- BUGFIX: Debug code accidentally left in MyProjectsBox which caused NPE
- BUGFIX: ProcessManager complains too many ProcessDefs when only one exists
Back to Top
8.0.11 (10th July, 2016)
Changes
Store action duration on system events created while executing workflow
- Prevent SearchWorkflowAction using IndexedType in first type drop-down
- A search should only assert VALUE for the first drop-down
Add MetaProperties to context for workflow actions so user is available
- Allow unknown paths in a property format to be treated as null values
Previously, if you used a format spec like '%foo%' and foo wasn't a known
property, then it would print out "%foo%".
When you want to put a format on a booking in the calendar, this was
inconvenient because you only have one format regardless of which
subtype of booking is in use.
This change means that any path that is legal will be treated as if it
were a known path whose value happens to be null.
So you can use
'%foo?ss:'
to print out foo or nothing etc.
Add support to Processes for a Finish button & Help button
Add support for browser history as you step through a process, so back button
works
Add functions to get an item from a list by index, and to get first/last
Add support for dynamic properties on a ProcessDef
- Allow WorkflowActionHandler to indicate it could not run action
- This allows a parent that wants to run only one child to be able to
ignore children whose conditions match, but that cannot run for some
other reason that only the action handler can see.
- For example, a for-each given a null list, or an email handler when
email is disabled.
Add function for removing duplicates from a list of biskits
- Add support for functions to infer output biskit types from input types
- For example, a function that gets a particular biskit from a list of
biskits should be able to tell that the resulting biskit will be of the
same type as the biskits in the list.
Add support for triggers to record the time they last ran
Display a read-only DateBox as a simple label instead of disabled TextBox
Display a read-only TimeBox as a simple label instead of a disabled TextBox
Bug Fixes
- SECURITY BUGFIX: Opening permissions for user nobody could cause data leak
The special user "nobody" is used to check permissions when emailing a
scheduled report. It's intended to mean:
This user has the least permissions possible, so if this
user can see data, then it's okay for it to leak out in an
email
If you protect some data and create a report that displays it, then you
can see that protected data in the web browser because the system knows
who you are and that you are allowed to see the protected data. If you
then arrange for that report to be regularly sent by email, that email
could go to anybody, so we filter the data by using user "nobody".
You then can't see your protected data in your emailed report. You may
then be tempted to allow user nobody to see this protected data. But this
is dangerous because it would allow a user who doesn't normally have
permission to see this data to be able to create a report that won't
show data in the web browser, but will show data when emailed.
As a protection against this, emailed reports now have their data
filtered twice. Once for the special user nobody, and again for the
report's owner. Now, information can only leak out in an email if both
user nobody can see it, and the report's owner can see it.
We still don't recommend opening permissions for user nobody to see
data that is otherwise hidden from some users, or trying to send an email
with such data, but this change should make it safer to do so.
BUGFIX: ServiceOrder wasn't automatically recording who created/updated it
BUGFIX: Resource.managerUserGroup members not able to book for all projects
on the relevant resource
BUGFIX: Disabled workflows still run Timed, RelativeTime and Delayed events
BUGFIX: Specifying a resource group in a count rule generated bad DB request
and exception
BUGFIX: Repeating timed workflow events fired at the wrong time of day
BUGFIX: size workflow function mis-declared its return type
BUGFIX: SearchWorkflowAction sometimes got wrong BiskitDef of result
BUGFIX: Exception on editing a BiskitUpdateWorkflowAction set to edit a
non-enumerable type, such as a Booking
BUGFIX: Workflow triggers displayed created/updated as date and no time
BUGFIX: Booking.description was marked as single line instead of multi line
8.0.12 (13th July, 2016)
Changes
- Calpendo Services update:
- you can now create a service order from a search page as well as from
the "Available Services" page.
- You can create a copy of a previous service order now, which was
prohibited before.
Bug Fixes
- BUGFIX: MetaProperties not appearing as selectable type in workflows
- BUGFIX: Date/time functions to add/subtract offsets got the maths wrong
Back to Top
8.0.13 (14th July, 2016)
Bug Fixes
- BUGFIX: "Change" permission conditions converted from v7.0 sometimes fail
- BUGFIX: RelativeTime event limited the properties visible for conditions
- When you create a relative time event, if you choose property X on
BiskitDef B, but that property is actually defined on a supertype A,
then when adding conditions, it only let you choose properties on A.
- BUGFIX: Layout editor drag-n-drop a tab dropped it in the wrong place
- There was an out-by-one error that applied only when dropping something
as a top-level tab because it forgot to take into account the
unassigned properties tab when converting the drop index to a tab index.
- BUGFIX Issue1958: Update dateRange.finish becomes dateRange.start on
Copy/paste
Back to Top
8.0.14 (17th July, 2016)
Changes
- Apply default values to Project on creating a new project
Security Bug Fixes
- SECURITY BUGFIX: Save project and the response was not cleaned
- On saving a project, the browser gets sent a copy of the new version of
the project. However, the version sent back to the browser did not check
permissions to see what should be removed.
- This only applied specifically to saving Calpendo projects.
Bug Fixes
- BUGFIX: MutableValue.toString misleadingly rendered null boolean as false
- BUGFIX: Convert email hooks old "datetime" trigger prop to "executedTime"
Back to Top
8.0.15 (19th July, 2016)
Bug Fixes
- BUGFIX: Drag top-level FlexTree nodes gave NPE (eg reorder booking rules)
- BUGFIX: Child actions of a SendEmail action were not counted in Lite limits
- BUGFIX: BiskitUpdate a fixed biskit failed because it was shallow
- BUGFIX: Validation exception in biskit update action still updated biskit
- BUGFIX: BiskitUpdate action shows bad name if given fixed biskit to update
- BUGFIX: Updating a repeat template sometimes fails with an exception
Back to Top
8.0.16 (20th July, 2016)
Changes
- Add support for setting comments on a workflow
Bug Fixes
- BUGFIX: Workflow conditions sometimes complained about "No source" and
wouldn't let you set a fixed or variable value for the second half of a
condition.
Back to Top
8.0.17 (21st July, 2016)
Bug Fixes
- BUGFIX: Copy & paste a workflow event corrupted the event conditions
- BUGFIX: A BiskitCreate workflow action only made a shallow copy when copying
the values from another biskit, leading to strange beahviour with copying
any biskit with a date range property (like bookings).
- BUGFIX: Booking pop-up miscalculated whether individual properties were
editable or not, leading to read-only values displayed that should have been
editable.
Back to Top
8.0.18 (21st July, 2016)
Changes
Bug Fixes
- BUGFIX: attachments not working on dynamic subtype of static biskit
- BUGFIX: Mutation of a dynamic subtype of static biskit failed
Back to Top
8.0.19 (22nd July, 2016)
Changes
- Detect mismatch between running program and program DB appears to be for
- This is only useful for those customers who install our applications
on their own server.
- This just stops any damage from one particular class of error that could
be made at deployment time.
- If you install a program connecting to a database that is for a different
Exprodo program, then the system will refuse to boot so that it won't
damage the data in any way.
- Replace unfriendly error msg when view a shallow biskit in a biskit list
- This applies whenever you have a list of biskits and click on one of them,
and you have EXISTS permission on the biskit, so it is allowed to be in
a list like this, but you don't have READ permission on it, so you can't
see the value of its properties.
- Optimisation: ReportManager was very slow on some reports
- A sample report that exemplified this problem went from taking 7 minutes
to 200 milliseconds
Bug Fixes
Back to Top
8.0.20 (25th July, 2016)
Changes
- Show the tooltip defined in the bakery for any attachment or attachment set
property
- The name of a hidden tab is showed in red in the layout editor to make it
clearer which tabs are hidden.
Bug Fixes
SECURITY BUGFIX: When checking whether something is referenced, it used to
ignore who was asking the question and check permissions as if there were no
user present. This meant it was possibly it could hint at the existence of
something you should not know about.
SECURITY BUGFIX: A permission denied exception during a workflow would not
stop the database updates if there was a function action involved.
- BUGFIX: Summary report exception clicking in row or column selector
- This applied when searching for any biskit with a date, date time or
date range property
BUGFIX: A permission that hides a property could interfere with another
permission that relied on the value of that property to decide whether to
hide other things.
- BUGFIX: A summary report showed the row/column paths in red/yello when no
path set
- This red/yellow colouring is used to indicate an error.
- However, it's not an error to have the row and/or column unset in a
summary report.
Back to Top
8.0.21 (28th July, 2016)
Bug Fixes
- SECURITY BUGFIX: Updating properties didn't handle property-based perms properly
- This applied in the following circumstances:
- when updating a biskit via a workflow, or via a stepped-edit
process, or via the list checked-editing pop-up
- when a property has a non-null default value set
- when there's a property level permission that controls changes to that
property
- the update being done does not try to modify the property in question
- In the above circumstances, when checking permissions, the system thinks
you're trying to change the property when you're not. This means the
permission will operate incorrectly.
- If the above circumstances exist (which will be rare) then we may
allow something to happen that we shouldn't or prevent something we
should not.
- BUGFIX: Calendar stops create if perms allow create only Booking sub-type
- When you click in the calendar, it checks whether you have permission to
create a Booking before allowing the booking pop-up to show.
- But it you have permission to create a sub-type of Booking, but not
Booking itself, it still stopped you, when it shouldn't.
Back to Top
8.0.22 (August 17, 2016)
Changes
- Prevent editing rule time masks by drag & drop in read-only mode
- Repaint whole of booking while resizing it in day/week view
- this means a resize of a booking by drag & drop will update the time
within the booking display as you resize it
- Booking Popup now checks permissions as soon as any files are attached to
the booking
- If you add a custom property to booking to store file attachments, then
it never checked permissions until after the booking was sent to the
server.
- It now checks permissions immediately.
- This means a permission that says (for example) file attachments must
have a name ending ".pdf" will now give feedback much sooner.
- Do not display a whole day panel for ResourceUsage calendar
- All custom properties are now added to the iCal Booking feed
- Default newly saved reports to being non-publicly writeable
- This better matches with user expectations
- Display new date as you move the date on a calendar to new day
- Workflow actions that have a user in context (usually only an event triggered
by a database change initiated by a user) now check permissions using both
the real user and a fake user given the roles and user type specified in the
workflow action. If either of those is allowed to perform the change, then
it is allowed. This applies for biskit create, update and delete actions.
Bug Fixes
BUGFIX: Bookings calendar prevents you from creating bookings if permissions
allow you to create a sub-type of Booking, but not Booking itself
BUGFIX: Monthly calendar view didn't allow to move booking with drag & drop
BUGFIX: Template Popup did not detect when finish was before start
- BUGFIX: Remove "storage_engine=InnoDB" from standard hibernate.cfg.xml
- This database connection parameter is not supported by MySQL 5.6 and later
- BUGFIX: memberOf/notMemberOf conditions fail on Calpendo ProjectGroup
- This bug affects any biskit type with a namespace. You could see it in
Calpendo by having a double booking rule with bookings to count choosing
a project group on the projects tab.
- BUGFIX: Group reports failed with a column showing a repeat
- This happens when you have a group report (for example of bookings) and
add a column for the repeat, rather than a column for a property within
the repeat.
Back to Top
8.0.23 (September 1, 2016)
Changes
- Removed BiskitDef for Process. This is not needed, and had two dynamic
properties, which took two away from the 15 allowed in Calpendo Lite.
- All pop-ups that give an error message, and most pop-ups that ask a yes/no
question are now generated with a custom
pop-up instead of the browser's native pop-up for it.
- This means it now looks identical on all browsers
Security Bug Fixes
- SECURITY BUGFIX: with permissions to deny update of a property, you can get
permission denied on trying to save the biskit when it should be allowed.
- SECURITY BUGFIX: a permission to deny read of a Booking property did not
prevent read on a sub-type of a sub-type of Booking.
Bug Fixes
- BUGFIX: Exceptions occuring in a workflow were not always propagated
- This meant that a workflow that should stop would continue and perform
child actions that ought not run. The child actions might themselves
fail because they rely on the parent action having succeeded.
- For example, consider a workflow that creates a secondary booking and
tertiary when you create a primary booking. If a double booking rule
prevents the secondary booking, then:
- The tertiary booking would still be created
- The primary booking would not be prevented from being created
- The user would not be told about the failure
- BUGFIX: When using an external authentication method (eg LDAP or WebAuth)
and you are not already logged in, and you click a link (say in an email) to
take you to a particular page, then after login, you would be taken to the
standard home page and not the page the link pointed to.
- BUGFIX: Permissions with a condition referring to a meta-property caused
reports related to that biskit type to fail.
- BUGFIX: Workflows did not always use the user type and roles you specified
in a workflow action, so an action could fail with a permission error where
it really should have worked.
- BUGFIX: Biskit Update workflow actions sometimes worked incorrectly
- BUGFIX: User self-registration took a long time
- This was due to a problem introduced in 8.0.22
- Users could still register, but it would take anything from 2 to 5 minutes
- BUGFIX: with permissions to deny read privileges on some project properties,
you get an exception on creating a project.
- BUGFIX: with permissions to deny update of a set of attachments, editing a
project and saving it produced an exception.
- BUGFIX: In FireFox only, when a drag-and-drop of a booking is refused
because one of the booking properties is hidden from you, then it would
produce an exception. This only affected FireFox.
- BUGFIX: With a create or update permission on Booking that uses a string
property, the Booking pop-up did not recheck permissions each time you
modified the value of that string property.
- BUGFIX: When looking at a user group in the Types and Groups editor, it would
show all the properties of some users as "<Hidden>"
Back to Top
8.0.24 (September 5, 2016)
Bug Fixes
- BUGFIX: 8.0.23 included a database upgrade incorrectly marked as for version
8.1.3 instead of 8.0.23, breaking DB upgrades.
- This meant 8.0.23 functioned correctly, but could not be upgraded to
8.1.x correctly, and would also suffer in future 8.0 upgrades
Back to Top
8.0.25 (September 6, 2016)
Bug Fixes
- Strip any custom HTML from booking ical summary field (from booking title)
- BUGFIX: dual-property path conditions sometimes force wrong variable path
- BUGFIX: 8.0 upgrade of 7.0 broke some rule conditions
- BUGFIX: Collections of biskits stored on a project were mishandled
Back to Top
8.0.26 (September 21, 2016)
Changes
Add a displayed trigger type to each workflow trigger body
Change workflow event or action tab label to "Event" or "Action"
Add workflow function "csvDecode" to convert a CSV string into a list of strings
Add workflow function "find" to find biskits given their type and a list of
primary keys
Add workflow function "copy" to copy the contents of one list to another
Add support for being able to change workflow function signatures without
breaking existing workflows.
Add new date formats that use the full name for the day and month. For
example "Friday January 8", instead of just "Fri January 8" or "Friday Jan 8"
- Display full argument type for each workflow function argument
- For example, an argument of "Biskit:BiskitDef;" used to be displayed as
"Biskit", and so it wasn't saying what sort of biskit it was.
- Also a list of integers would be shown as "List", but is now "List:Int".
Allow and require workflows creating bookings to set the booker
Bug Fixes
- Misc bugs with #generate fixed
- Allow enter key to initiate login in FireFox on the login page
- BUGFIX: Upgrading from 7.0.50 or earlier to 8.0 or later failed
- BUGFIX: Upgrading from 7.0.50 or earlier failed in MySQL 5.7.5 and later
- BUGFIX: Exception on running some automatic emails
Back to Top