Design and Implementation of micro-kernel flow engine (IVR navigation) (I) -- Development Background

Source: Internet
Author: User
Tags jbpm

Development Background

Our company is mainly engaged in the development of enterprise speech products, such as scheduling systems, command systems, teleconference systems, and call center systems. These systems share a common feature, that is, they involve calls, playing, sending and receiving buttons, and venue operations. Our business products are built on our softswitch system. The application servers of the softswitch system provide these services externally.

Problems

We found a problem during the development process. Each product will perform many repeated development on this interface, especially in IVR processing.

IVRInteractive Voice Response (Interactive Voice Response) can improve the quality of call service and save costs. IVR is a powerful automatic telephone service system.

Because our system is re-structured and the softswitch API interface is being developed, we try to solve this problem.

In order to facilitate upper-layer calls to underlying interfaces and reduce repeated development, the product can be rapidly changed to meet user needs, we propose the concept of transaction flow. That is, Upper LayerProgramSet a transaction stream. For example, when a call is initiated against user 9092, the user is voiced after the user responds, and the user enters the password. The password verification is successfully added to the venue. The Upper Layer Program sets such a transaction stream and sends it to the lower layer for processing. After the lower-level processing is complete, the system replies to the processing result.

The concept of transaction stream is not implemented at the end. First, we have insufficient analysis on the Exception Processing of the transaction stream; second, we adopt the concept of transaction stream extensibility, And the maintainability is not very good.

Later, we introduced the concept of SOA on the basis of the transaction flow, which encapsulates the underlying interface as a series of loosely coupled services and implements the process editing function through service orchestration at the upper layer. However, it is very difficult to implement SOA. First, SOA has no large-scale application, less documentation, less experience, and more implementation risks. Second, it requires tools and investment to implement SOA. In this case, we would rather repeat development.

In the end, the process editing function is not complete, but we still implement a simple process editing in the API. This process editing is implemented by hard coding, it is quite different from our wishes.

New Ideas

Later, I came to the introduction of a platform software company, which is an enterprise application platform. A lot of enterprise applications are workflow. Their platform is integrated with an open-source workflow engine: jbpm. The first time I came into contact with jbpm, I felt that many ideas could be used for reference. Later, I searched several articles on the Internet to study the microkernel process engine.Article:

Demystifying jbpm Process Engine kernel design ideas and architecture

Design idea and architecture of microkernel Process Engine

Microkernel workflow engine architecture and some solutions

These articles are the core foundation of my process engine design. After reading this, I decided to design a microkernel process engine.

Use open source or self-developed

There are two methods before you decide to start development: one is to use open-source products, such as jbpm, and the other is to develop it on your own. At that time, the considerations were as follows:

1. jbpm is developed in Java. Currently, our company's business products are basically C, which is inconvenient to interact with Java.

2. jbpm is designed for enterprise workflows. An important difference between workflows and IVR navigation is that IVR Navigation requires high timeliness. The system is required to respond in a timely manner.

3. I was not a Java student, but I was still a little worried about Java.

Therefore, we decided to use the C ++ development process engine.

If it is now, even if you decide to develop it by yourself, you will take a good look at the jbpm source code.

Other ideas for Reference

1. Data-driven (dd ). Define the process in XML in the script. After the program starts, the process is read into the program and then called by the upper program. If the process is changed, modify the script directly.

2. BPEL. The abbreviation of Business Process Execution Language, meaningBusiness Process Execution Language, Is an XML-based, used to describe the Business ProcessProgramming Language. For my footstep language, refer to the description of BPEL.

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.