Using the jBPM Console NG – HR Example

The best way to learn about a new tool is using it, for that reason I’ve decided to write some posts  about how to use the jBPM Console NG. On this we will be following a simple “Hiring Example” process. I will try to recreate step by step how to test this example, so you can play with it, change it and extend it if you want to. This example can also be used as a reference to test the application or give feedback about the data that is being shown in the jBPM Console Screens. We will be reviewing this example among others during the free workshops happening in London the 23rd and 24th of October. 

jbpm-console-ng

The Example – Hiring Process V1

In order to show all the current features of the jBPM Console NG, I’ve wrote a very simple process to show in a 20 minutes walkthrough what you can do with the tool. Let me explain the business scenario first in order to understand what you should expect from the jBPM Console NG.

Hire a new Developer (click to enlarge)

Hire a new Developer (click to enlarge)

Let’s imagine for a second that you work for a Software company that works with several projects and from time to time the company wants to hire new developers. So, which employees, Departments and Systems are required to Hire a new Developer in  your company? Trying to answering these questions will help you to define your business process. The previous figure, represents how does this process works for Acme Inc. We can clearly see that three Departments are involved: Human Resources, IT and Accounting teams are involved. Inside our company we have Katy from the Human Resources Team, Jack on the IT team and John from the Accounting team involved. Notice that there are other people inside each team, but we will be using Katy, Jack and John to demonstrate how to execute the business process.

Notice that there are 6 activities defined inside this business process, 4 of them are User Tasks, which means that will be handled by  people. The other two are Service Tasks, which means an interaction with another system will be required.

The process diagram is self explanatory, but just in case and to avoid confusions this is what is supposed to happen for each instance of the process that is started a particular candidate:

  1. The Human Resources Team perform the initial interview to the candidate to see if he/she fits the profile that the company is looking for.
  2. The IT Department perform a technical interview to evaluate the candidate skills and experience
  3. Based on output of the Human Resources and IT teams, the accounting team create a Job Proposal which includes the yearly salary for the candidate. The proposal is created based on the output of both of the interviews (Human Resources and Technical).
  4. As soon as the proposal has being created it is automatically sent to the candidate via email
  5. If the candidate accept the proposal, a new meeting is created with someone from the Human Resource team to sign the contract
  6. If everything goes well, as soon as the process is notified that the candidate was hired, the system will automatically post a tweet about the new Hire using the twitter service connector

As you can see Jack, John and Katy will be performing the tasks for this example instance of the business process, but any person inside the company that have those Roles will be able to claim and interact with those tasks.

Required Configurations

In order to run the example, and any other process you will need to provide a set of configurations and artifacts, that for this example are provided out of the box. Just for you to know which are the custom configurations that this example require:

  1. Users and Roles Configuration: you will usually do this at the beginning, because it’s how you set up all persons that will be able to interact with your business processes.
  2. Specific Domain Service Connectors (WorkItemHandlers in the class path): this could be done on demand, when you need a new system connector you will add it
  3. A Business Process Model to run
  4. A set of Forms for the Human Tasks (If you don’t provide this the application will generate dynamic forms for them): this needs to be done for each User Task that you include in your process. This is extremely important because it represent the screen that the end user will see to perform the task. The better the form the better the user can perform its job.

For the users, roles and deployment instructions you need to check my previous post. The following steps require that you have the application deployed inside JBoss, Tomcat or that you are running the application in Hosted Mode (Development Mode).

The following steps can also be used to model and run a different business process if you want to.

The Example inside the jBPM Console NG

Initially we need to be logged in into the system in order to start working with the tools. There are no role based restrictions yet, but we are planning to add that soon.

Login

Login

Once  you are inside the Home section gives you an overview of what are the tools provided in the current version.

Home

Home

The “Hiring a new Developer” process is being provided out of the box with the tool, so let’s take a look at it going to the Authoring -> Business Process  section using the top level menu.

We will now be in the Authoring Perspective, where in the left hand side of the screen we will find the Project Explorer, which will allow us to see the content of the Knowledge Repositories that are configured to be used by the jBPM Console NG. The configuration of these repositories will be left out for another post. But it is important for you to know that you will be able to configure the jBPM Console NG to work against multiple repositories that contains business processes and business rules.

Process Authoring

Process Authoring

