Exorcismus
Exorcismus

Reputation: 2482

Integrating Activiti with JSF

Am trying to start activiti engine from jsf

@ManagedBean(name = "activitiProcess")
@ViewScoped
public class ActivitiProcess implements Serializable {

    private String  filename    = "D:/WORKSPACE/activiti1/src/main/resources/diagrams/MyProcess.bpmn";

    public ActivitiProcess() {

    }

    public void startProcess() {

        System.out.println("hello world");
        try {

            ProcessEngine engine = ProcessEngines.getDefaultProcessEngine(); //returns null


            RepositoryService repositoryService = engine.getRepositoryService();
            repositoryService.createDeployment().addInputStream("myProcess.bpmn20.xml", new FileInputStream(filename)).deploy();
            RuntimeService runtimeService = engine.getRuntimeService();

            ProcessDefinition definition = engine.getRepositoryService().createProcessDefinitionQuery().processDefinitionKey("myProcess").singleResult();

            FormService formService = engine.getFormService();
            // List<FormProperty> formList = formService.getStartFormData(definition.getId()).getFormProperties();

            Map<String, String> formProperties = new HashMap<String, String>();
            /* use the jsf variable instead */
            formProperties.put("filePath", "D://somePath");
            formService.submitStartFormData(definition.getId(), formProperties);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

}

the engine always returns as null , I read that the activiti.cfg.xml file should be in the class path , I've put the file under web-inf/classes but still , engine returns null which means activiti can't initialize the engine , any ideas ?

Upvotes: 1

Views: 148

Answers (1)

idirene youcef
idirene youcef

Reputation: 1985

add this

@Inject
 private ProcessEngine engine;

if you want to run a CDI Bean inside a container, you are not allowed to use the new keyword. Instead, you need to inject the bean and the container does the rest, meaning, the container is the one responsible for managing the life cycle of the bean: it creates the instance; it gets rid of it. So how do you initialize a bean if you can’t call a constructor? Well, the container gives you a handle after constructing an instance and before destroying it.

Upvotes: 1

Related Questions