grails - FormService中的未知类型 'processDefinition'

标签 grails groovy activiti

我们目前正在使用Grails向Activiti编写新的前端,以便在处理任务和填写相关数据时向用户提供自定义的UI。

我们能够查询Activiti Engine并返回任务列表;以下代码正在按我们期望的方式工作,并且(连同 View 一起)给出了基本的任务列表-名称,说明等:

def index() {
    def tasks = activitiService.findAllTasks(["sort": null, "offset": 0, "max": 10])
    [tasks: tasks]
}

但是,当我们尝试为单个任务拉回表单数据时(因此我们可以将表单显示给用户以完成操作):
def view(params) {

    def taskQuery = taskService.createTaskQuery()
    def task = taskQuery.taskId(params.id).singleResult();
    def form = formService.getRenderedTaskForm(params.id)

    [task: task, form: form]
}

抛出错误:
unknown type 'processDefinition' processDefinition

def form =行上;完整的跟踪是:
    Line | Method
->>   55 | parseFormPropertyType             in org.activiti.engine.impl.form.FormTypes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
|     61 | parseConfiguration                in org.activiti.engine.impl.form.DefaultFormHandler
|     34 | parseConfiguration . . . . . . .  in org.activiti.engine.impl.form.DefaultStartFormHandler
|     84 | createStartFormHandlers           in org.activiti.engine.impl.bpmn.parser.handler.StartEventParseHandler
|     58 | executeParse . . . . . . . . . .  in     ''
|     38 | executeParse                      in     ''
|     84 | parse . . . . . . . . . . . . . . in org.activiti.engine.impl.bpmn.parser.handler.AbstractBpmnParseHandler
|     27 | parse                             in org.activiti.engine.impl.bpmn.parser.handler.AbstractFlowNodeBpmnParseHandler
|     36 | parse . . . . . . . . . . . . . . in org.activiti.engine.impl.bpmn.parser.handler.AbstractActivityBpmnParseHandler
|     73 | parseElement                      in org.activiti.engine.impl.bpmn.parser.BpmnParseHandlers
|    435 | processFlowElements . . . . . . . in org.activiti.engine.impl.bpmn.parser.BpmnParse
|     88 | transformProcess                  in org.activiti.engine.impl.bpmn.parser.handler.ProcessParseHandler
|     49 | executeParse . . . . . . . . . .  in     ''
|     35 | executeParse                      in     ''
|     84 | parse . . . . . . . . . . . . . . in org.activiti.engine.impl.bpmn.parser.handler.AbstractBpmnParseHandler
|     73 | parseElement                      in org.activiti.engine.impl.bpmn.parser.BpmnParseHandlers
|    395 | transformProcessDefinitions . . . in org.activiti.engine.impl.bpmn.parser.BpmnParse
|    231 | execute                           in     ''
|    107 | deploy . . . . . . . . . . . . .  in org.activiti.engine.impl.bpmn.deployer.BpmnDeployer
|     50 | deploy                            in org.activiti.engine.impl.persistence.deploy.DeploymentManager
|    115 | resolveProcessDefinition . . . .  in     ''
|     65 | findDeployedProcessDefinitionById in     ''
|    751 | getTaskDefinition . . . . . . . . in org.activiti.engine.impl.persistence.entity.TaskEntity
|     54 | execute                           in org.activiti.engine.impl.cmd.GetRenderedTaskFormCmd
|     24 | execute . . . . . . . . . . . . . in org.activiti.engine.impl.interceptor.CommandInvoker
|     57 | execute                           in org.activiti.engine.impl.interceptor.CommandContextInterceptor
|     47 | doInTransaction . . . . . . . . . in org.activiti.spring.SpringTransactionInterceptor$1
|     45 | execute                           in org.activiti.spring.SpringTransactionInterceptor
|     31 | execute . . . . . . . . . . . . . in org.activiti.engine.impl.interceptor.LogInterceptor
|     40 | execute                           in org.activiti.engine.impl.cfg.CommandExecutorImpl
|     35 | execute . . . . . . . . . . . . . in     ''
|     46 | getRenderedTaskForm               in org.activiti.engine.impl.FormServiceImpl
|     22 | view . . . . . . . . . . . . . .  in TasksController.groovy
|    195 | doFilter                          in PageFragmentCachingFilter.java
|     63 | doFilter . . . . . . . . . . . .  in AbstractFilter.java
|   1145 | runWorker                         in java.util.concurrent.ThreadPoolExecutor
|    615 | run . . . . . . . . . . . . . . . in java.util.concurrent.ThreadPoolExecutor$Worker
^    744 | run                               in java.lang.Thread

我们似乎需要在某个时候将过程定义传递给formService,或者至少要有一个可用的库来创建它。不幸的是,我们一直无法确切地知道如何做到这一点。

所以-我们错过了什么可以使它正常工作?或者,我们是否真的完全走错了路线,并且有一个更好的解决方案来满足我们的需求(除了直接查询数据库表,我们试图避免这种情况)?

最佳答案

当您使用未注册的自定义类型定义表单字段时,似乎会出现这种错误。如果您试图显示一个显示您的流程定义的表单字段,那么我发现了一篇不错的博客文章,可能与here有关

基本上,您必须定义您的自定义类型(在本例中为ProcessDefinitionFormType)并将其注册在resources.groovy中:

processDefinitionFormType(org.unnoware.ProcessDefinitionFormType)
processEngineConfiguration(org.activiti.spring.SpringProcessEngineConfiguration) {

           // ... many other properties are set here, you may copy them from activiti plugin source

            customFormTypes = [ref('processDefinitionFormType')]
        }

编辑:

您也可以在“Config.groovy”中注册自定义类型:
beans {
    processEngineConfiguration {
            customFormTypes = [new org.unnoware.ProcessDefinitionFormType()]
    }
}

关于grails - FormService中的未知类型 'processDefinition',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24548712/

相关文章:

angularjs - 我的 AngularJS 应用程序应该使用一个主模块还是多个?

java - 如何获取在 hudson 中开始构建的用户的用户名

grails - Grails插件版本不兼容警告

scala - 对于基于 Play 2.0 的 Java 应用程序,我可以使用 groovy 模板而不是 scala 吗?

java - Activity :call the end event of the file bpmn (error case )

java - 如何从java程序启动activiti工作流程

grails - 将 spring-security-core 插件安装到插件中,然后将其安装在应用程序中

Grails url 重定向问题

tomcat - 如何在 Tomcat7 中部署 Grails 3.0.1 war 文件?

java - Activiti 与 Imixs 哪个工作流程更适合集成到现有应用程序?