JBPM Interview Questions
JBPM Interview Questions
Q. What is Drools?
Drools is a Business Rules Management System (BRMS) solution. It provides a core Business Rules Engine (BRE), a web authoring and rules management application (Drools Workbench) and an Eclipse IDE plugin for core development.
Q. 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.
Q. What is JBPM?
jBPM is a flexible Business Process Management (BPM) Suite. It makes the bridge between business analysts and developers. Traditional BPM engines have a focus that is limited to non-technical people only. jBPM has a dual focus: it offers process management features in a way that both business users and developers like it.
Q. What does jBPM do?
This business process allows you to model your business goals by describing the steps that need to be executed to achieve that goal and the order, using a flow chart. This greatly improves the visibility and agility of your business logic, results in higher-level and domain-specific representations that can be understood by business users and is easier to monitor.
The core of jBPM is a light-weight, extensible workflow engine written in pure Java that allows you to execute business processes using the latest BPMN 2.0 specification. It can run in any Java environment, embedded in your application or as a service.
Q. Mention the main features of JBPM5?
- Visual user friendly editor: Users can choose between a web based editor (Oryx) or an Eclipse based one. You can choose depending on the end user and if you are going to use the project’s BRMS (Guvnor) where you can store all your business assets such as processes, rules and documentation in a central location.
- BPMN2 standard support: This allows you to choose a different editor to generate your business processes and run them in JBPM5. There’s no 100% support for the standard yet, but progress is being made on this matter.
- Human Task features: JBPM5 has a native notion of a Human task, an activity that needs to be completed by an actual person and has a lifecycle: it can be started, suspended, completed, etc. It is also a standard spec.
- Process Console: You can interact with the engine through this console where you can start processes, complete human tasks, fill forms, etc. This console is GWT based.
- JPA persistence method: it enables you to choose any database and persistence schema to store the processes variables and history log.
- Designed for domain specific workflows: this means that you can create your own business domain specific tasks such as (Receive Claim, Approve loan , Check Blood Pressure, etc) and build a palette for end users that is very natural to their environment. This is combination with a visual modeler is a pretty explosive combination, allowing a very productive as-is process knowledge gathering and to-be process design across a whole line of business.
- Business Activity Monitoring built in: what’s a BPM’s worth if you can’t monitor your processes? JBPM5 allows you to make reports (including tables and charts) over the process instance data and history log. This is useful for higher level users that as C-level executive who need process information to make decisions. It also enables you to use BIRT to generate your reports, so your imagination is the limit when it comes to the amount of information you can present.
- Console Custom forms integration: By using a template framework, JBPM5 allows your users to interact with their processes using the same console to start the process and make actions to it within a custom form for each activity. For example you can have a client’s data gathering activity in your process and a custom form can be built to fill that information into the workflow.
- Powerful rules language: To make decisions within the process you can use Drools rule syntax to for example change a path according to a business condition, such as a credit score.
Q. What are the advantages of JBPM5?
jBPM 5 provides a different computational model for business process and rule. This model is based on a knowledge-oriented approach, where the application is not process-oriented or rules-oriented, but the end users can simply select between different paradigms to represent their business logic. All tools and interfaces the user is confronted with support this idea of a unified environment throughout the entire knowledge life cycle.
Q. Is the Graphical Process Designer (GPD) only useable in Eclipse? Is there a way to use it standalone?
The jBPM GPD is an eclipse plugin that targets usage by multiple roles. Both the business analyst and developer are able to use the same tool in different ways. The main reason why we think it is important to integrate those two in one single environment is because in many teams, these two roles are done by one person. Then it becomes very important that the tool can support both roles and gradually shift from being a diagramming tool to an implementation tool.
Q. What is a rule engine?
A rule engine may be viewed as a sophisticated if/then statement interpreter. The if/then statements that are interpreted are called rules.
Q. What are the advantages of Rule engine?
Advantages of Rule Engines:
Greater flexibility: keeping your rules into a Knowledge base let you adapt easily your decisions when they are changing.
Easier to grasp: Rules are easier to understand than procedural code so they can be effectively used to bridge the gap between business analyst and developers.
Reduced complexity: When embedding lots of decision points to your procedural codes it can easily turn your application into a nightmare. On the other hand rules can handle much better increasing complexity because they use a consistent representation of business rules.
Reusability: By keeping rules are kept in one place leads to a greater reusability of your business rules. Also, traditional procedural code often impose unnecessary variations of base rules which are therefore more difficult to reuse in other contexts.
Q. What is global in DRL file?
Global is the keyword used in drools to define a global variable. Global variable is the one which will be visible to all the rules inside a DRL file.
Globals must be used very carefully in a DRL file, since the changes in a global variable are not notified to the working memory. For example, you are using a list variable as a global and in any rule you are adding a value in a list and in one particular rule, you are checking if list size() > 0, then in this case rule may not fire. Global variable can be used for any type of object.
Q. Where to use global variable?
Consider a scenario, where in the rules there is a requirement for database connection object. In this case, the DB Connection object can be inserted as a global variable in the working memory and the connection object will be visible to all the rules in that DRL file.
Q. Explain the difference between StringBuilder and StringBuffer class.
StringBuilder is unsynchronized whereas StringBuffer is synchronized. So when the application needs to be run only in a single thread then it is better to use StringBuilder. StringBuilder is more efficient than StringBuffer.