【工作流前进之路】Activiti数据查询排序

2024-03-15 06:08

本文主要是介绍【工作流前进之路】Activiti数据查询排序,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

     学习过SQL的人都知道,在数据库中运用Asc和Desc方法来进行排序,在工作流中,亦还是运用这两个方法来进行排序,因为工作流最终的还是需要和数据库进行交互.


     在我的前一篇博客<<【工作流前进之路】Activiti权限之用户组-数据查询>>中曾介绍到过一个借口叫做query,Query中也提供了Asc和Desc方法设置查询结果的排序方式,使用这两个方法的前提是必须告诉Query 对象是按照何种条件进行排序的.比如说常用的按照ID升序,按照Name降序.为了好理解,看看下面的例子:

<span style="font-family:FangSong_GB2312;font-size:18px;">/*** 利用Asc和Desc进行排序* * @author huan* */
public class Sort {public static void main(String[] args) {// 创建流程引擎ProcessEngine engine = ProcessEngines.getDefaultProcessEngine();// 得到身份服务组件实例IdentityService identityService = engine.getIdentityService();// 调用orderByGroupId和asc方法,结果按照ID升序排序System.out.println("asc 排序结果");List<Group> datas = identityService.createGroupQuery().orderByGroupId().<span style="color:#ff0000;"><strong>asc()</strong></span>.list();for(Group data:datas){System.out.println(data.getId() + "-----" + data.getName() +" ");}// 调用orderByGroupName 和desc 方法,结果按照Name降序排序System.out.println("desc 排序结果");datas = identityService.createGroupQuery().orderByGroupName().<span style="color:#ff0000;"><strong>desc()</strong></span>.list();for(Group data:datas){System.out.println(data.getId() + "-----" + data.getName() + " ");}}
}</span>
运行结果如下:

     对于排序的结果,很可能你会问,为什么会这种现象呢.产生这种现象的原因是由于ID_序列段数据类型是字符型,以我用的Mysql为例,如果字段类型Wie字符型,而实际存储的是数据的话,那么进行排序时,会将其看作字符型,因此会产生如下看似错乱的样子.


     在前面我们说了使用Asc或者Desc方法排序的时候,必须指明按照何种条件排序,如果为指明条件,就会抛出ActivitiException异常,异常信息如下:

Exception in thread "main" org.activiti.engine.ActivitiException: You should call any of the orderBy methods first before specifying a direction
at org.activiti.engine.impl.AbstractQuery.direction(AbstractQuery.java:86)
at org.activiti.engine.impl.AbstractQuery.asc(AbstractQuery.java:76)
at org.crazyit.activiti.Sort.main(Sort.java:25)

     

     在实际应用中,除了按照单个字段排序以外,还有可能需要按照多个字段进行排序,例如根据名称降序,根据ID升序.那么在调用Asc和Desc方法时就需要注意,Asc方法和Desc方法会更加Query实例中的orderproperty属性来决定排序的字段,然后调用Asc或Desc方法时,就会根据当前Query实例所持有的orderproperty属性来创建orderBy语句.具体实例如下:

<span style="font-family:FangSong_GB2312;font-size:18px;">/*** 多字段排序* @author huan**/
public class Sortmix {public static void main(String[] args) {//创建流程引擎ProcessEngine engine = ProcessEngines.getDefaultProcessEngine();//得到身份服务组件实例IdentityService identityService = engine.getIdentityService();//先按照id降序,名称升序排序System.out.println("ID降序排序");<span style="color:#ff0000;"><strong>List<Group> datas = identityService.createGroupQuery().orderByGroupId().desc().orderByGroupName().asc().list();</strong></span>for(Group data : datas){System.out.println(data.getId() + "-----" + data.getName() +" ");}System.out.println("\n名称降序排序");datas = identityService.createGroupQuery().orderByGroupId().asc().orderByGroupName().desc().list();for(Group data : datas){System.out.println(data.getId() + "-----" + data.getName() +" ");}}
}
</span>

运行结果:



