Adding a Kanban Board to your system
Before considering adding a Kanban board the Developer should try understand what they are for and the utility they add to an App. Such training is beyond the scope of this Help document. Please ensure you have a good understanding of this before proceeding.
There are a number of other forms of Graphic User Interface offered by Orixa which serve similar purposes and which may actually be better suited to the needs of an App. Worksurfaces, Dataviewers and Dashboards are the most obvious examples. Please review the help on these GUI options before deciding what you want to use in your App.
The main issue determining whether a Kanban board will work well is whether the BusinessObject it is being applied to really does have clear "StatusID" values (such as "In Development", Stage 1 Research", "Stage 2 Research", "Trial Production" etc.) If this is the case, then a Kanban board can be useful. Particularly if different staff-teams are responsible for items at different stages in the workflow.
Kanban Board
- Possible status values
- Actual data-records. You can drag items between lists, updating the StatusID as you do.
- Summary Panel which contains data for the selected item on the list. Summary Panels are optional, and only added if the correct Summary SQL script is added to the framework.
- PercentageBar specialized visual control which shows a percentage in bar format.
How Kanban Boards work in Orixa
Kanban Boards can be added to an App to sort / organise any Business Object that includes a StatusID field. The App will use all the possible options in the StatusID list as headings for sections of the Kanban Board, and use the Business Object's ListScript to fill the list in each Board. Code has been written into the Orixa framework to automate the generation of each "base board", containing the list of records for each status. All the developer has to do is to add a record to the Resources framework-table, with the correct format.
Note that as databases may contain very large numbers of records you may need to add extra settings to the Kanban Board to ensure that useful records are displayed. Kanban boards are really only suitable for displaying data where the numbers of records returned for each status range between 0 and 200. With larger numbers of records than this Kanban boards cease to be useful.
There are several ways to limit the data that appears in a Kanban board so that a useful number of records appear:
- Make the Kanban Board select records which are Children of a particular Parent record. Example: Show the Kanban Board of Sales for a particular large customer, where orders might be "On Order", "Delivered", "Awaiting Payment", "In Dispute" etc.
- Place limits on the rows returned to a Kanban Board by showing only the "Current User's" records. Example: a Kanban Board showing work-items relating to a large project. Each user could see only work they are tasked to undertake, making the Board more relevant to them.
- Only show records which are not "Complete". Orixa has a simple concept that any record can include a "Complete" tick-box field. Usually once a record is ticked complete there is no more work expected to be done on it. So it can be useful to build this into a Kanban Board, and automatically exclude "Complete" recors.
- If the above automated limits are inadequate a custom-Kanban Board can be built into the source-code of your App, with additional, more complex conditions.
An example of a Resource used to create a Kanban Board
Kanban Board Resource
- Set the "Location" where you want the User to access the Resource in your App. Choosing "Record" as above will result in linking the Resource to the Edit-Form of the BusinessObject named in "LinkTable". This then automates the "parenting" of the Kanban board to the records linked to this parent-record.
- Set the "ComponentID" to Kanban Board.
- Set the LinkTable to control the "Master" table for the Resource, which will determine where it appears in the App in the same way that all Resources work. The ID of the currently open record will be used, or the user will be asked to pick a record from a list of possible records.
- Set the "TargetTable" to determine which BusinessObject the App uses when it generates the lists of records in the Kanban Board.
- The Name will be used when creating the Menu-item that will trigger the Kanban-board, and when creating a dashboard to display it.
- The main SQL will be used to fill the Summary Panel of each board. Note this is optional. A Kanban Board Resource with no SQL will still work.
What Happens when a Kanban Board is run
- Orixa will list all the possible values of the StatusID field of the "TargetTable", and create one board for each.
- The first time the board is run the user / developer will be asked how many boards to place on each horizontal row of the board. Once entered this data will be saved in the Resource's "ObjectProperties". Note that the developer can update this if they wish to change the behaviour, but to do so they must manually edit the "ObjectProperties" of the linked Resources record, as shown in the "Settings of the Kanban Board" section, below.
- Orixa will return a list of all records to fill the board. To do this it will use the DisplayScript of the TargetTable's BusinessObject record, but it will amend and extend this script with extra WHERE elements if needed to only show records linked to one parent record, "Exclude-Complete-Records" or "Filter Current User." Note that the need to auto-generate this Kanban list script requires that the DisplayScript of the TargetTable is well formed.
- Orixa will pull back a few other properties for the Kanban board from the ObjectProperties of it's Resource, and then display it. Note that as the Kanban Board resizes, all it's panels grow and shrink in size proportionally. Dragging to change the height of one summary panel resizes them all.
Settings of the Kanban Board
Kanban Board Object Properties
Once you have designed the layout of the Kanban Board in Orixa, and selected "Save Settings" some of the visual features of the Kanban Board will be saved in the Object Properties of the Resource record. As shown at 1., in the above image.
- HorizontalCount: Indicates the number of individual status-boards the user will see on each row.
- SummaryPanelHeight: Indicates the Height of the Summary Panel.
- AllowDrag: If "1" dragging between items is allowed, if "0" it is not allowed.
- ExcludeCompleteRecords: If 1 the records shown in the Board will not include "Complete" records
- FilterCurrentUserFieldName: If you wish to only show data relating to one person, add the name of the field here. Note that this entry is optional, if left blank the Kanban Board will return records for all staff members.
Example Kanban Board "Summary Panel" SQL
SELECT
ID,
T.Name as ItemType,
BudgetQuantity,
WI1.WorkedHours,
BudgetValue,
WI1.WorkedValue,
ROUND(WI1.PercentUsed TO 2) as PercentUsed
FROM "ContractItems" CI
LEFT JOIN Types T ON T.ID = CI.ContractItemsTypeID
LEFT JOIN
(SELECT
WI.ContractItemsID as ID,
SUM(WI.HoursWorked) as WorkedHours,
SUM(WI."Value") as WorkedValue,
IF(BudgetValue = 0 THEN
IF(SUM(WI.HoursWorked) / BudgetQuantity > 1 THEN
'Hours Exceeded' ELSE 'Within Hours')
ELSE
IF(SUM(WI."Value") / CI.BudgetValue > 1 THEN
'Over Budget' ELSE 'Within Budget'))
AS Budget,
IF(BudgetValue = 0 THEN SUM(WI.HoursWorked) / BudgetQuantity * 100
ELSE (SUM(WI."Value") / CI.BudgetValue) * 100)
AS PercentUsed
FROM WorkItems WI
LEFT JOIN People P ON P.ID = WI.StaffID
LEFT JOIN ContractItems CI ON CI.ID = WI.ContractItemsID
GROUP BY ContractItemsID) AS WI1 ON WI1.ID = CI.ID
WHERE CI.ID = %d