Grails 如何在activiti中获取枚举值,activiti中FormProperty的getType()的返回类型是什么?

Grails 如何在activiti中获取枚举值,activiti中FormProperty的getType()的返回类型是什么?,grails,enums,activiti,bpmn,Grails,Enums,Activiti,Bpmn,我想获取枚举属性的值。 在activiti 5.13用户指南中 可以使用formProperty.getType().getInformation(“值”)访问枚举值 在activiti文档中,getType()的返回类型为FormType。但在我的代码中,getType()返回类型是String。所以我无法调用FormType的getInformation()方法 当我使用formProperty.getType().getInformation(“值”)时,我得到了以下错误 Cannot

我想获取枚举属性的值。

在activiti 5.13用户指南中

可以使用
formProperty.getType().getInformation(“值”)访问枚举值

在activiti文档中,getType()的返回类型为FormType。但在我的代码中,getType()返回类型是String。所以我无法调用FormType的getInformation()方法

当我使用
formProperty.getType().getInformation(“值”)
时,我得到了以下错误

Cannot cast object 'enum' with class 'java.lang.String' to class 'org.activiti.engine.form.FormType'.
如何获取enum的值?


<userTask id="handleRequest" name="Handle vacation request" activiti:candidateGroups="management">
  <documentation>${employeeName} would like to take ${numberOfDays} day(s) of vacation (Motivation: ${vacationMotivation}).</documentation>
  <extensionElements>
    <activiti:formProperty id="vacationApproved" name="Do you approve this vacation" type="enum" required="true">
      <activiti:value id="true" name="Approve"></activiti:value>
      <activiti:value id="false" name="Reject"></activiti:value>
    </activiti:formProperty>
    <activiti:formProperty id="managerMotivation" name="Motivation" type="string"></activiti:formProperty>
  </extensionElements>
</userTask>
${employeeName}想休${numberOfDays}天的假(动机:${vacationMotivation})。
考虑上面的用户任务,您可以这样做

//passing Task Id and Process definition Id

    def getFormForTask(taskId,pdId) {

        RepositoryService repositoryService =processEngine.getRepositoryService()

        // getting model 
        BpmnModel model = repositoryService.getBpmnModel(pdId);

        // getting list process from model including tasks
        List<Process> processes = model.getProcesses()

        List<FormProperty> taskFormPropertyList =[]

        for(Process proc : processes) {
            for(Object obj : proc.getFlowElements()) {
                // need form Property only for User Task
                if(obj instanceof UserTask) {
                    UserTask userTask = (UserTask)obj
                    if(userTask.getId() == taskId){
                     // getting list of Form Property from task that matches taskId
                        taskFormPropertyList = userTask.getFormProperties()
                    }
                }

            }
        }

    // loop through from Property
        taskFormPropertyList.each {
            // getFormValues() returns Property values for the form Property (like enum)
            def fvlist = it.getFormValues()
            fvlist.each {
               //  prints id, in this case true and false
                println it.getId()

              // prints name, in this case Approve and Reject
                println it.getName()
            }
        }

    }
//传递任务Id和进程定义Id
def GetFormFortTask(任务ID、pdId){
RepositoryService RepositoryService=processEngine.getRepositoryService()
//获取模型
BpmnModel model=repositoryService.getBpmnModel(pdId);
//从包含任务的模型中获取列表进程
列表进程=model.getprocesss()
列表taskFormPropertyList=[]
for(流程过程:流程){
对于(对象对象对象:proc.getFlowElements()){
//仅用户任务需要表单属性
if(用户任务的obj实例){
UserTask UserTask=(UserTask)obj
if(userTask.getId()==taskId){
//从任务中获取与taskId匹配的表单属性列表
taskFormPropertyList=userTask.getFormProperties()
}
}
}
}
//从属性循环通过
taskFormPropertyList.each{
//getFormValues()返回表单属性的属性值(如枚举)
def fvlist=it.getFormValues()
fvlist.each{
//打印id,在本例中为true和false
println it.getId()
//打印名称,在本例中为批准和拒绝
println it.getName()
}
}
}

它看起来很奇怪。这段代码应该可以工作,可能是您无意中调用了formProperty.getType().getName(),它为EnumFormTypeHi Atmta返回“enum”字符串,谢谢您的回复。是的,这个代码是正确的。但我不知道为什么它不起作用。对我来说,formProperty.getType()返回枚举。你能试着调试它吗?