In the right hand side of the screen a you will see the Project Explorer  where you can choose between different projects and between different knowledge asset types. In this case the HR project is selected, so you can check out the hiring process inside the Business Processes category.

You can try modeling your own process, by selecting New in the contextual menu and then Business Process.

Some of the things that you can look inside the process model are:

  1. Global Process properties: Click in the back of the canvas and then access to the properties menu. Notice the process id, the process name and the process version, and the process variables defined.
  2. User Task assignments: click into one of the User Tasks and look a the ActorId and GroupId properties (see previous screenshot)
  3. Tasks Data Mappings: take a look at the DataInputs, DataOutputs and Assignments properties. When we see each activity execution in the following section we will be making reference to the data mappings to see what information is expected to be used and to be generated by each task.  (see previous screenshot)

Once we have our business process modelled, we need to save it and then Build & Deploy the project. We can do this by using the Project Editor screen. You need to select Tools in the contextual menu and then Project Editor.

Project Editor

Project Editor

On the top right corner of the Project Editor you will find the Build & Deploy button. If you click on this button, the project will be built and if everything is OK it will be automatically deployed to the runtime environment, so you can start using the knowledge assets. If the deployment went right and you saw the Build Successfully notification you can now go to the Process Definitions screen under Process Management in the main menu to see all the deployed definitions.

Process Definitions

Process Definitions

If you don’t see your process definition, you will need to go back to the Authoring perspective and see what is wrong with your project, because it wasn’t deployed.

Notice that from this screen you can access to see the process details clicking in the magnifying glass located in the process Actions column.You can also create a new process instance from this screen clicking in the Start button in the process definition list or the New Instance button in the  Definition Details panel. Let’s analyze the process execution and the information that the process requires to be generated by the different users.

Hire a new Developer Process Instance

When we start a new Process Instance a pop will  be presented with the process initial form. This initial form allows us to enter some information that is required by the process in order to start. For this example the process  require only the candidate name to start, so the popup just ask us enter the candidate name in order to start.

New Process Instance

New Process Instance

If we hit the big Start button, the new process instance will be created and the first task of the process will be create for the Human Resources Team. Depending on the assigned roles of the user that you are using to create the process instance you will be able to see the created task or not. In order to see the first task of the process we will need to logout tot he application and log in as someone from the Human Resources team.

Human Resources Interview

For this example we are already logged as Katy, who belongs to the HR team,  so if we go to Work -> Tasks   we will see Katy’s pending tasks. Notice that this HR Interview Task is a group task, which means that Katy will need to claim the task in order to start working on it.

Katy's Tasks

Katy’s Tasks

If Katy claim this task, she will be able to release it if she cannot work any more on it. In order to claim the task you can click in the lock icon in the Task List or you can click in the Work section of the Task Details to see the task form which also offer the tasks operations.

She can also set up the Due Date for the task to match that with the Interview Meeting date. When the candidate assist to the Interview, Katy will  need to produce some information such as:

  • The candidate age
  • The candidate email
  • The score for the interview

In order to produce that information, she will need to access the Task Form, which can be accessed by clicking in the task row check icon or in the clicking on the Work in the Task Details panel.

Human Resources Interview

Human Resources Interview

Another important thing to notice here is that the task operations of save, release and complete the task will be logged and used to track down how the work is being performed. For example, how much time takes in average a Human Resources interview.

Notice that Katy requires to score the candidate at the end of the interview.

Technical Interview

After completing the Human Resources Interview, the candidate will require to do a Technical Interview to evaluate his/her technical skills. In this case a member of the IT team will be required to perform the Interview. Notice that the technical interview task for the IT team will be automatically created by the process instance, as soon as the HR interview task is finished. Also notice that you will need to logout the user Katy from the application and login as Jack or any other member of the IT team to be able to claim the Technical Interview task.

The Technical interview will require the following information to be provided:

  • The list of validated skills of the candidate
  • The twitter account
  • The score for the interview

As you can see in the following screenshot, some of the information collected in the HR Interview is used in the Tech Interview Task Form, to provide context to the interviewer.

Jack's Tasks

Jack’s Tasks

Once the Technical interview is completed the next task in the process will be created, and now it will be the turn of the Accounting team to work on Creating a Job Proposal and an Offer for the candidate if the interviews scores are OK.

You can log out as Jack and login as John in order to complete that task.

Process Instance Details

