ประเภทที่ไม่รู้จัก 'processDefinition' ภายใน FormService

ขณะนี้เรากำลังเขียนส่วนหน้าใหม่ให้กับ Activiti โดยใช้ Grails เพื่อนำเสนอ UI ที่กำหนดเองแก่ผู้ใช้เมื่อจัดการงานและกรอกข้อมูลที่เกี่ยวข้อง

เราสามารถสืบค้น Activiti Engine และส่งคืนรายการงานได้ รหัสต่อไปนี้ทำงานได้ตามที่เราคาดหวัง และ (พร้อมกับมุมมอง) ให้รายการงานพื้นฐาน - ชื่อ คำอธิบาย ฯลฯ :

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 ในบางจุด หรืออย่างน้อยก็มีไลบรารี่ที่สามารถสร้างได้ ขออภัย เราไม่สามารถระบุวิธีการดังกล่าวได้แน่ชัด

แล้วเราพลาดอะไรไปที่จะทำให้สิ่งนี้ได้ผล? หรืออีกทางหนึ่ง จริงๆ แล้วเรากำลังเดินไปในเส้นทางที่ผิดโดยสิ้นเชิงและมีวิธีแก้ปัญหาที่ดีกว่าสำหรับสิ่งที่เราต้องการ (โดยไม่ต้องค้นหาตารางฐานข้อมูลโดยตรงซึ่งเราพยายามหลีกเลี่ยง) หรือไม่?


person Adrian Wragg    schedule 03.07.2014    source แหล่งที่มา


คำตอบ (1)


ดูเหมือนว่าข้อผิดพลาดประเภทนี้จะปรากฏขึ้นเมื่อคุณกำหนดฟิลด์แบบฟอร์มด้วยประเภทแบบกำหนดเองที่ไม่ได้ลงทะเบียน หากคุณกำลังพยายามแสดงฟิลด์แบบฟอร์มที่เปิดเผยคำจำกัดความกระบวนการของคุณ ฉันพบโพสต์บล็อกที่ดีที่อาจเกี่ยวข้อง ที่นี่

โดยทั่วไปคุณต้องกำหนดประเภทที่คุณกำหนดเอง (ในกรณีนี้คือ 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()]
    }
}
person Manuel Vio    schedule 03.07.2014