About Activiti

Founded in 2010, Activiti has a history of provided modern, battle-tested, open source Business Process Management (BPM). Activiti supports open standards such as BPMN and DMN with open REST APIs for the most demanding human- and system-centric processes. Activiti puts the power of BPM in the hands of developers with practical APIs. And, organizations enjoy activity because of it’s thorough management of processes and data as well as overall flexibility. Activiti is supported by a team of individuals and companies, including the project’s leading sponsor Alfresco.

The Team

Mauricio "Salaboy" Salatino

Activiti Tech Lead
Mauricio is a long term BPM, Rules Engine and Open Source enthusiast. Previously working for Red Hat, on their BPMS and BRMS, Mauricio published 4 books about BPM and Rule Engines. You can find more about Mauricio's work in his blog https://salaboy.com/ about Open Source, Business Automation, Artificial Intelligence and new technologies.

Elias De Medeiros

Activiti Core Developer
Elias is a clean coding and unit testing enthusiast. He brings 7 years of experience in Java and Process Engine related technologies. Elias previously worked at "UShareSoft a Fujitsu Company" and Bonitasoft, focused on the BPMN2 Process Engine and Cloud Tools.

Ryan Dawson

Activiti Core Developer
Ryan brings to Activiti a broad background as a developer and consultant in Banking, Finance and Risk Management. Ryan uses that experience to help Activiti grow as a product which is both cutting edge and also easy to adopt and which satisfies the key needs of modern enterprises.
Daisuke Yoshimoto Image

Daisuke Yoshimoto

Activiti Developer
Daisuke is a software engineer at Japanese software company NTT DATA INTRAMART. He is one of the lead developers for IM-BPM, which uses Activiti Engine as a core BPM engine and adopts Activiti Designer as process modeling tool.
giuseppe malanga image

Giuseppe Malanga

Activiti Developer
Giuseppe is solution architect at Zaizi with 7 years of experience in data management, data integration and business processes. He has been involved in several Alfresco and Activiti projects, for private and public sector, hosted on-premise or in the cloud. In recent months he designed and implemented case management solutions for public sector, which has required the integration between Activiti and microservices.
mykhailo dianov photo

Mykhailo Dianov

Activiti Developer
Mykhailo Dianov has a solid 40+ years-long engineering and scientific background, having degrees of D.Sc. on Information Technologies (HW & SW Specialized Systems) and Ph.D. on Theoretical Foundations of Electrical Engineering (Computer Methods for 3D Magnetic Field Calculations). In his previous ventures as a CTO of large software services companies such as Luxoft and IntroPro, Mykhailo Dianov had a long and successful experience delivering technology solutions and sophisticated applications for big companies like AT&T, Boeing, Harman and others using middleware software for different projects such Oracle Fusion, TIBCO ActiveMatrix BPM, IBM Integration Server. As the software development market has changed dramatically in the favour of open-source software, after building a prototype in Igor Dianov’s basement den in early 2016, the entrepreneurs decided the concept had legs – literally. In the Spring of 2016, IntroPro Ventures Inc. was established with an office in Vancouver, British Colimbia, Canada to develop and market an open-sourced business application development platform that is called YouBPM today (www.introproventures.com).
Igor Dianov Photo

Igor Dianov Photo

Activiti Developer
Igor Dianov brings 25+ years of experience in architecting, developing and managing software for scalable and persistent enterprise applications. In early 2015, Igor Dianov together with D.Sc.Mykhailo Dianov set out to develop a new concept of advanced & scalable enterprise application architecture blueprints by separating communication and application concerns and connecting client and server side services in a clean, controlled & secured manner (www.introproventures.com). Before co-founding IntroPro Ventures, Igor worked on enterprise software development in financial, telecommunication, content management, process management and content distribution applications for companies such as Sberbank, Telegroup, and PressReader (formely NewspaperDirect). He brings his experience building large-scale enterprise applications and vision for scalable software architecture and integrations leveraging mature open source software. Over the last 15 years of professional activity Igor Dianov was operating in the Greater Vancouver area, British Columbia, Canada. Igor Dianov graduated as MS in Electrical Engineering from National Technical University of Ukraine with specialization in Computer Systems for Experimental Research and Integrated Testing. In his leisure time, Igor is dedicated to sailing and racing windsurfers in Vancouver, BC and Oregon, US.
Leonid Elkun Picture

Leonid Elkun

