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

  1. Possible status values
  2. Actual data-records. You can drag items between lists, updating the StatusID as you do.
  3. 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.
  4. 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:

An example of a Resource used to create a Kanban Board

Kanban Board Resource  

  1. 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.
  2. Set the "ComponentID" to Kanban Board.
  3. 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.
  4. Set the "TargetTable" to determine which BusinessObject the App uses when it generates the lists of records in the Kanban Board. 
  5. The Name will be used when creating the Menu-item that will trigger the Kanban-board, and when creating a dashboard to display it.
  6. 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

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.

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