PRM - a solution for business process management Ciarán Bryce Chrislain Razafimahefa
Dec 19, 2015
1
PRM - a solution for business process management
Ciarán Bryce
Chrislain Razafimahefa
2
Definition of a Process
“A general method of doing something, involving steps or operations which are usually ordered
and/or interdependent.”
E.g., in manufacturing, organizations, software development, etc.
“A business process is a set of linked activities that create value by transforming an input into a
more valuable output. Both input and output can be artifacts and/or information and the
transformation can be performed by human actors, machines, or both”.
3
Why Processes are Important
Information system is subject to technical, organizational and legal constraints
Organizational examples
Applying patches and measuring effectiveness of patches,
Analyzing user behavior for application preferences and evolution of system
Ensuring people who need documents have access
Legal examples
Document archival for Sarbanes Oxley
Digital Restrictions Management (e.g., for software licensing)
Personal Data protection
4
Why Processes are Important
Technical solutions have limited significance
E.g., Most effective anti-virus is coherent and rigorous patching policy
Information system is an organizational bottleneck
To be agile, need to abstract IT to match roles and objectives of organization
IT Challenge is integration - companies need architects, not programmers
Formal description of process permits
Comparison, optimisation and analysis, for business continuity and business intelligence
Foundation for information system deployment
Plan for urbanization of information systems
5
Application Process
Defined as Code base Set of activities working towards precise goal
Actors involved Programmer, user Programmer, manager, operator, certifier, client, user, etc.
Role in organization Asset Expresses business or organizational model
Reliability/AvailabilityFault Tolerance
(software and hardware faults)
Business Continuity
(Bird flu, computer failure, stock market crash)
Security Cryptography, access control, etc.
Employee screening, key management, SOX compliance, etc.
Efficiency CPU cycles, memory space, etc. Man-hours, cost, sales, business intelligence.
Process versus Application (for benefit of “computer scientists”)
6
Example of Motivation for Process Support
… and challenges
The EDOS Project - improving the quality of an open source
distribution
Partners include: Mandriva, Paris 6, University of Tel Aviv, INRIA,
University of Geneva.
2004 - 2007
7
Ian Murdock, creator of the Debian projec
Background
“Linux is not a product. Rather, Linux is a collection of software components, individually crafted by
thousands of independent hands around the world, with each component changing and evolving on
its own independent timetable. …. Linux is not a product. It is a process.”
Ian Murdock, founder of the Debian project.
The more F/OSS users, the better! …. In principle.
8
Background
Building a distribution involves
Producing and Collecting software
Configuring/compiling with respect to the dependencies
Quality Assurance (Testing)
Distributing to clients : boxes and download
These activities are currently tackled separately
List is not exhaustive, e.g.,
Training of developers
Scouting for clients
….
All part of the F/OSS process
9
F/OSS Environment
Community
Package
Version
Test
Bug
Role
Documentation
Metric
Process
Platform
Configuration
Distribution
Feedback
Project
ReleaseApplication
Need for a transversal view of whole F/OSS process
Def
ects
Man
agem
ent
Pro
du
ctio
n M
anag
emen
t
Dep
end
ency
Man
agem
ent
Dis
trib
uti
on
Man
agem
ent
Pro
ject
s M
anag
emen
t
Tes
ts M
anag
emen
t
Ro
les
Man
agem
ent
Act
ivit
y M
anag
emen
t
10
F/OSS Process
Lack of activity coordination and performance metering leads to process inefficiency
Structured process management leads to improvement, e.g. in F/OSS,
Ontology activity that defines and binds attributes to actors and resources for more flexible look-
up, e.g.,
Find package that has been tested on Mandrivalinux 10.1 with Ethernet card enabled
Find developer with experience in cryptography and Java programming
Find someone willing to act as a secondary server administrator
11
Process Reference Model (version 1)
Represents the main data types used in a F/OSS process
Represents content and community in a uniform manner
Models management of any activity in the F/OSS Process
Models evolution of projects, i.e., addition and integration of new activities
The PRM provides a model of F/OSS artifacts and activities that manage these artifacts
Format of PRM: formal model and Java kernel & API
12
PRM Model
The Information model binds meta-data (attributes) to artifacts
Used to lookup artifacts
E.g., find Java packages with RSA implementations
Lookup takes attribute Boolean algebra expressions
E.g., find Java cryptography packages from official mirror servers or trusted peers
Substitutability
“Best match” semantics in look-up
The model also defines primitives to create and lookup artifacts based on attributes
These enable F/OSS activities to be coordinated
E.g., pipeline all reported errors on package to competent developer
Lookup blocks until create of artifact with matching attributes
13
Et cetera
Conflicts
Dependencies
Target architectureInterests
TypeCompetences
VersionKnowledge
LicenseContact Information
Unit of ContentActor
Examples of Attributes
Actors and content are equally important to process
Code and documentation are equally important
14
Structure of PRM
15
Core PRM Elements represent the minimal set of Artifacts for handling
Community, Projects, Resources, Responsibilities, Measurement, Etc.
Artifacts
Managed by PRM activities
Located via attributes
Inte
grity
Rul
eIn
tegr
ity R
ule
Tas
kT
ask
Eve
ntE
vent
Pro
cess
Pro
cess
Act
orA
ctor
Met
ricM
etric
Art
ifact
Art
ifact
Rig
htR
ight
Pro
ject
Pro
ject
PRM Elements
Act
ivity
Act
ivity
Log
Log
Rol
eR
ole
PRM Elements
16
Evolution ? New Activity=
Inte
grity
Rul
eIn
tegr
ity R
ule
Tas
kT
ask
Eve
ntE
vent
Pro
cess
Pro
cess
Act
orA
ctor
Met
ricM
etric
Art
ifact
Art
ifact
Rig
htR
ight
Pro
ject
Pro
ject
Act
ivity
Act
ivity
Log
Log
Rol
eR
ole
Act
iviti
es
Man
agem
ent
Act
iviti
es
Man
agem
ent
Tas
k M
anag
emen
tT
ask
Man
agem
ent
Eve
nt M
ana
gem
ent
Eve
nt M
ana
gem
ent
Pro
cess
Man
agem
ent
Pro
cess
Man
agem
ent
Com
mun
ity M
anag
emen
tC
omm
unity
Man
agem
ent
Met
rics
Man
agem
ent
Met
rics
Man
agem
ent
Art
ifact
Man
age
men
tA
rtifa
ct M
anag
em
ent
Rig
hts
Man
age
men
tR
ight
s M
anag
em
ent
Pro
ject
Man
agem
ent
Pro
ject
Man
agem
ent
PRM Activities
Log
s M
anag
emen
tLo
gs
Man
agem
ent
Rol
e M
ana
gem
ent
Rol
e M
ana
gem
ent
Core PRM Activities
An activity defines a set of operations that manage artifacts and integrity rules
17
Interaction withPRM ElementsInteraction withPRM Elements
ApplicationApplication
Activity 1Activity 1
Impl
emen
tatio
n 1
Impl
emen
tatio
n 1
PRM ModelActivity 2Activity 2 Activity 3Activity 3
Impl
emen
tatio
n 2
Impl
emen
tatio
n 2
Impl
emen
tatio
n 3
Impl
emen
tatio
n 3
PRM Activity Interaction
Challenge in implementing processes is handling legacy code
Applications and Activity implementations have to communicate through the interfaces provided
by the Activities
Default Javaimplementation
for each core activity
18
Examples of PRM Operations
Artifact Management
registerArtifactType(Type)
newArtifact(Type, Value Directory, Project) Artifact
lookup(Directory, Project) Setof Artifact
exists(Artifact) Boolean
substitutable(Artifact, Artifact) Boolean
Activity Management
declareActivity(Name, Code, Integrity Rules) Activity
lookup(Directory) Setof Artifact
exists(Activity) Boolean
isAssociated(Activity, Project) Boolean
19
Metrics handling
Fundamental goal of process infrastructure is to measure and meter activities
Individual activities can have metrics (e.g., number of bug reports per package)
Or are bound to specific implementation tools
Challenge is to convert metrics to KPIs
e.g., productivity, relation rainfall to code bugs, etc.
20
Handling metrics through the PRM
Creation
new Metric(description, viewpoint, metric set[], occurrence, execution)
Lookup
find(directory) Setof Metric
Evaluation
evaluate(project, Metric) value
Observation
observe(Project, Metric, Value) waits for event (metric value reached)
21
Current Work
Clearly distinguish process basics from the F/OSS example
Define Web support
BPMN graphic language to express processes
22
23
Why EJB 3.0?
Support for persistence and query via JPA, and Web service access via SOAP
Why Ajax
Navigator client for manipulating BPMN process descriptions.
Client Server
Ajax
JSF
EJB 3.0(JPQL)
SOAP ?BPMN
Technology Choices
24
Mapping the PRM to EJB 3.0
Design Choices
25
Why EJB 3.0 ?
Information Systems are built over existing database infrastructures
EJB facilitates mapping to relational DB world
Caters for transactions and security
Caters for SOAP access for Web service middle layer
EJB 3.0 is much improved over EJB 2.x
Because this is what people use!
Design Choice
EJB is an option for the PRM. The client can request the default implementation or
use the EJB implementation
-default or -ejb
Currently using MySQL and JBoss
26
Mapping the PRM to EJB 3.0
PRM EJB 3.0 Comment
Artifact Entity
Attribute Property Not all properties are attributes
Activity Session Bean Retains entity characteristics
Expression, Directory and Query
JPA Query in both JPQL and SQL
Extended to attributes
Process Session Bean Retains @Attribute characteristics
Role Role Entity
Right Right Entity
Task Transaction (?) Retains @Attribute characteristics
27
J2EE Integration
ORM
Mapping artifacts to database and empowering the lookup query
Entity bean attributes can include @Attribute annotation
ArtifactActivity.lookup takes JPQL and SQL statements as argument
Each core artifact type has an entity (bean) implementation type
28
The Process Description Language
Groovy like language
Implemented using JavaCC; process specifications compiled to Java
29
Producer and Consumer Processes
process BalloonProcessDescriptionstart activity.ProductionActivitylog("Running Balloon Process" "\n")
defProject ballooning {name = "Balloon Fun" description = "Simple example of how a process is declared and
executed using the PRM"topics = { bursting making blowing }
}defActor ciaran {
name = "Ciaran"email = "[email protected]"interests = ballooning{making bursting}
}defActor michel {
name = "Michel"email = "[email protected]"interests = ballooning{blowing}
}defRole CoreRole {
description = "Basic Rights"operations = ProductionActivity{consumeBalloons
detectStockLevel createBalloon numberOfBalloons signalStockLevel}
}ProjectManager->addActor(ciaran, ballooning)ProjectManager->addActor(michel, ballooning)ActorManager->addRole(michel, CoreRole)ActorManager->addRole(ciaran, CoreRole)
metricExp = new BalloonKPI()log("Metric expression defined; its type is " metricExp.getClass() "\n")
defMetricViewPoint metricViewPoint {topics = ballooning{making blowing}activities = { ProductionActivity }description = "A simple metric that helps show how metrics work!"}
defOperationalMetric metric {name = "SimpleKPI"description = "Testing the operational metrics"from = todayto = 24-12-2009expr = metricExpviewpoint = metricViewPointoperation = ProductionActivity{consumeBalloons}project = ballooning}
log("Metric installed: " metric.getName() "\n")defTask prod {
actor = ciaranproject = ballooningprocess = Producer}
defTask cons {actor = michelproject = ballooningprocess = Consumer}
prod.execute()cons.execute()log("Initiated Balloon Process" "\n")
end
30
Producer and Consumer Processes
/* * The Consumer process consumes balloons in different sizes. * * Whenever there are no balloons in stock of the request size, it raises * an event for the production process to intercept and handle by * producing new balloons. */
process Consumer does "Balloon Consumption"
log("Producer is running ..." "\n")
rnd = new Random()while ( true ) {
sleep 2 secondsnum = rnd.nextInt(10)num++size = rnd.nextInt(10)size++log("Comsuming " num " balloons of size " size)balloons = ProductionActivity->consumeBalloons(size, num)log(" ... found " balloons.size() "\n")if ( balloons.size() == 0 )
ProductionActivity->signalStockLevel(0, size)}
end
/* * The Producer process produces new balloons in sizes ranging * from 1 to 10. There is up to 100 balloons in stock at any moment,* 10 in each size. * * This process waits for an event that indicates that the stock for some * sized balloon has run out. On receipt of that event, it produces 10 * new balloons in that size. */
process Producer does "Balloon Production"
log("Producer is running ..." "\n")
text = "Balls Inc."license = new License(text)for ( i in 1 to 100 )
ProductionActivity->createBalloon(license, ( (i % 10) + 1 ) )
log("Producer: Size of stock is " ProductionActivity-> numberOfBalloons() "\n")
while ( true ) {balloonSize = ProductionActivity->detectStockLevel(0)for ( i in 1 to 10 )
ProductionActivity->createBalloon(license, balloonSize)
log("Producer: created 10 " balloonSize "-sized balloons" "\n")}
end
31
Towards a graphical language
Just some wild ideas for Ajax …
32
PDL - Basic Structural Unit : the frame
Sam
Container fordefinition andexecution ofprocess units
Actormanipulating
this frame
Click tochange actor
Actor ManagerActor Manager
Process ManagerProcess Manager
Metric ManagerMetric Manager
Role ManagerRole Manager
Task ManagerTask Manager
Viewselector
33
PDL - Actor Frame
Sam
Actor ManagerActor Manager
Process ManagerProcess Manager
Metric ManagerMetric Manager
Role ManagerRole Manager
Task ManagerTask Manager
Name
Contact Information
Simpledata
declaration
Databaseof actors
Experience
34
PDL - Project Frame
Sam
Actor ManagerActor Manager
Process ManagerProcess Manager
Metric ManagerMetric Manager
Project ManagerProject Manager
Task ManagerTask Manager
Name
Description Topics
Databaseof projects