     对于工作流的排序,其实咱们并不陌生,在SQL中遇见过,在VB,VB.NET,C#,JAVA项目中遇见过,它可以说就是咱们的老相识了。多和以前的知识结合,你会发现以一切都很简单的。

这篇关于【工作流前进之路】Activiti数据查询排序的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/811032

相关文章

SQL 中多表查询的常见连接方式详解

《SQL中多表查询的常见连接方式详解》本文介绍SQL中多表查询的常见连接方式,包括内连接(INNERJOIN)、左连接(LEFTJOIN)、右连接(RIGHTJOIN)、全外连接(FULLOUTER... 目录一、连接类型图表(ASCII 形式)二、前置代码(创建示例表)三、连接方式代码示例1. 内连接(I

Spring排序机制之接口与注解的使用方法

《Spring排序机制之接口与注解的使用方法》本文介绍了Spring中多种排序机制,包括Ordered接口、PriorityOrdered接口、@Order注解和@Priority注解,提供了详细示例... 目录一、Spring 排序的需求场景二、Spring 中的排序机制1、Ordered 接口2、Pri

Redis的数据过期策略和数据淘汰策略

《Redis的数据过期策略和数据淘汰策略》本文主要介绍了Redis的数据过期策略和数据淘汰策略,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录一、数据过期策略1、惰性删除2、定期删除二、数据淘汰策略1、数据淘汰策略概念2、8种数据淘汰策略

轻松上手MYSQL之JSON函数实现高效数据查询与操作

《轻松上手MYSQL之JSON函数实现高效数据查询与操作》:本文主要介绍轻松上手MYSQL之JSON函数实现高效数据查询与操作的相关资料,MySQL提供了多个JSON函数,用于处理和查询JSON数... 目录一、jsON_EXTRACT 提取指定数据二、JSON_UNQUOTE 取消双引号三、JSON_KE

查询SQL Server数据库服务器IP地址的多种有效方法

《查询SQLServer数据库服务器IP地址的多种有效方法》作为数据库管理员或开发人员,了解如何查询SQLServer数据库服务器的IP地址是一项重要技能,本文将介绍几种简单而有效的方法,帮助你轻松... 目录使用T-SQL查询方法1:使用系统函数方法2:使用系统视图使用SQL Server Configu

Python给Excel写入数据的四种方法小结

《Python给Excel写入数据的四种方法小结》本文主要介绍了Python给Excel写入数据的四种方法小结,包含openpyxl库、xlsxwriter库、pandas库和win32com库,具有... 目录1. 使用 openpyxl 库2. 使用 xlsxwriter 库3. 使用 pandas 库

SpringBoot定制JSON响应数据的实现

《SpringBoot定制JSON响应数据的实现》本文主要介绍了SpringBoot定制JSON响应数据的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们... 目录前言一、如何使用@jsonView这个注解?二、应用场景三、实战案例注解方式编程方式总结 前言

使用Python在Excel中创建和取消数据分组

《使用Python在Excel中创建和取消数据分组》Excel中的分组是一种通过添加层级结构将相邻行或列组织在一起的功能,当分组完成后,用户可以通过折叠或展开数据组来简化数据视图,这篇博客将介绍如何使... 目录引言使用工具python在Excel中创建行和列分组Python在Excel中创建嵌套分组Pyt

在Rust中要用Struct和Enum组织数据的原因解析

《在Rust中要用Struct和Enum组织数据的原因解析》在Rust中,Struct和Enum是组织数据的核心工具,Struct用于将相关字段封装为单一实体,便于管理和扩展,Enum用于明确定义所有... 目录为什么在Rust中要用Struct和Enum组织数据?一、使用struct组织数据:将相关字段绑

在Mysql环境下对数据进行增删改查的操作方法

《在Mysql环境下对数据进行增删改查的操作方法》本文介绍了在MySQL环境下对数据进行增删改查的基本操作,包括插入数据、修改数据、删除数据、数据查询(基本查询、连接查询、聚合函数查询、子查询)等,并... 目录一、插入数据:二、修改数据:三、删除数据:1、delete from 表名;2、truncate