flexsys belgium Pi Personal Information flexsys belgium What • Pi is a Personal Information system based on a configurable framework. • Was initially started by Full Circle Development (a join venture between Hfx.co.uk and Flexsys Belgium) and taken on by Flexsys Belgium in 2017. • Is retailed to distributors which configures it for their country and customers. • Only one release version. Customisation is performed in the integrated development environment. 2018 August 6 2 flexsys belgium Design goal • Must works for a wide range of customers starting at 50 employees with no upper limit. Our biggest customer is in Portugal: 9400 employees. • Must use a modern user interface. • Should use the latest software technologies. • Must not be a T&A application - only • Must be extensible by plug-in • Must be easily localized and must support multi languages • Human interface independent (Web) 2018 August 6 3 flexsys belgium Multi languages • • • • Enabled for –simultaneous- different languages Each person is linked to is own locale Unlimited number of supported locale Use standard free tools for text translation (gnuGetText - Flexsys has also developed its own set of tools) • Actually, database text translation has to be done manually. • Support adding locales on a running system (if the locale is unknown, revert to the programmer's language) 2018 August 6 4 flexsys belgium Application Layer Architecture MS Windows Application Web application Application Layer Module 1 Module N Business Layer Core components Core engine DATA Access Layer Business Logic Layer 2018 August 6 DATA ACCESS LAYER Database Database 5 flexsys belgium Database • Only SQL database servers • Currently all versions of MSSQL server (Free MSDE for small installation) • Other on demand (Oracle, DB2, Sybase, Informix…) • Currently implemented as a two tiers layers but can be extensible to a multi tiers layers by writing a new database driver. 2018 August 6 6 flexsys belgium Database Connection • Database abstraction layer between the applications and the real database drivers • The layer allows the applications to connect to multiple databases simultaneously 2018 August 6 7 flexsys belgium Authentication • Pi implements an authentication plug-in mechanism (PANAM) so that virtually any authentication method can be used. – Basic (user name + password + password policies) – Active directory – LDAP – EDirectory (Novel) – Radius – Chip card etc. In bold currently supported authentication modules 2018 August 6 8 flexsys belgium Authentication … • The authentication mechanism consists of one or more pluggable authentication modules. • Since several modules can be plugged, a stack of authentication is formed. • The stack is referred to as the authentication schema and different applications (Pi, PiStudio, PiWebServer…) can have different authentication schemas. A chain is followed through this stack before the user is authenticated. 2018 August 6 9 flexsys belgium The directory • • • • Is a well-known structure. Provides a uniform way of work. Is the main source for security. Each folder can be connected to a “handler” that provide functionalities. Handlers are developed by Flexsys and/or Partners. • The layout by itself is not important, all is about the FolderID which defines the folder handler used by a folder. 2018 August 6 10 flexsys belgium The directory … 2018 August 6 11 flexsys belgium Authorisation and Security • Means ‘who’ is authorised to do ‘what’ • Once a user is authenticated, an authorisation schema is attached to it • The authorisation schema defines what the authenticated user can do • Security concept defines who has rights to make actions on what • Security also handle the rights on the user own personal record. 2018 August 6 12 flexsys belgium Authorisation and Security 2018 August 6 13 flexsys belgium Personal Record Definition • • • • • Pi handles ‘persons’ A person is composed of fields from several tables Fields are ‘grouped’ into Categories. Some Fields may have histories (values are changing over time) Can be extended with custom programming (Pace) for example: Children. • All persons are a potential user IPN Display Name Creation Date Table 1 Manager Table 2 State ... ... ... Table 3 MSSQL Server 2018 August 6 14 flexsys belgium Personal Record Security – Vertical partition • Defines which fields a user can see, and which actions can be done – Category Rights • Fields can be assigned to categories and categories can be secured – Field definition • Fields can be grouped into folders that are secured. • Fields have properties e.g. enabled, read only • Fields security always take precedence over Category security 2018 August 6 17 flexsys belgium Personal Record Security – Horizontal partition • Defines which persons a user can see, and which actions can be done on those persons – Category Rights • Main Categories folder handler introduces additional rights for handling personal records – Group membership • • • • Administrator group can see all personal records Managers group can see all records which they manage* Self group defines the rights of the user to see his own record* All groups can be restricted based on personal record field values. * Providing the group has the ‘Read personal record’ right 2018 August 6 18 flexsys belgium Personal Record Security Horizontal Partition User has rights to own record and some other personal records 2018 August 6 Vertical Partition User has rights to fields 1,3 and 4 The Final List Finally, the user has access to his own and some other personal records. In each personal record he has access to some fields 19 flexsys belgium System names • • • • • Define a mapping between a number and a name This name can be localized All names in Pi are referenced by system names As a generality: Unlimited number of system name Are stored into folders so can be secured 2018 August 6 20 flexsys belgium Counter definitions and Counters • Counters are 32 bits values, result of computation (in Pace) • They are linked to one date and one person • Global counters are similar but not linked to a person • Counter definition define what could be stored in a counter and how to display it (format, colour schema): – Data definition: Integer, Date, Time, Tick (Date and time), Duration, Decimal 1, Decimal 2, Decimal 4, Link to a system name, Flag (32 individual Boolean). – Colour schemas: define the formatting rules for counter values. For example: red bold if negative, blue italic between two value etc. An unlimited of rules may be define for an unlimited number of colour schema. One counter definition is attached to one colour schema. 2018 August 6 21 flexsys belgium Correction and Correction reasons • Correction are used to modify ‘something’ in the system. • The ‘something’ is defined by Pace rules that process the corrections. For example, absences are processed as corrections • A correction is person and day based. For a period, a correction exists for each day composing the period • The correction reason define what the correction is composed by and how to process then. • Several format style • Corrections are versioned by a status. • This status allows to handle workflows with an unlimited number of levels. 2018 August 6 22 flexsys belgium Correction reasons 2018 August 6 23 flexsys belgium Pace • Pi Application Compiling Environment • Is a “subset” to the Borland Delphi language with access to the internal Pi objects • Is compiled by our compiler to a Win32 binary code that is executed by a Pace runner • Source and binary are stored in the database • Design programs, screens, reports and web pages not only in term of layout but also in term of functionalities. • Is part of the integrated development environment - Pi studio 2018 August 6 24 flexsys belgium Pi Studio • • • • • Is the tools used be our Partners to customize their application. Contains the Pace compiler Contains a complete debugger: breakpoint, step by step, watch … Contains a database explorer Has an extensive help 2018 August 6 25 flexsys belgium PiStudio 2018 August 6 26 flexsys belgium Time recording module Where all our time recording knowledge is implemented 2018 August 6 27 flexsys belgium Time recording • • • • • • • • • • Day type Calendar Booking rounding Daily program parameter Daily program Windowing Working schedule parameter Working schedule pattern Working schedule Time recording assignment 2018 August 6 28 flexsys belgium Day types • Is the base of the calendar • Define special day type for which you will apply different daily programs • Main usage: Public Holidays 2018 August 6 29 flexsys belgium Calendars • • • • Collection of special day types events Events can be recurrent Are assigned to working schedules and/or to persons Main usage: Public holidays calendar but not only 2018 August 6 30 flexsys belgium Booking rounding • Define how booking should be rounded • Roundness and tolerance for input and output booking 2018 August 6 31 flexsys belgium Daily program parameters • Define the building blocks of daily program • One parameter can have up to three (integer) values • Several parameters are defined in standard • All customizations related to one day can de defined here • Available in Pace for the computation engine 2018 August 6 32 flexsys belgium Time recording version concept • Several parameters (daily program, working schedule patterns, working schedule…) support the version concept. • A version defines a starting date when the parameters are active. • The date may be in the future. For example, it is possible to define that for daily program “x” the working time will be “y” starting at date “z”). The change of parameters will be done automatically. • If the date is in the past, a re-computation will be performed with those parameters. • There is no end date. 2018 August 6 33 flexsys belgium Daily programs • Are versioned. • Totally define a day in term of: – – – – – 2018 August 6 Working time Supplementary time (time exceeding the maximum day time) Slices time (time between slots) Booking rounding And other custom parameters defined in the Daily Program Parameters. 34 flexsys belgium Daily program 2018 August 6 35 flexsys belgium Windowing • Are versioned • Automatically select a daily program from a booking. First input booking in standard but can be changed by Pace in the computation engine • Are attached to a person 2018 August 6 36 flexsys belgium Working schedule parameters • Define parameters for working schedules • Used in Pace for special computation 2018 August 6 37 flexsys belgium Working schedule pattern • Are versioned • Define reusable set of daily programs as blocks • Working schedule can use patterns 2018 August 6 38 flexsys belgium Working schedule – Daily program mode • • • • Are versioned Define a set of daily program composing a working schedule Set a pivot date that starts the cycle Define a public holiday calendar and parameters 2018 August 6 39 flexsys belgium Working schedule – Pattern mode • • • • • Are versioned Define a set of pattern Set a pivot date that starts the cycle Define a public holiday calendar and parameters Personal record assignments select the starting pattern 2018 August 6 40 flexsys belgium Time recording assignment • Assign daily programs, calendar, windowing and working schedule to a person. • Completely define which daily program and which day type will be applied for a date. 2018 August 6 41 flexsys belgium The computation engine • The computation engine is Pace based. • Its main role is to compute the counters and to process corrections. But it may do things more (like sending emails). • It is called each time a booking or a correction is processed and each day by a scheduled task to process the complete day. • It may be called by the user to update the current values. • Several components exist to help working with bookings, corrections and counters but the final computation is performed in Pace. • Each partners can customize it for its own customer needs. 2018 August 6 42 flexsys belgium Web interface • The web server is a standalone program and a service insure the web server is up and running. • The web server supports all authentication modules including Active directory SSO. • Web pages are designed in Pace. 2018 August 6 43 flexsys belgium Terminal hardware independent. • Pi is virtually able to connect to any hardware provider by leveraging to Pace the real work (import/export). 2018 August 6 44 flexsys belgium Import - Export • Pace is use to handle Import and Export. • It can be scheduled 2018 August 6 45