Activiti Developer
I am a software architect with over two decades of professional experience. I specialize in designing and developing custom software solutions for enterprises. I am skilled in a variety of modern technologies and tools spanning across multiple specialty areas such as ESB, Messaging, Cloud, Content Management, BPM, Web and Mobile applications, etc. I am still an active Java developer. In the past, I’ve developed using other languages as well, e.g. C++ and C#. I’ve provided professional services to large enterprises, e.g. Nokia, Financial Industry Regulatory Authority (FINRA), World Bank and US Government (USCIS, Department of Homeland Security, FAA), as well as small private companies and startups.

Bassam Al-Sarori

Core Activiti Developer
Bassam has over 10 years of experience developing and delivering high performance systems. He boosts the performance of Activiti’s stateless REST-based APIs and helps integrate them into ever modern rich web clients.

Saeid Mirzaei

Activiti Developer
Saeid is a senior software architect at Atos Worldline. He has worked as software architect, project manager and strategist for many projects. In recent years he has been involved in payment and financial sector. Saeid is enthusiastic in designing real life mission critical applications using open source in furthest possible extent.

Dimitrios Mandalidis

Activiti Developer

Dimitris is a software engineer mostly involved with enterprise Java applications in insurance, banking and chemicals sector. Being an open source enthusiast, he was charmed with Activiti’s by its simplicity. Since then he is fixing bugs and wandering through the code to find extension points and opportunities for new features. He has contributed enhancements to activiti-cdi module.

Greg Harley

Greg Harley

Activiti Developer
Thirty plus years experience with a background in real-time supervisory control, content management and business process management. An expert in enterprise scale system architecture, and integration. Industry experience includes: banking, pharmacy, transportation, utility management, healthcare management, insurance, education, knowledge management, telecommunications, manufacturing and retail.


What is BPM?

BPM stands for Business Process Management.  There are 2 different aspects of BPM: BPM as management discipline and BPM as software engineering.  The BPM vendors have long time tried to make abstraction of those 2 distinct aspects.  That path lead to more confusion then anything else.

BPM as a management discipline is the responsibility of every strategic executive manager.  It's to ensure that the organization performs well in their core business processes.  This involves understanding what values the organization delivers and how those are achieved.  This means analyzing, documenting and improving the way that people and systems work together.  As part of that work, it's useful to work with models and diagrams.   BPMN diagrams express the execution flow of the steps to accomplish a certain goal.   Important to note that these models are used for people to people communication.  They can be underspecified, which means that they can contain valuable high level information without including unnecessary details.  Such underspecified process models are also known as abstract business processes.

BPM as software engineering means that executable business processes will be executed by a BPM System (BPMS).  Executable business processes are based on a diagram that represents the different steps in an execution flow.  The diagram can actually look exactly the same as the abstract business process.  But executable business processes are different in some very fundamental ways.  First of all they need more technical details.  That part is generally accepted.

But what is less understood is that executable processes only take the perspective of a single system, the BPMS.  The BPMS can act as a coordinator, so steps in the process could be for example user tasks.  Then the user task becomes a wait state for the BPMS.  And when the external task is completed, then the BPMS acting as a coordinator should be informed about the completion.   In that context, a BPMS often acts as a state machine.   So it's clear that the BPMS, even as a coordinator, can not handle steps between 2 external parties.  For example, warehouse clerk handing over an order to a packager that wraps the order package.  Imagine none of that is automated, then there is no way of the BPMS to be informed about those steps.  So they can't be modeled distinctly in the executable business process.

Another less known difference between abstract and executable business processes is that executable processes are part of the software development lifecycle.  That implies they are under the control of the technical developers and that executable processes need unit testing just like any other piece of software.

Traditional BPM vendors try to abstract those differences with automagical round tripping between abstract process models and executable process models.   But in general, that approach fails in practice.

Back to top

Why are the Business Intelligence (BI) reports so valuable for the business?

Once you have your business processes deployed, Activiti automatically captures everything that happens in the Activiti history DB.  For example, how long does each process instance or activity instance take, who submitted which data and when, in which continent does this sale occur, which order is this process for, which contract was this insurance claim for, and so on.  If you don't turn it off explicitly, all that information stored in the history information.  From that history information, various kinds of reports can be generated.  Those reports show analytics on that data.  Like for example: The average time for each activity in the process,  the amount of sales per region, the percentage of rejected orders, and so on.

Because the graphical diagram of the executable business processes has been driven by the business people, it means that the automatically generated analytics also have meaning on a business level.  That is a crucial win for BPM Systems.

Another use case for the history information are audit logs.  Also those come for free when developing your solution based on a business process.  Who filled out what and when gives highly traceable decisions. The task comments even can give the full context of why certain decisions were taken at the time.

Back to top

What does Activiti do for me as a Java developer?

First, you as a developer get business intelligence and audit logs features for free.  And with building your solution on business processes, Activiti will help developers to structure their software better.  Think about user tasks, external systems and timers that need to be managed.  And then try to think how you like your transaction boundaries    of your application.  That puzzle can be a challenge in enterprise applications.  Building that kind of features becomes a lot easier when structuring an application around a business process.  Managing wait states, timers and asynchronous continuations becomes peanuts.   A business process can express that structure a lot more compact than working with the fundamental instruments that the Java platform offers like JDBC and JMS.  And Activiti makes sure that you can easily link in Java or scripting for jobs that are better done in other languages.

Back to top

What is BPMN 2.0?

The BPM market has longtime been fragmented because there was no consensus amongst BPM vendors. Several standards and specifications tried to fill that gap in the past, but none gathered enough traction in the industry to become an accepted standard for doing BPM. But luckily, times are changing, and over the past years BPM vendors have sat together to create a standard that unifies the BPM landscape. That standard is called 'BPMN', which stands for 'Business Process Model and Notation', and is developed and maintained by the Object Management Group (OMG) since 2004.

The first version of the BPMN specification (versions 1.x, first version released in 2004) focussed on graphical notation only, and became quickly popular within the business analyst audience. This means that the BPMN 1.x specification defines how concepts such as a human task, an executable script, automated decisions, etc. are visualized in a vendor-neutral standardized way. The second version (2.0), extends that focus to include execution semantics and a common exchange format. This means that BPMN 2.0 process definition models are not only exchangeable between graphical editors, but those models can also be executed as-is on any BPMN 2.0 compliant engine such as Activiti.

It's easy to understand that the future of BPM is BPMN 2.0. And we at Activiti are very happy to bring you that future, today.

Back to top

Is BPMN 2.0 readable enough for developers?

The Process Virtual Machine allows the Activiti Engine to support multiple process languages natively. Which language that the developers will choose is hard to predict at this time. In fact, developers will use different process languages depending on their needs. We'll go through great efforts to make BPMN 2.0 as developer friendly as possible. For example with the principle of BPMN shortcuts. We'll also include Java event listeners and Spring support into BPMN 2.0 so that your Spring beans can be accessed from any expressions.

Back to top

Why Apache license?

Activiti is licensed under the Apache License 2.0 to encourage widespread usage and adoption of the Activiti BPM engine and BPMN 2.0. By choosing such a liberal licence, we want to emphasize our goal of make BPM technology more readily available to developers and organizations of all kinds.

Back to top

How can I become a contributor to Activiti?

There are very different ways how you can contribute and some of them are very easy. We even consider just complaining a good contribution ;-) As it's always good to know where we can improve. If you indicate a constructive proposal of how we could improve it, even better. If you actually create a pull request and a unit test as part of a jira issue, that's even better. If you have an idea for a code contribution, you can use the following guidelines.

The 2 most important communication channels with the team are the developer forum and our jira issues repository. Create an issue in our jira issues repository or comment on an existing issue for the work that you plan to commit. Explain what you plan to do and ask for feedback. You can propose contributions by forking the activiti repository in your personal github space and then creating a pull request. Check out this blog post. It explains how to write a unit test for a contribution. When you supply a unit test, it greatly enhances the chance of your contributions to be accepted. Before you submit a pull request, always run mvn -Pcheck clean install and ensure it runs fine. It's good if you indicate that you've ran this successfully.

Back to top

What is the difference between process concurrency and Java concurrency?

The Activiti Engine uses the database for synchronization. A process is executed in transactional steps. Each step is calculated with a single thread. Which is logical since calculations that need to happen between two wait states is typically minimal and hence typically it is not an optimisation to calculate different paths in concurrent threads. Access to a DB connection has to be synchronized anyway.

By default, Activiti Engine uses the thread of the client to perform it's work. That is the easiest to embed it into other software. In the future we envision configurations that allow for asynchronous execution of the service methods. The current architecture would allow that very easily.

Processes include activities that need to wait for an external trigger. Activiti Engine will never block a thread in those situations. That is when the execution state is persisted and then the transaction commits. If you look at the database and you imagine that all calculations to execute the process happen instantly, then it's often easier to envision the logic of Activiti Engine.

The behavior of Activiti Engine to calculate possibly multiple steps in a process until a wait state is reached is the default behavior. Asynchronous continuations will be introduced to allow for a more fine grained demarcation of transactions for those situations where it is needed.

Back to top

Which transaction demarcation technologies can Activiti integrate with?

Activiti integrates with:

  • Standalone JDBC
  • Spring
  • JTA
Back to top