JBPM Interview Question and Answers
Q1) What is BPM?
BPM stands for Business Process Management. There are 2 different aspects of BPM: BPM as a management discipline and BPM as software engineering. The BPM vendors have a long time tried to make abstractions of those 2 distinct aspects. That path leads to more confusion than 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 under specified process models are also known as abstract business processes.
Q2) What is JBPM?
Ans: 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.
Q3) What does JBPM do?
Ans: 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.
Q4) What is needed to set-up a cluster with JBoss?
Ans: Basically starting JBoss with the 'all' configuration contains everything needed for clustering.
It has all the libraries for clustering:
- JGroups.jar, jboss-cache.jar
- Clustered beans (cluster-service.xml)
- HTTP session replications (tc5-cluster-service.xml)
Q5) What are the advantages of JBPM5?
Ans: JBPM5 provides a different computational model for business processes and rules. 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 has confronted with support this idea of a unified environment throughout the entire knowledge life cycle.
Q6) What is a rule engine?
Ans: A rule engine may be viewed as a sophisticated if/then statement interpreter. The if/then statements that are interpreted are called rules.
Q7) What are the advantages of the Rule engine?
Advantages of Rule Engines:
- Greater flexibility: keeping your rules into a Knowledgebase lets 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 analysts 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 that are kept in one place leads to greater reusability of your business rules. Also, traditional procedural code often imposes unnecessary variations of base rules which are therefore more difficult to reuse in other contexts.
Q8) 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 combined 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 executives 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 take 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.
Q9) What is global in the DRL file?
- Global is the keyword used in drools to define a global variable. The global variable is the one that 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 value in a list, and in one particular rule, you are checking if list size() > 0, then in this case rule may not fire. A global variable can be used for any type of object.
Q10) Where to use a global variable?
Ans: Consider a scenario, wherein the rules there is a requirement for the 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.
Q11) Which component handles cluster communication in JBoss?
Ans: The JGroups framework provides services to enable peer-to-peer communications between nodes in a cluster. It is built on top of a stack of network communication protocols that provide transport, discovery, reliability and failure detection, and cluster membership management services.
Q12) Is it possible to put a JBoss server instance into multiple clusters at the same time?
Ans: It is technically possible to put a JBoss server instance into multiple clusters at the same time, this practice is generally not recommended, as it increases the management complexity.
Q13) What is the JBoss cache in short?
Ans: JBossCache enables easy distribution of datasets across your computing environments. It is based on JGroups and enables clustering and high availability of that data. You may choose to distribute the data with JBoss Messaging to move it where it is needed for computation or event-based programming.
Q14) How do you monitor JBoss and detect the bottleneck of an application?
- Different components of the application are to be measured. This step is to find where the degradation is, whether it is external or internal and where is the application spending all the time. Using Joss JMX agents and monitoring the deployed components to the application server involves in the first step.
- After finding the most of the time spent by specific components or libraries or most of the resources, one can use Jprobe a specialized tool for examining the single object or the objects loaded in the memory.
Q15) What is JTA?
- Java Transaction API (JTA) specifies standard Java interfaces between a transaction manager and the parties involved in a distributed transaction system: the resource manager, the application server, and the transactional applications.
- The Javaâ„¢ Transaction API (JTA) allows applications to perform distributed transactions, that is, transactions that access and update data on two or more networked computer resources.
- The Java Transaction API consists of three elements: a high-level application transaction demarcation interface, a high-level transaction manager interface intended for an application server, and a standard Java mapping of the X/Open XA protocol intended for a transactional resource manager.
Q16) What is the difference between Hibernate and EJB 3? Do not you think EJB 3 is just a clone of Hibernate?
- The perception of EJB3 as being a simple clone of Hibernate is primarily based on developer familiarity with Hibernate and similarity of naming, as well as a common purpose, and that Hibernate is morphing itself into an EJB3 implementation based on the work going into the specification, not the other way around.
- EJBs are supposed to be components, in the sense that they're not just one class, but a set of classes, descriptors and usage, and management contracts. All of this to allow a container (JBoss, Weblogic, etc.) to provide services to those components, and to be able to reuse and distribute this component.
- These services are, among others, transactions, concurrent access control, security, instance pooling, etcetera. Hibernate is "just" an ORM (Object/Relational Mapping) tool. Quick and dirty, this means you can store an object tree belonging to a class hierarchy in a relational DB without writing a single SQL query. Quite cool, IMO. But no transaction control, no instance pooling, no concurrency control, and certainly no security.
Q17) Which Hibernate object wraps the JDBC Connection?
Q18) Is the Session Factory Thread-safe?
Q19) How can you start a JTA transaction from a Servlet deployed on JBoss?
Q20) What if you need to span your transaction across multiple Servlet invocations?
Q21) What are the differences between EJB 3.0 and EJB 2.0?
- EJBs are now plain old Java objects (POJO) that expose regular business interfaces (POJI), and there is no requirement for home interfaces.
- Use of metadata annotations, an extensible, metadata-driven, attribute-oriented framework that is used to generate Java code or XML deployment descriptors.
- Removal of the requirement for specific interfaces and deployment descriptors (deployment descriptor information can be replaced by annotations).
- Interceptor facility to invoke user methods at the invocation of business methods or life cycle events.
- Default values are used whenever possible (â€œconfiguration by exceptionâ€ approach).
- Reduction in the requirements for usage of checked exceptions.
- A complete new persistence model (based on the JPA standard), that supersedes EJB 2.x entity beans
Q22) What is the difference between a local-tx-data source and a xa-data source? can you use transactions in both?
Ans: A local-tx-data source identifies a data source that uses transactions, even distributed transactions within the local application server, but doesn't use distributed transactions among multiple application servers. A xa-data source on the other hand identifies a data source that uses distributed transactions among multiple application servers.
Q23) What optimization could I use if the EJB container is the only point of write access to the database?
Ans: You could activate the "Commit Option A" that is the container caches entity bean state between transactions. This option assumes that the container has exclusive access to the persistent store and therefore it doesnâ€™t need to synchronize the in-memory bean state from the persistent store at the beginning of each transaction.
Q24) What do you know about Seam?
Ans: Built on the standards JavaServer Faces and EJB 3.0, JBoss Seam unifies component and programming models and delivers a consistent and powerful framework for the rapid creation of web applications with Java EE 5.0. Seam simplifies web application development and enables new functionality that was difficult to implement by hand before, such as stateful conversations, multi-window operation, and handling concurrent fine-grained AJAX requests. Seam also unifies and integrates popular open source technologies like Facelets, Hibernate, iText, and Lucene.
Q25) Does Seam run on other application servers besides JBoss?
Ans: The seam runs beautifully on other application servers - just like everything else the Hibernate team does, this is not a JBoss-only thing.
Q26) Which JDK is needed to run Seam?
Ans: Seam only works on JDK 5.0 and above. It uses annotations and other JDK 5.0 features.
Q27) What is the difference between JAX--WS and JAX-RPC?
Ans: Java API for XML-Based RPC (JAX-RPC) is a Legacy Web Services Java API, it uses SOAP and HTTP to do RPCs over the network and enables the building of Web services and Web applications based on the SOAP 1.1 specification, Java SE 1.4 or lower.JAX-WS 2.0 is the successor to JAX-RPC 1.1. JAX-WS still supports SOAP 1.1 over HTTP 1.1, so interoperability will not be affected.
However, there are lots of differences:
- JAX-WS maps to Java 5.0 and relies on many of the features new in Java 5.0 like Web Service annotations.
- JAX-RPC has its own data mapping model, JAX-WS's data mapping model is JAXB. JAXB promises mappings for all XML schemas.
- JAX-WS introduces message-oriented functionality, dynamic asynchronous functionality which is missing in JAX-RPC.
- JAX-WS also add support, via JAXB, for MTOM, the new attachment specification.
Q28) Do you know how you could add support for Web Service transactions?
Ans: JBossTS supports Web Services transactions, including extended transaction models designed specifically for loosely-coupled, long-running business processes. J2EE transactions can integrate seamlessly with Web Services transactions using our integrated, bi-directional transaction bridge. Interoperability with many other vendors is provided out-of-the-box and JBoss is an active participant in these standards.
Q29) What version of JBoss AS do I need to run Seam?
- For Seam 1.3: Seam was developed against JBoss 4.2. A seam can still be run against JBoss 4.0. The seam documentation contains instructions for configuring JBoss 4.0.
- For Seam 1.2: Since Seam requires the latest edition of EJB3, you need to install JBoss AS from the latest JEMS installer. Make sure that you select the "ejb3" or "ejb3+clustering" profile to include EJB3 support. Also, the JBoss-seam.jar library file from the Seam distribution must be included in each Seam application you deploy. Refer to examples in Seam distribution (inside the examples directory) to see how to build and package Seam applications.
Q30) Can I run Seam in a J2EE environment?
Ans: Yes, as of Seam 1.1, you can use Seam in any J2EE application server, with one caveat: you will not be able to use EJB 3.0 session beans. However, you can use either Hibernate or JPA for persistence, and you can use Seam JavaBean components instead of session beans.
Q31) Can I run Seam with JDK 1.4 and earlier?
Ans: No, Seam only works on JDK 5.0 and above. It uses annotations and other JDK 5.0 features.
Q32) Where can I find Seam examples and documentation?
Ans: The source code and build script of all Seam example applications are included in the examples directory of the Seam distribution.
Q33) Is it true that Seam only works with JSF?
Ans: Seam only supports JSF as a view framework at this time. We plan to support other web frameworks in the future. We like JSF because it is a component-based UI framework, which fits really well with Seam's component-based approach to business objects and persistence objects. Seam made a major improvement to JSF by eliminating almost all XML configuration for backing beans -- you can now define back beans from POJOs or EJB3 components using simple annotations. We recommend you use Facelets, instead of JSP, with JSF. Facelets provide a powerful templating framework, better application performance, and allows us to write much simpler JSF pages. Please see the Seam booking example application for an example of how to use Facelets.
Q34) Can I use AJAX with Seam?
Q35) Can I unit test Seam applications without starting the Application Server?
- Yes, Seam provides its own integration test framework based on TestNG. You can easily mock all Seam services using those facilities without ever loading an application server or a database. Refer to the test example ANT target in the Seam booking example application for more details.
- Our design of course tutorials and interview questions is practical and informative. At TekSlate, we offer resources to help you learn various IT courses. We avail of both written material and demo video tutorials. For in-depth knowledge and practical experience explore Online JBPM Training.