At all times you can go to the Process Management -> Process Instances to see the state of each of the process instances that you are running.

As you can see in the following screenshot you will have updated information about your process executions:

Instance Details

Instance Details

The Instance Log section gives you detailed information about when the process was created, when each specific task was created and which is  activity is being executed right now. You can also inspect the Process Variables going to the View -> Process Variables option.

As you may notice, in this screen you will be also able to signal an event to the process if its needed and abort the process instance if for some reason is not longer needed.

Summing Up

On this post we had quickly reviewed the screens that you will use most frequently inside the application. The main objective of these post is to help you to get used to the tools, so feel free to ask any question about it. In my next post I will be describing the configuration required to set up users/roles/groups and also we will extend the example to use Domain Specific Connectors for the Send Proposal and Tweet New Hire tasks that are being emulated now with a simple text output to the console.

Remember if you are London, don’t miss the opportunity to meet some community members here: http://salaboy.com/2013/10/04/drools-and-jbpm-6-workshops-2324-october-london/

About these ads
Tagged , , , , , , , , , , , , , , , , ,

41 thoughts on “Using the jBPM Console NG – HR Example

  1. anonymous says:

    Hi Salaboy. Is jBPM console ng & KIE IDE the same thing? What the ‘ng’ and ‘KIE’ means?

    • salaboy says:

      Hi anonymous!
      I will be explaining the differences between the console and KIE IDE in my next post.. It will probably go out on Monday. NG means New Generation, because it replaces the old gwt console provided by the 5.x version. KIE means “Knowledge is Everything”. This name serves as umbrella for all the project which we are integrating in the Drools & jBPM platform. That’s why we have KIE Workbench (WB) which is all the tooling integrated together, not just the BPM side like in the jbpm console ng.

      Cheers

  2. Dennis Jiang says:

    After I installed the JBPM-6.0.0-Final and followed the your instruction to run the HR example, the tasks of “hiring a developer” process instances are not shown in the katy’s task list. No error in the screen and log file.

  3. gareme says:

    Great example – I can start the process but when I try to complete the candidate name task I get the following error? I’m assuming I have configured something incorrectly. I am deployed on jboss 7.1.

    Caused by: javax.persistence.TransactionRequiredException: No active JTA transaction on joinTransaction call

    • salaboy says:

      Hi Gareme,
      Can you share more details about the error?
      Can you use paste bin to copy the full server.log file to see where the problem is happening? What exactly did you deployed in jboss? How did you deploy it? please elaborate more so I can help you

      • Hi salaboy, I have same error when inserting Candidate name in the Hiring Form,
        Process Instances failed to start: [hiring:3 - :1] — No active JTA transaction on joinTransaction call

        and here is error log in my JBOSS.

        10:18:58,173 WARN [org.hibernate.engine.jdbc.spi.SqlExceptionHelper] (http-127.0.0.1-127.0.0.1-9090-3) SQL Error: 1364, SQLState: HY000
        10:18:58,176 ERROR [org.hibernate.engine.jdbc.spi.SqlExceptionHelper] (http-127.0.0.1-127.0.0.1-9090-3) Field ‘id’ doesn’t have a default value
        10:18:58,178 WARN [org.jbpm.services.task.persistence.TaskTransactionInterceptor] (http-127.0.0.1-127.0.0.1-9090-3) Could not commit session: javax.persistence.PersistenceException: org.hibernate.exception.GenericJDBCException: Field ‘id’ doesn’t have a default value
        at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1361) [hibernate-entitymanager-4.0.1.Final.jar:4.0.1.Final]
        at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1289) [hibernate-entitymanager-4.0.1.Final.jar:4.0.1.Final]
        at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1295) [hibernate-entitymanager-4.0.1.Final.jar:4.0.1.Final]
        at org.hibernate.ejb.AbstractEntityManagerImpl.persist(AbstractEntityManagerImpl.java:859) [hibernate-entitymanager-4.0.1.Final.jar:4.0.1.Final]
        at org.jbpm.services.task.persistence.JPATaskPersistenceContext.persistTask(JPATaskPersistenceContext.java:83) [jbpm-human-task-core-6.0.1-20140120.jar:6.0.1-SNAPSHOT]
        at org.jbpm.services.task.impl.TaskInstanceServiceImpl.addTask(TaskInstanceServiceImpl.java:103) [jbpm-human-task-core-6.0.1-20140120.jar:6.0.1-SNAPSHOT]
        at org.jbpm.services.task.commands.AddTaskCommand.execute(AddTaskCommand.java:105) [jbpm-human-task-core-6.0.1-20140120.jar:6.0.1-SNAPSHOT]
        at org.jbpm.services.task.commands.AddTaskCommand.execute(AddTaskCommand.java:53) [jbpm-human-task-core-6.0.1-20140120.jar:6.0.1-SNAPSHOT]
        at org.jbpm.services.task.commands.TaskCommandExecutorImpl$SelfExecutionCommandService.execute(TaskCommandExecutorImpl.java:65) [jbpm-human-task-core-6.0.1-20140120.jar:6.0.1-SNAPSHOT]
        at org.drools.core.command.impl.AbstractInterceptor.executeNext(AbstractInterceptor.java:41) [drools-core-6.0.1.Final.jar:6.0.1.Final]
        at org.jbpm.services.task.persistence.TaskTransactionInterceptor.execute(TaskTransactionInterceptor.java:53) [jbpm-human-task-core-6.0.1-20140120.jar:6.0.1-SNAPSHOT]
        at org.jbpm.services.task.commands.TaskCommandExecutorImpl.execute(TaskCommandExecutorImpl.java:40) [jbpm-human-task-core-6.0.1-20140120.jar:6.0.1-SNAPSHOT]
        at org.jbpm.services.task.impl.command.CommandBasedTaskService.addTask(CommandBasedTaskService.java:471) [jbpm-human-task-core-6.0.1-20140120.jar:6.0.1-SNAPSHOT]
        at org.jbpm.runtime.manager.impl.task.SynchronizedTaskService.addTask(SynchronizedTaskService.java:456) [jbpm-runtime-manager-6.0.1.Final.jar:6.0.1.Final]
        at org.jbpm.services.task.wih.LocalHTWorkItemHandler.executeWorkItem(LocalHTWorkItemHandler.java:60) [jbpm-human-task-workitems-6.0.1.Final.jar:6.0.1.Final]
        at org.drools.persistence.jpa.processinstance.JPAWorkItemManager.internalExecuteWorkItem(JPAWorkItemManager.java:56) [drools-persistence-jpa-6.0.1.Final.jar:6.0.1.Final]
        at org.jbpm.workflow.instance.node.WorkItemNodeInstance.internalTrigger(WorkItemNodeInstance.java:124) [jbpm-flow-6.0.1.Final.jar:6.0.1.Final]
        at org.jbpm.workflow.instance.impl.NodeInstanceImpl.trigger(NodeInstanceImpl.java:155) [jbpm-flow-6.0.1.Final.jar:6.0.1.Final]
        at org.jbpm.workflow.instance.impl.NodeInstanceImpl.triggerNodeInstance(NodeInstanceImpl.java:337) [jbpm-flow-6.0.1.Final.jar:6.0.1.Final]
        at org.jbpm.workflow.instance.impl.NodeInstanceImpl.triggerCompleted(NodeInstanceImpl.java:296) [jbpm-flow-6.0.1.Final.jar:6.0.1.Final]
        at org.jbpm.workflow.instance.node.StartNodeInstance.triggerCompleted(StartNodeInstance.java:66) [jbpm-flow-6.0.1.Final.jar:6.0.1.Final]
        at org.jbpm.workflow.instance.node.StartNodeInstance.internalTrigger(StartNodeInstance.java:43) [jbpm-flow-6.0.1.Final.jar:6.0.1.Final]
        at org.jbpm.workflow.instance.impl.NodeInstanceImpl.trigger(NodeInstanceImpl.java:155) [jbpm-flow-6.0.1.Final.jar:6.0.1.Final]
        at org.jbpm.ruleflow.instance.RuleFlowProcessInstance.internalStart(RuleFlowProcessInstance.java:35) [jbpm-flow-6.0.1.Final.jar:6.0.1.Final]
        at org.jbpm.process.instance.impl.ProcessInstanceImpl.start(ProcessInstanceImpl.java:222) [jbpm-flow-6.0.1.Final.jar:6.0.1.Final]
        at org.jbpm.workflow.instance.impl.WorkflowProcessInstanceImpl.start(WorkflowProcessInstanceImpl.java:358) [jbpm-flow-6.0.1.Final.jar:6.0.1.Final]
        at org.jbpm.process.instance.ProcessRuntimeImpl.startProcessInstance(ProcessRuntimeImpl.java:189) [jbpm-flow-6.0.1.Final.jar:6.0.1.Final]
        at org.jbpm.process.instance.ProcessRuntimeImpl.startProcess(ProcessRuntimeImpl.java:171) [jbpm-flow-6.0.1.Final.jar:6.0.1.Final]
        at org.drools.core.common.AbstractWorkingMemory.startProcess(AbstractWorkingMemory.java:1580) [drools-core-6.0.1.Final.jar:6.0.1.Final]
        at org.drools.core.impl.StatefulKnowledgeSessionImpl.startProcess(StatefulKnowledgeSessionImpl.java:366) [drools-core-6.0.1.Final.jar:6.0.1.Final]
        at org.drools.core.command.runtime.process.StartProcessCommand.execute(StartProcessCommand.java:121) [drools-core-6.0.1.Final.jar:6.0.1.Final]
        at org.drools.core.command.runtime.process.StartProcessCommand.execute(StartProcessCommand.java:40) [drools-core-6.0.1.Final.jar:6.0.1.Final]
        at org.drools.core.command.impl.DefaultCommandService.execute(DefaultCommandService.java:36) [drools-core-6.0.1.Final.jar:6.0.1.Final]
        at org.drools.core.command.impl.AbstractInterceptor.executeNext(AbstractInterceptor.java:41) [drools-core-6.0.1.Final.jar:6.0.1.Final]
        at org.drools.persistence.SingleSessionCommandService$TransactionInterceptor.execute(SingleSessionCommandService.java:527) [drools-persistence-jpa-6.0.1.Final.jar:6.0.1.Final]
        at org.drools.core.command.impl.AbstractInterceptor.executeNext(AbstractInterceptor.java:41) [drools-core-6.0.1.Final.jar:6.0.1.Final]
        at org.drools.persistence.jpa.OptimisticLockRetryInterceptor.execute(OptimisticLockRetryInterceptor.java:73) [drools-persistence-jpa-6.0.1.Final.jar:6.0.1.Final]
        at org.drools.persistence.SingleSessionCommandService.execute(SingleSessionCommandService.java:375) [drools-persistence-jpa-6.0.1.Final.jar:6.0.1.Final]
        at org.drools.core.command.impl.CommandBasedStatefulKnowledgeSession.startProcess(CommandBasedStatefulKnowledgeSession.java:232) [drools-core-6.0.1.Final.jar:6.0.1.Final]
        at org.jbpm.console.ng.bd.backend.server.KieSessionEntryPointImpl.startProcess(KieSessionEntryPointImpl.java:74) [jbpm-console-ng-business-domain-backend-6.0.1.Final.jar:6.0.1.Final]
        at org.jbpm.console.ng.bd.backend.server.KieSessionEntryPointImpl$Proxy$_$$_WeldClientProxy.startProcess(KieSessionEntryPointImpl$Proxy$_$$_WeldClientProxy.java) [jbpm-console-ng-business-domain-backend-6.0.1.Final.jar:6.0.1.Final]
        at org.jbpm.console.ng.ht.backend.server.FormModelerProcessStarterEntryPointImpl.startProcessFromRenderContext(FormModelerProcessStarterEntryPointImpl.java:44) [jbpm-console-ng-human-tasks-backend-6.0.1.Final.jar:6.0.1.Final]
        at org.jbpm.console.ng.ht.backend.server.FormModelerProcessStarterEntryPointImpl$Proxy$_$$_WeldClientProxy.startProcessFromRenderContext(FormModelerProcessStarterEntryPointImpl$Proxy$_$$_WeldClientProxy.java) [jbpm-console-ng-human-tasks-backend-6.0.1.Final.jar:6.0.1.Final]
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [rt.jar:1.6.0_43]
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) [rt.jar:1.6.0_43]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) [rt.jar:1.6.0_43]
        at java.lang.reflect.Method.invoke(Method.java:597) [rt.jar:1.6.0_43]
        at org.jboss.errai.bus.server.io.AbstractRPCMethodCallback.invokeMethodFromMessage(AbstractRPCMethodCallback.java:48) [errai-bus-2.4.3.Final.jar:2.4.3.Final]
        at org.jboss.errai.bus.server.io.ValueReplyRPCEndpointCallback.callback(ValueReplyRPCEndpointCallback.java:22) [errai-bus-2.4.3.Final.jar:2.4.3.Final]
        at org.jboss.errai.bus.server.io.RemoteServiceCallback.callback(RemoteServiceCallback.java:54) [errai-bus-2.4.3.Final.jar:2.4.3.Final]
        at org.jboss.errai.cdi.server.CDIExtensionPoints$3.callback(CDIExtensionPoints.java:499) [errai-weld-integration-2.4.3.Final.jar:2.4.3.Final]
        at org.jboss.errai.bus.server.DeliveryPlan.deliver(DeliveryPlan.java:47) [errai-bus-2.4.3.Final.jar:2.4.3.Final]
        at org.jboss.errai.bus.server.ServerMessageBusImpl.sendGlobal(ServerMessageBusImpl.java:284) [errai-bus-2.4.3.Final.jar:2.4.3.Final]
        at org.jboss.errai.bus.server.SimpleDispatcher.dispatchGlobal(SimpleDispatcher.java:46) [errai-bus-2.4.3.Final.jar:2.4.3.Final]
        at org.jboss.errai.bus.server.service.ErraiServiceImpl.store(ErraiServiceImpl.java:92) [errai-bus-2.4.3.Final.jar:2.4.3.Final]
        at org.jboss.errai.bus.server.service.ErraiServiceImpl.store(ErraiServiceImpl.java:109) [errai-bus-2.4.3.Final.jar:2.4.3.Final]
        at org.jboss.errai.bus.server.servlet.DefaultBlockingServlet.doPost(DefaultBlockingServlet.java:140) [errai-bus-2.4.3.Final.jar:2.4.3.Final]
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:754) [jboss-servlet-api_3.0_spec-1.0.0.Final.jar:1.0.0.Final]
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:847) [jboss-servlet-api_3.0_spec-1.0.0.Final.jar:1.0.0.Final]
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:329) [jbossweb-7.0.13.Final.jar:]
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248) [jbossweb-7.0.13.Final.jar:]
        at org.jboss.weld.servlet.ConversationPropagationFilter.doFilter(ConversationPropagationFilter.java:62) [weld-core-1.1.5.AS71.Final.jar:2012-02-10 15:31]
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:280) [jbossweb-7.0.13.Final.jar:]
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248) [jbossweb-7.0.13.Final.jar:]
        at org.jboss.solder.servlet.exception.CatchExceptionFilter.doFilter(CatchExceptionFilter.java:65) [solder-impl-3.2.1.Final.jar:3.2.1.Final]
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:280) [jbossweb-7.0.13.Final.jar:]
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248) [jbossweb-7.0.13.Final.jar:]
        at org.jboss.solder.servlet.event.ServletEventBridgeFilter.doFilter(ServletEventBridgeFilter.java:74) [solder-impl-3.2.1.Final.jar:3.2.1.Final]
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:280) [jbossweb-7.0.13.Final.jar:]
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248) [jbossweb-7.0.13.Final.jar:]
        at org.jbpm.designer.web.filter.impl.PluggableFilter.doFilter(PluggableFilter.java:70) [jbpm-designer-backend-6.0.1.Final.jar:6.0.1.Final]
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:280) [jbossweb-7.0.13.Final.jar:]
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248) [jbossweb-7.0.13.Final.jar:]
        at org.uberfire.security.server.UberFireSecurityFilter.doFilter(UberFireSecurityFilter.java:266) [uberfire-security-server-0.3.1.Final.jar:0.3.1.Final]
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:280) [jbossweb-7.0.13.Final.jar:]
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248) [jbossweb-7.0.13.Final.jar:]
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:275) [jbossweb-7.0.13.Final.jar:]
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161) [jbossweb-7.0.13.Final.jar:]
        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:489) [jbossweb-7.0.13.Final.jar:]
        at org.jboss.as.jpa.interceptor.WebNonTxEmCloserValve.invoke(WebNonTxEmCloserValve.java:50) [jboss-as-jpa-7.1.1.Final.jar:7.1.1.Final]
        at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:153) [jboss-as-web-7.1.1.Final.jar:7.1.1.Final]
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:155) [jbossweb-7.0.13.Final.jar:]
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) [jbossweb-7.0.13.Final.jar:]
        at org.apache.catalina.authenticator.SingleSignOn.invoke(SingleSignOn.java:416) [jbossweb-7.0.13.Final.jar:]
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) [jbossweb-7.0.13.Final.jar:]
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:368) [jbossweb-7.0.13.Final.jar:]
        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:877) [jbossweb-7.0.13.Final.jar:]
        at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:671) [jbossweb-7.0.13.Final.jar:]
        at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:930) [jbossweb-7.0.13.Final.jar:]
        at java.lang.Thread.run(Thread.java:662) [rt.jar:1.6.0_43]
        Caused by: org.hibernate.exception.GenericJDBCException: Field ‘id’ doesn’t have a default value

        ….. more

      • Hi salaboy, I got solution …
        the problem is related with issue :

        https://issues.jboss.org/browse/JBPM-3862

        I’m using MySQL InnoDB and JBPM 6.0.1, in jbpm-persistence-JPA2.xml

        change to :

        and also change :

        to :

    • Hi Gareme I got solution, maybe you can try this ..

      Im using MySQL innoDB, JBPM 6.0.1 and JBOSS AS 7.1.1 FInal

      http://pastebin.com/maX9pFTx

      Rebuild jbpm-console

      • salaboy says:

        Hi Guys, can you do me a favor and test it with 6.1.CR1? I think that this issue is already solved in the new version. Just to be sure that you can easily migrate later on. Regards

  4. graeme says:

    log files

    http://pastebin.com/65SqXznw

    we’ve deployed jbpm-console.war deployed in jboss7.1 (not through the installer)

    I can pastbin any config files you wish as well…

  5. salaboy says:

    The question is which war did you deployed? Where did you get the war, can you share the link please?

  6. graeme says:

    where did i get it? Not sure I can remember from where… probably an old installer version

    link here

    https://www.axa-travel-insurance.com/sandbox/html/jbpm-console.war

    where should i get it from? :) Happy to get latest as it may be old…

  7. graeme says:

    I have nstalled the latest jbpm-console.war from the installer and I now get further. thanks for your help!

  8. open.source.knowledge says:

    Donde podría encontrar esta información en español?

    • salaboy says:

      No creo que este en español. Con translate.google.com puedes traducir los artículos y leerlos ahi. Toda la documentación se genera en ingles y seria una muy buena contribución proveer las traducciones al español como así a otros idiomas.
      Saludos

  9. […] all, this is a follow up post from my previous entry about how to use the jBPM Console. The main idea of this post is to describe some of the most common configurations that you will […]

  10. Haichen says:

    How does the Form work together with user tasker ? For example the form ‘CreateProposal-taskform’ and user task ‘CreateProposal’.

    • salaboy says:

      Yeah, it works based on the Task Name of the User Task. Take a look at the properties panel in the User Task. You can auto generate forms and then modify them in the process designer.

  11. Shaimaa Ward says:

    Dear Salaboy
    i am asking about how to add a CSS file to JBPM 6 Project on workbench to be used in the forms

    • salaboy says:

      Hi Shaimaa,
      What kind of forms are you using inside the workbench? Are you using FTLs? or Forms created with the Form Modeller?

      • Shaimaa Ward says:

        forms created with form builder i added Short Text Field and i need to set CSS class for it

  12. Shaimaa Ward says:

    forms created with form builder i added Short Text Field and i need to set CSS class for it

  13. pefernan says:

    Hi Shaimaa,

    there are two ways to do it, if you open the field properties window you there are two properties that can help you:

    ‘Style class': where you can specify a class name / class names that you want to apply to your field.

    ‘CSS style': in that property you can write the CSS attributes that you want to use.

    I’d recomend you to use the ‘CSS style’ instead of ‘Style class’ since to use the ‘Style class’ you have to override the form-modeler core css.

    Also exist the same properties to modify the input label (‘Label CSS class’ y ‘Label CSS style’)

    • Shaimaa Ward says:

      Thanks Pefernan , Can you tell me how to override the form-modeler core css as i need to use style Class

      • pefernan says:

        At the moment the only way to override the css would be editting it directly and adding your styles there, we still don’t provide a mechanism to add your classes there. You can find it inside your war on “/formModeler/css/styles.css”

  14. Shaimaa Ward says:

    Thanks pefernan

  15. ESSID Saria says:

    Hi Sir,

    It is an example that helps me a lot .
    But, I encounter a problem !.
    When I logged in using (salaboy, salaboy), It works well.
    But when I logged in using {(admin, admin); (krisv, krisv); … }, the Process Id was started.
    and as consequence in **Instance Details>Views**, the task “HR Interview” is considered like a current activity.
    Once, I navigate to **Task>Tasks List**, I didn’t found any task.
    However when I try with other business processes for example “Evaluation”, it worked well with all users {(admin, admin); (krisv, krisv); (salaboy, salaboy)… }
    I couldn’t know what’s the problem?

    Could you please help me ?.
    Thanks in advance.

  16. Shaimaa Ward says:

    Dears
    Can I change the background image or color for the forms I created from Form Builder???

  17. Luis Tabares says:

    Listo me quedo todo bien, solo una duda, como puedo persistir la información de ciertas tablas(bamtasksummay,processinstanceinfo etc)ya que se borran después de hacer logoff, para luego mostrarlo en los reportes, ya que solo vive esa información on session, alguna idea?.. muchas gracias por esta información

    Saludos

    • salaboy says:

      Que base de datos estas usando? El problema mas normal es que la instalación por defecto usa H2 y cuando apagas el servidor la base datos se borra, si configuras un MySQL o PostgreSQL la información va a quedar.
      Saludos

      • Luis Tabares says:

        ya la configure para mysql, y las tablas procesinstanceinfo,workiteminfo,bamtasksummary estan vacias,cuando se termina el proceso, pero si no me salgo de la sesión de usuario si aparecen datos,solo cuando termino la tarea o me deslogeo la tabla se vacía. le movi en Knoledge bases and session para ver si ahi hay que configurar para persistir esas tablas, alguna idea ?? Gracias por responder

        Saludos

  18. checowebmty says:

    Hola,

    Es posible restringir quien inicia un proceso?

    Saludos,
    Sergio

    • salaboy says:

      Hola Sergio, si se puede restringir que rol puede ver cada kjar (proyecto) es decir que si hay varias definiciones de procesos en esos proyectos se pueden separar (visibilidad) por rol.

      Saludos

  19. salaboy says:

    Tienes que ver los deployment descriptors, esto esta desde la version 6.1 community -> http://docs.jboss.org/jbpm/v6.1.0.CR1/userguide/jBPMRuntimeManagement.html#d0e11030

    Mira el tag que dice Required Roles

  20. Milla says:

    Dear Salaboy, i’m new in BPM and i was trying to create a couple of BP using KIE workbench 6.0 (i guess i get the latest version) and for me is not very clear several aspects:
    1. How i can copy one BP to another? I tried to go Save->Copy->Copy this Item -> I put the new name for the BP and i keep getting an Error: Unable to complete your request. The following exception occurred: null.
    2. How to use Subprocesses. I mean the diffrent features of them. I couldn’n find any documentation which would explain all example i found are very basic. Is there any tutorial, some video where i can see the usage of the subprocesses and other objects in jbpm web console?
    3. If i want to share or deploy in some other PC the project i’ve created, what file (or list of files) would be necessary to copy and where they are located on my PC? I assume the other PC should have in any case the jbpm installer in there or it would be enaugh to have some limited set of installation to just deploy and run the predefined processes?
    Thanks in advance,
    Mila

    • salaboy says:

      Hi Milla,
      Sorry for the late reply, first of all thanks for writing.
      let me try to answer your questions:

      1) I’m not a jbpm designer expert, but if you are using the web application I usually copy the BPMN2 xml and then when you create another empty process you can paste the bpmn2 xml in an option of the top menu.

      2) Usually you need to try it out and then we can answer specific question, unfortunately I don’t have enough time to create tutorial on all the features, I would love to.. but I don’t have enough spare time.

      3) the KIE-WB works with a GIT backend, which means that you can share a repository hosted in github.com for example. In order to do that you need to create a repository in github, clone it from within the tool, create your process, processes, etc. When you want to share the project status you will need to push the changes to the remote github repository from outside the kie-wb. In order to do that you can access to the kie-wb repository which is stored in the .niogit directory inside your local installation. Notice that because it start with a (dot) it is a hidden directory. I will suggest you to learn a little bit more about git if all these answer seems to technical.

      HTH
      Regards

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Follow

Get every new post delivered to your Inbox.

Join 973 other followers

%d bloggers like this: