Preface
If database systems is like a well-organized and clear story told by a respected wise man, workflow is like a group of cool boys talking about their respective "philosophies ". In this case, I want to point out that workflow management systems are still in the initial stage of technology Hype Curve. We will face an exciting stage in this field. To describe this, we can compare it with Relational Database Service (RDBMS. When talking about RDBMS in a software development team, most people will have a clear concept. When you talk to them, people will acknowledge or understand what you said with a slight nod. When you use the workflow term to discuss a workflow, they shake their heads to disagree, because everyone has a different understanding of the workflow term.
Figure 1: workflow vs. RDBMS positioned in the hype-Curve
One of the reasons for this is that too many concepts are used in the workflow. None of the many norms and tools in this field are similar. Of course, they overlap and reference each other.
When introducing a workflow, you must include the relationship between the workflow and business process management (BPM. The term "workflow" generally describes a series of interactions between people and computer systems. Among developers, workflows are often mentioned. Sometimes, a workflow refers to some different UI interfaces. Business Process Management has a wide range. In contrast, most workflows are limited to technical fields. Business Process Management also involves non-technical issues from the perspective of management personnel, such as analysis and organizational efficiency.
In this article, I will first explain what is a workflow management system and then introduce the advantages of business process management. Next we will describe why the workflow market seems so messy. The main conclusion given in this article is: selecting a workflow system is the most difficult thing you will face when you want to use a workflow system. Therefore, the core part of this article describes four layers of a process definition, which provides a foundation for you to select a workflow. This article also describes the general concepts of workflows and BPM in neutral languages. Finally, some guidelines and tools are provided.
What is a Workflow Management System (WMS)
Definition
A workflow system is a software component input based on a normalized process description. It maintains the running status of the process and distributes activities between people and applications. For the following description, we first define some basic terms: Process Definition and process instance ). A process is a standardized description of a business process or process. A process instance is a running entity defined by the process. So far, the concept is still clear, isn't it? But when we go further, we need to be careful when using text. There is no uniform way to explain the steps in the process. This is the main difference between various workflow specifications and tools.
Why should we disable the term "activity )"......
Process definitions are usually expressed as activities. I think this is the main cause of all chaos in the workflow field. I will tell you why: because the term "activity" confuses the difference between state and action. In a process, a State (or wait state) represents a dependency on an external participant (actor. When a process is running, this means that the process engine must wait until the external participant notifies the workflow management system of the specified status. For example, wait for further operation approval. An action is a program logic that the workflow system runs in response to a specified event ). When a specified event occurs during the process, the workflow system starts and executes these actions. For example, send an email when the status is assigned to a participant. You can also see that the status and action are so different that using the same term to describe these concepts is a bad habit. I recommend that you do not use the term "activity", instead of "status" or "action.
Another important role of a workflow system is to maintain the context information of each process. Process context variable is a variable related to a process instance ). For example, the start date of the vacation application, the key value of a record in the database, and the index of a document in the document management system. These variables are usually declared in the process definition and then instantiated when the process instance is generated. All mature workflow management systems support custom variable types.
Target usage)
One of the purposes of using the workflow management system is to serve as a platform for Enterprise Application System Integration (EAI. In most of the current enterprise IT architectures, various heterogeneous (heterogeneous) applications and databases run on the enterprise intranet. When these systems are applied to an organization, they all have a clear goal. For example, customer management, document management, supply chain, order, payment, and resource planning. Let's call these systems a specialized application (dedicated applications ). Each specialized application contains the domain knowledge of the business processes they support. The automated processes in these specialized applications are assembled into larger non-automated processes in the enterprise. Every time such a specialized application is installed and put into use, it will bring new functional requirements involving multiple other applications. Enterprise Application System Integration (EAI) is a method that uses multiple specialized applications to meet new software requirements. Sometimes, this only requires a channel for data communication between two applications. Specialized applications hard code a lot of business processes in software.
In this case, when you purchase a specialized application, you purchase a set of fixed automated business processes. The workflow management system does not need to know the information about the problem domain in advance. The workflow system uses the business process description as the input and management process instance execution, which makes it more flexible than dedicated applications (of course, you also need to spend time writing standardized descriptions of business processes ). That is why the workflow system and the specialized system complement each other. The workflow system can be used to manage global business processes. If a dedicated application supports the business process you need, use the dedicated application. The first way to use the workflow system discussed here is to use the workflow system to build an EAI platform based on all the specialized applications.
The second way to use a workflow system that can exert great value is to assist in the development of business process software involving multi-person related tasks. For this purpose, most workflow systems have a convenient mechanism to generate a form for executing tasks. For organizations that focus on ISO or CMM certification, using workflow systems in this way can significantly increase productivity. You do not need to write the process on paper in the form of text. The workflow system enables you to automate the process through process definition modeling (such as using web-based applications ).
The third way to use a workflow system is to embed the workflow engine into other applications. As we mentioned earlier, specialized applications have solidified business processes related to specific problem domains in software. Companies that develop specialized applications can also embed workflow engines into their software. Here, the workflow engine is only a software component and invisible to the end users of the application. The main reason for embedding a workflow engine into an application is to reuse (without repeatedly inventing the wheel) and maintainability of the application software.
The case for Workflow
Organizations that introduce workflows can benefit from both software development and business.
Convenient development-the workflow management system can simplify enterprise-level software development and even maintenance.
Reduce development risks-business analysts and developers talk in the same language by using a term such as status and action. In this way, developers do not need to translate user requirements into software designs.
Centralized and unified implementation-business processes change frequently. The biggest benefit of using a workflow system is that the implementation code of business processes is no longer scattered in various systems.
Accelerate application development-your software does not need to focus on process participants. It is faster to develop and the code is easier to maintain.
Business Process Management (BPM)
Before automating business processes, it is hard but rewarding to analyze and normalize them. E-workflow.org for the analysis process can bring the benefits of a good explanation:
Improve efficiency-many processes remove unnecessary steps in the automation process.
Better Process Control-improved business process management through standard working methods and tracking and auditing.
Improve Customer Service-increases the predictability of Customer Response Due to process consistency.
Flexibility-software control that spans the process, so that the process can be re-designed according to business needs.
Business Process Improvement-focus on processes to make them smoother and simpler.
I think they also missed the most important factor in using the workflow system: IMPROVING SUPPORT FOR iterative development. If the business process part of the software is not easy to change, the Organization will spend a lot of energy in the business process analysis before development, hoping for a success. Sadly, this is rarely implemented in any software project development. The workflow system makes it easy to deploy new business processes, and software related to business processes can be developed in an iterative manner. Therefore, the workflow system makes development more effective and less risky.
Missing Link)
I do think that workflow systems are missing in enterprise application development. Default implementation methods of enterprise business process logic in enterprise software are scattered. This means that the business process logic is distributed in various systems, such as ejbs, database triggers, and messages. The software obtained in this way is difficult to maintain. As a result, enterprises can only change the business process software as the final choice. What they often do is change the process to adapt to the software. The above problems also apply to enterprises that use large external ERP software packages. Further, let's assume that we are aware of this problem and intend to centralize the Code related to a process. This is good for a process, but when you want to implement multiple processes, you will see code for managing status and process variables being copied everywhere. Finally, we will organize the code into a centralized library. Good ...... This is a workflow management system. You don't have to worry about it yourself (you can choose the one that suits you from the existing workflow product-note yourself ).
A closer look
WfMS Interfaces
A workflow management system uses process definitions as input. Here, you can regard a process definition as a UML activity diagram, a UML state diagram, or a finite state machine. Submit a bill, apply for vacation, request a quotation ,...... The workflow system maintains the execution status and context of these process definitions. To this end, you need to notify the workflow system status changes. The status changes of the running process can be recorded for monitoring and management.
Figure 2: interfaces of a WfMS
Definition
The workflow system definition interface enables process developers to deploy process definitions. Note that the "process developer" here can be a combination of business analysts and software developers.
The following are four of the five interfaces defined in the Reference Model of the WfMC.
Pitfall)
Many developers of workflow management systems want to convince you that by using their graphical process development tools, business analysts can generate process definitions. This fantasy stems from the fact that "programming is difficult. Sales staff of developers like to say "look, you don't need to write a line of code ". It is a good thing not to write code, but most developers are too far away at this point, ignoring the fact that in some cases it is very suitable to provide a mechanism to integrate code into the process definition. When using a workflow system as an EAI platform, you must integrate the code in the process. The development process definition requires the cooperation of business analysts and software developers. A good graphic process design tool should be able to support such cooperation.
Run
Execute interfaces to allow users and systems to operate process instances. A process instance is the execution of a process definition. The control flow defined by the process is described by the state machine. The two main methods for executing an interface are to start a process instance and notify the workflow system that a State is over.
Application
The application interface represents the interaction between the workflow system and the external system initiated by the workflow system. When a user or system operates a process instance, some events (such as the execution of a migration) are generated ). In the process definition, you can specify an executable code logic that responds to an event. This Code deals with other systems inside and outside the organization.
Monitoring
The Administrator obtains the exact data of the process running through the monitoring interface. Sometimes, running logs can also be used for auditing.