【问题标题】:Integrating Activiti with JSF将 Activiti 与 JSF 集成
【发布时间】:2014-10-12 08:40:18
【问题描述】:

我正在尝试从 jsf 启动 activiti 引擎

@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();
        }
    }

}

引擎总是返回 null ,我读到 activiti.cfg.xml 文件应该在类路径中,我已经把文件放在 web-inf/classes 下,但是引擎返回 null 这意味着 activiti 可以' t 初始化引擎,有什么想法吗?

【问题讨论】:

标签: jsf activiti bpmn


【解决方案1】:

添加这个

@Inject
 private ProcessEngine engine;

如果要在容器内运行 CDI Bean,则不允许使用 new 关键字。相反,您需要注入 bean 并且容器会执行 rest,意思是容器负责管理bean的生命周期:它创建实例;它摆脱了它。那么,如果不能调用构造函数,如何初始化 bean?好吧,容器在构造实例之后销毁它之前给你一个句柄。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-02-01
    • 2011-02-05
    • 2011-02-18
    • 1970-01-01
    • 2012-09-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多