Category Archives: architecture

Activiti at devoxx

Activiti, Tom Baeyens & Joram Barrez

BPMN 2.0
liberal license : Apache

Born May 17, 2010
– including Alfresco, Springsource, Signavio, Camunda,…
– seperate brand and project

BPMN 2.0 : OMG standard : shapes, execution semantics, file format
General endorsement

Activiti thinks of BPM as the domain specific language.

Out-of-the-box : control flow, functional activity types, everything you expect from a typical BPM system

Activiti is an embeddable process engine, using any java environment, any appserver (or none), any DB,…
Embed in your db, your tx, your domain model, your tests, your spring application context

Moving parts :
– BPM engine
– Activiti modeler : modelling processes in the browser
– Activiti explorer : task management application (process instance inspection and reporting coming)
– Activiti probe : system administration: status oveview, stuck jobs, deploy new processes,…
– Activiti cycle : BPM collaboration done right
– Activiti REST API
– Activiti Eclipse designer, also include BPMN extensions, pluggable activiti support (use your own steps in the designer)
– iPhone client, Android client coming up
– Grails integration

custom step : “implements JavaDelegation” and implement “execute(DelegateExecution)()” method.

Real-life demo
demo code will be online soon
uses CMIS (content management integration service) to talk to Alfresco (OpenCMIS).

Unit test support, made even easier by extening ActivityTestCase, allowing @Deployment(resources=”blabla.xml”) on test

Query API
– no need to learn internal data model
– access deployments and process definitions, process instances and executions, history, variables, tasks, jobs, users,…

Spring integration
– Process engine as spring bean
– Delegate to spring beans, e.g. serviceTask reference to spring bean

Method expressions and JPA

Pluggable way of handling forms, used form example to integrate with flex forms, + 2 ways of forms : rendered by form or do form rendering outside of the engine with process being passed. GWT integration documented on wiki.

Using Infinispan for high availability, extreme performance, Manik Surtani & Galder ZamarreƱo

JBoss World Boston notes, Using Infinispan for high availability, extreme performance, Manik Surtani & Galder ZamarreƱo

Infinispan as…
in memory object cache
… clustering/high availability toolkit
… clustered in-memory cache
… in-memory data grid
… cloud ready data store

Local, in-memory object cache
– performance booster
– good when data is hard to calculate, expensive to retrieve or frequently accessed

Better than hashmap
– better concurrency
– built-in eviction
– overflow to disk
– warm start, preloading
– events, notifications
– highly configurable locking strategies
– JTA compatible
– JMX monitoring

Tips and tricks
– use eviction, low-cost boudnedd container, recency based: LIRS
– tune for read-heavy, use lock-striping, READ_COMMITTED is often sufficient
– pre-loading can be expensive

Clustering toolkit
– High availability
– fail-over
– scale-out
– uses self-discovery, self-healing

Tips and tricks
– strive for session affinity, very valid optimization, will allow fo async communication
– replicated mode vs distribution? Depend on cluster size
– distribution: co-locate related state
– pre-loading, state transfer not necessary, use a ClusterCacheLoader

Clustered in-memory cache
– performance booster
– similar to local cache
– cluster-aware
– more shared-cache space

Writing data in cache, use putForeExternalRead() vs put()
– update cache state vs update “real” state
– fail-fast instead of lock
– fail quietly instead of throw exception
– does not affect transaction

Tips and tricks
– same as local cache
– putForExternalRead() API
– use invalidation clustered mode
— very efficient: only keys on the wire
— async communication helps even more
– replication can be used
— if cluster is small and data cached is small
— overall data volume can be contained in a single node

In-memory data grid
– multiple access mechanisms
– embedded: P2P
– client/server: REST, memcached, HotRod
– familiar APIs
— cache API
— upcoming JPA-like API
– Queryability

FADE: Fast, Available, Distributed, Elactic

Tips and tricks
– session affinity is nice to have
– async communication and eventual consistency
– use distributed mode, replicated will work to a limit
– tune performance vs durability, numOwners
– dedicated data tier helps you build stateless, elastic application tier
– HotRod: most efficient endpoint

Cloud-ready data store
– RDBMS in inelastic, single point of failure
– data grid deals with transience, is elastic, scalable, distributed
– API is key

Tips and tricks
– asme as data grids
– REST: use load balancer
– use a transport that does not use multicast (not supported on something like EC2)

JBoss BPM Past, Present & Future, John Graham

JBoss World Boston notes, JBoss BPM Past, Present & Future, John Graham

Past :

jBPM
– based on jPDL
– deployments : stand-alone, SOA-Platform, Seam
– jBPM 3, exising, stable
– jBPM 4, improved system, community effort

drools
– business rules
– BPM in drools flow

Riftsaw
– WS-BPEL 2.0
– based on Apache ODE
– release 2.1
– integration with SOA

Savara
– WS-CDL : choreography description language
– Pi calculus
– testable architecture, development validation, execution governance
– BPMN 2 work in progress

Present :

– Perspectives : rules-based, process-based, SOA-driven
– Need to integrate
– Need to avoid overlap
– Enable emergent usage
– Where to go?

jBPM 4 and drools flow are integrating and will be jBPM 5 which should be available in 2011

Key characteristics
– Business process engine
— BPMN2 native execution
— lightweight, embeddable
— generic process engine
– Full life cycle support
– Higher-level, domain-specific processes
– Powerful business rules and vent processing integration

BPMN 2.0
– OMG standard
— graphical notation
— process definition format
— execution semantics
– extensible
– interoperability

Generic process engine
– persistence
– transactions
– times
– expression dialects
– multi-threading
– events
– commands + interceptors
– session management

Future :

jBPM roadmap
– currently under community review
– more details soon
– 5.0 focus now on core components, should be ready by the end of the year
– regular (2-3 month) releases after that

Adaptive processes
– ability to handle change, complexity, …

How
– Externalise logic as rules