Skip to content

createModelQuery

Flowable 7.1.0 摘要:创建流程模型查询对象,用于查询流程设计器创建的模型。

方法签名与说明

ModelQuery createModelQuery()

创建流程模型查询构建器。流程模型是在流程设计器中创建的、尚未部署的流程定义。

Returns:

  • ModelQuery - 流程模型查询构建器

常见使用场景

1. 流程设计器模型列表

在流程设计器中展示所有已创建的模型。

2. 模型版本管理

查询和管理流程模型的不同版本。

3. 模型部署前查询

在部署前查询模型信息,验证模型完整性。

Kotlin + Spring Boot 调用示例

示例1:查询所有模型

kotlin
import org.flowable.engine.RepositoryService
import org.springframework.stereotype.Service

@Service
class ModelQueryService(
    private val repositoryService: RepositoryService
) {
    
    /**
     * 查询所有流程模型
     * 企业场景:流程设计器模型列表
     */
    fun getAllModels(): List<Map<String, Any>> {
        val models = repositoryService.createModelQuery()
            .orderByCreateTime()
            .desc()
            .list()
        
        return models.map { model ->
            mapOf(
                "id" to model.id,
                "key" to model.key,
                "name" to model.name,
                "category" to model.category,
                "version" to model.version,
                "createTime" to model.createTime,
                "lastUpdateTime" to model.lastUpdateTime
            )
        }
    }
}

示例2:按类别查询模型

kotlin
import org.flowable.engine.RepositoryService
import org.springframework.stereotype.Service

@Service
class ModelCategoryService(
    private val repositoryService: RepositoryService
) {
    
    /**
     * 按类别查询模型
     * 企业场景:按业务模块分类展示模型
     */
    fun getModelsByCategory(category: String): List<Map<String, Any>> {
        val models = repositoryService.createModelQuery()
            .modelCategory(category)
            .orderByModelName()
            .asc()
            .list()
        
        return models.map { model ->
            mapOf(
                "id" to model.id,
                "name" to model.name,
                "key" to model.key,
                "version" to model.version
            )
        }
    }
}

示例3:模型搜索

kotlin
import org.flowable.engine.RepositoryService
import org.springframework.web.bind.annotation.*

@RestController
@RequestMapping("/api/models")
class ModelController(
    private val repositoryService: RepositoryService
) {
    
    /**
     * 搜索流程模型
     */
    @GetMapping
    fun searchModels(
        @RequestParam(required = false) keyword: String?,
        @RequestParam(required = false) category: String?,
        @RequestParam(defaultValue = "1") page: Int,
        @RequestParam(defaultValue = "10") size: Int
    ): Map<String, Any> {
        
        val query = repositoryService.createModelQuery()
        
        keyword?.let { query.modelNameLike("%$it%") }
        category?.let { query.modelCategory(it) }
        
        val total = query.count()
        val models = query
            .orderByLastUpdateTime()
            .desc()
            .listPage((page - 1) * size, size)
        
        return mapOf(
            "data" to models,
            "total" to total,
            "page" to page,
            "size" to size
        )
    }
}

注意事项

1. 模型与流程定义的区别

  • 模型是设计时的概念,未部署
  • 流程定义是部署后的可执行版本

2. 性能优化

  • 大数据量时使用分页查询

相关 API

  • RepositoryService.createModelQuery() - 查询模型
  • RepositoryService.newModel() - 创建新模型
  • RepositoryService.saveModel() - 保存模型
  • RepositoryService.deleteModel() - 删除模型

本文档说明

  • 基于 Flowable 7.1.0 版本编写
  • 所有示例均可直接在 Spring Boot + Kotlin 项目中使用