关键时刻发现我并不会,于是下定决心研究一下,发现jbpm4还是有些不尽人意,比如历史变量的保存问题就很让人郁闷。
获得jbpm4 hibernate session
/***@author
yhy
* 获得JBPM session
* @return Session:hibernate Session
*/
public Session getTaskSession(){
EnvironmentFactory environmentFactory = (EnvironmentFactory)
getProcessEngine();
Environment environment = environmentFactory.openEnvironment();
Session session = null;
try{
session = environment.get(Session.class);
}catch(Exception e){
e.printStackTrace();
}
return session;
}
创建query()
/**
* 创建query查询
* @param hql hql查询语句
* @return Query query查询器
*/
public Query creatQuery(String hql){
return getTaskSession().createQuery(hql);
}
分页查询
/**
* 分页查询
* @param sql hql sql
* @param pageSize 每页显示的数量
* @param ipage 页码
* @param parameterMap 参数map
* @return List 结果
*/
public List pageQuery(String sql, int pageSize,int ipage,Map<String, Object> parameterMap){
Query query = creatQuery(sql);
int startResult = (ipage -1)*pageSize + 1;
if (pageSize > 0 && startResult > 0) {
query.setFirstResult(startResult);
query.setMaxResults(pageSize);
}
//设置hql查询参数
parameterMap = parameterMap == null ? new HashMap<String, Object>() : parameterMap;
for (String key : parameterMap.keySet()) {
if (key != null && !"".equals(key)) {
Object value = parameterMap.get(key);
if (value != null) {
query.setParameter(key, value);
}
}
}
//返回结果
return query.list();
}
统计方法
/**
* 普通HQL统计查询
* @param sql 统计HQL
* @param parameterMap 参数map
* @return int 统计数
*/
@SuppressWarnings("unchecked")
public int query(String countSql, Map<String, Object> parameterMap){
Query query = creatQuery(countSql);
parameterMap = parameterMap == null ? new HashMap<String, Object>() : parameterMap;
for (String key : parameterMap.keySet()) { //进行迭代
if (key != null && !"".equals(key)) {
Object value = parameterMap.get(key);
if (value != null) {
query.setParameter(key, value); //加入查询条件
}
}
}
List list = query.list();
return ((Long) list.get(0)).intValue();
}
查询方法
/**
* 任务查询
* @return FindResult 查询结果
*/
public FindResult queryTask(int ipage,Map<String, String> formMap){
List result = new ArrayList();
String taskName = formMap.get("taskName");
Integer userId = (Integer) WebUtils.getAttribute("userId");
if(userId == null){
logger.info("[session已过期或者没有登录!请重新登录再试!]");
return new FindResult();
}
Map<String, Object> paramsMap = new HashMap();
paramsMap.put("userId", userId.toString());
String sql = "from org.jbpm.pvm.internal.task.ParticipationImpl t where t.userId = :userId";
String countsql = "select count(t.dbid) from org.jbpm.pvm.internal.task.ParticipationImpl t where t.userId = :userId";
if(StringUtils.isNotBlank(taskName)){
sql = sql + " and t.task.name = :taskName";
countsql = countsql + " and t.task.name = :taskName";
paramsMap.put("taskName", taskName);
}
int rowCount = JbpmUtils.query(countsql, paramsMap);
List<ParticipationImpl> list = JbpmUtils.pageQuery(sql, QcConstant.PAGE_SIZE, ipage, paramsMap);
for(ParticipationImpl task : list){
String exerciser = (String) task.getTask().getVariable("users");
Map map = new HashMap();
map.put("任务ID", task.getTask().getId());
map.put("任务名称", task.getTask().getName());
map.put("创建时间", task.getTask().getCreateTime());
map.put("执行人", exerciser.substring(exerciser.indexOf(",")+1));
map.put("form", task.getTask().getFormResourceName());
map.put("recordingId", JbpmUtils.getTaskService().getVariable(task.getTask().getId(), "recordingId"));
result.add(map);
}
FindResult findResult = new FindResult();
findResult.setResult(result);
findResult.setRowCount(rowCount);
findResult.setPageCount(getPageNum(rowCount));
return findResult;
}
FindResult的代码如下:
public class FindResult<T> {
/**
* 总页数
*/
private int pageCount;
/**
* 总行数
*/
private int rowCount;
/**
* 结果集
*/
private List<T> result;
public int getPageCount() {
if (result == null)
pageCount = 0;
return pageCount;
}
public void setPageCount(int pageCount) {
this.pageCount = pageCount;
}
public List<T> getResult() {
if (result == null)
result = new java.util.ArrayList<T>();
return result;
}
public void setResult(List<T> result) {
this.result = result;
}
public int getRowCount() {
if (result == null)
rowCount = 0;
return rowCount;
}
public void setRowCount(int rowCount) {
this.rowCount = rowCount;
}
}
分享到:
相关推荐
- **分页展示**:包括当前页码、每页显示条数、总记录数以及分页导航元素(如首页、上一页、下一页、尾页)。 - **分页Bean设计**:`PageView`类是实现分页功能的核心,包含以下属性: - `currentPage`:当前页码。...
28. **分页技术**:PageBean是一种Java中用于实现分页功能的对象,封装了分页的相关信息,如当前页、总页数、每页记录数等,简化了分页逻辑。 这些知识点涵盖了Java开发的多个方面,包括构建工具、框架、数据库、...
- **方法重载**:同一类中方法名相同但参数列表不同的多个方法。 ##### StringBuffer、StringBuilder与String的区别 - **String**:不可变字符串,适用于频繁读取而很少修改的情况。 - **StringBuilder**:可变...
- **基本示例**:通过示例了解JBPM的基本使用流程,如定义流程、启动流程实例、任务分配等。 - **借款申请流程**:以具体的业务场景为例,演示如何使用JBPM实现审批流程。 #### 其他实用技术 - **FCKEditor**:一...
本方案针对2025年深圳杯(东三省)B题,提供高质量成品文章、完整解题代码及所有结果表。内容涵盖Python和MATLAB双版本代码、PDF论文文档(附PDF转Word功能),并包含详细思路解析,助力参赛队伍高效完成比赛,冲刺高奖项。 【核心内容】 成品文章 包含完整解题思路、模型构建、数据分析与结果讨论。 格式规范,符合竞赛论文要求,可直接提交或稍作修改使用。 完整代码 提供Python和MATLAB两种语言实现,覆盖数据处理、模型训练、结果可视化全流程。 代码模块化设计,注释清晰,便于理解与二次开发。 结果表格 所有实验数据与结果均已整理成表,直观展示模型性能与对比分析。 PDF转Word支持 提供一键转换工具,方便用户根据需求调整论文格式。 【产品优势】 高效实用:成品论文与代码已通过严格测试,确保结果准确且可复现。 全面覆盖:从思路解析到最终成果,一站式解决参赛需求。 灵活便捷:支持多平台使用,网盘直发,后续更新免费获取。 【适用人群】 冲刺“妈妈杯”高奖项的参赛团队。 希望快速掌握解题思路与实现方法的学习者。 需要高质量参考材料的科研爱好者。 【交付清单】 成品论文(PDF+Word) Python/MATLAB代码包 数据集与结果表 PDF转Word工具
根据给定文法设计语法分析程序,要求如下:(1)使用递归子程序法,对文法定义的所有语法成分进行分析;(2)输入文件为testfile.txt,输出文件为output.txt。输出内容包括:1)按词法分析顺序,逐行输出单词信息(预读单词不输出);2)在分析特定语法成分结束前,另起一行输出该成分名称,如“<常量说明>”。该代码在CG实验平台满分通过,仅供参考。
极化码(Polar Code)是由土耳其科学家Erdal Arıkan在2009年提出的一种新型纠错编码技术。它通过利用信道的极化现象,将虚拟信道分为误码率接近0和接近1/2的两类。在编码设计中,数据被放置在误码率极低的信道上,从而实现高效的数据传输。极化码的主要优势在于其理论编码容量能够达到香农限,并且构造方法较为简单。 MATLAB是一种功能强大的数学计算和编程工具,广泛应用于科学研究和工程领域。在极化码的研究中,MATLAB可用于构建编码和解码算法,模拟数据在不同信道条件下的传输效果,验证理论性能,并优化相关参数。 SC(Successive Cancellation,逐位取消)译码是极化码的基本解码方法。它从最可靠的比特开始,依次解码每个虚拟信道,且每个比特的解码结果会影响后续比特的解码,因为它们之间存在依赖关系。虽然SC译码的实现较为简单,但其计算复杂度较高,随着码长的增加,解码时间会线性增长。 SCL(Successive Cancellation List,逐位取消列表)译码是SC译码的改进版本。它通过引入列表机制,同时处理多个路径,从而增强了错误校正能力,并在一定程度上降低了错误率。与SC译码相比,SCL译码虽然需要消耗更多的计算资源,但能够提供更好的性能。 一个完整的MATLAB仿真资源通常包含以下内容: 编码模块:用于实现极化码的生成,包括码字构造和极化矩阵操作等。 信道模型:用于模拟各种通信信道,例如AWGN(加性高斯白噪声)信道或衰落信道。 SC/SCL译码模块:包含SC译码和SCL译码的算法实现。 误码率(BER)计算:通过比较发送和接收的码字,计算误码率,以评估编码性能。 性能曲线绘制:绘制误码率与信噪比(SNR)之间的关系曲线,展示不同译码策略的性能差异。 使用说明:指导用户如何运行仿真,理解代码结构,以及如何调整参数以进行自定义实验。 代码注
ClazzController.java
qwq3 model 1use for ollama
cmd-bat-批处理-脚本-MinimizeWindow.zip
基于指针标注的中文医学文本实体关系抽取研究.pdf
二十四节气之大暑节气.pptx
cmd-bat-批处理-脚本-DEFRAG-W7.zip
cmd-bat-批处理-脚本-数据结构二叉树binaryTree.zip
cmd-bat-批处理-脚本-safepath.zip
该数据集为2004-2023年中国企业社会信任面板数据,涵盖全国31个省份的上市公司信息。数据基于中国企业家调查系统(CESS)的问卷调查结果,采用张维迎在《经济研究》中的研究方法构建:通过对1500多家企业调查“最守信用地区”的排序结果(前五位分别赋5至1分),以各省得票百分比为权重加权求和后取自然对数,形成三个核心指标: 社会信任1(trust1):各得分下加权占比 社会信任2(trust2):最值得信任地区的占比 社会信任3(trust3):加权占比数值的对数处理 数据包含证券代码、所属省份、年份、行业名称等字段,提供Excel和dta两种格式,适用于区域经济、企业信用、金融投资等领域的实证研究。原始数据来源及方法论详见参考文献:张维迎, 柯荣住. 信任及其解释: 来自中国的跨省调查分析[J]. 经济研究, 2002(10): 59-70+96。
cmd-bat-批处理-脚本-get-memory-size.zip
高安全领域可编程逻辑器件软件工程技术研究与应用.pdf
cmd-bat-批处理-脚本-网络通信-keyreader.zip
前不久发布的外面泛滥版本很大错误和少文件,今天分享一套可运营的版本不是外面泛滥的版本采集播放都OK完美运营 最新影视小程序安装说明: 1.安装环境: 建议服务器装Linux CentOS 7 系统宝塔面板。 环境用 1:Nginx 1.18.0 2:php7.0 — 安装fileinfo插件、redis、sg11扩展(然后重启php服务) 3:MySQL 5.6.50 本次操作需要用电脑或用挂机宝操作 反正必须电脑:源码文件以包含全部教程 弄完测试转圈圈就是合法域名或证书没弄好 自己检查一下 安装教程来保你上线 本人亲测分类需要刷新才可以出来 问题不大