起步软件技术论坛
搜索
 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 10649|回复: 15

[处理中6] 关于流转结束事件为执行KSQL语句

[复制链接]

61

主题

188

帖子

887

积分

高级会员

Rank: 4

积分
887
发表于 2015-3-23 23:07:48 | 显示全部楼层 |阅读模式
版本: 小版本号:
数据库: 服务器操作系统: 应用服务器:
客户端操作系统: 浏览器:
在流程流转事件,修改项目状态字段fXMJD正常,但是在结束事件,也获取到了数据的fid(代码中:processid),但是未能修改项目状态字段fXMJD为完结.

编码: JUSTEP150210; 提示: 执行KSQL出错, KSQL: update SJ_XMJCXX t set t.fXMJD= '完结' where t.fid='9925B63D188943488E27A2896D691EFD'
编码: JUSTEP154038; 提示: t.fid找不到对应的关系映射

  1.         public static void sjxmxxProcessAfterAdvance() {
  2.         //流程级的流转事件
  3.                 ProcessControl flowControl = (ProcessControl)ContextHelper.getActionContext().getParameter("control");
  4.                         String sActivityNames = null;
  5.                         for (ProcessControlItem to : flowControl.getFlowTos()) {
  6.                                 sActivityNames = to.getTask().getActivityName();
  7.                                 }
  8.                 System.out.print(sActivityNames);
  9.                 String processid = com.justep.system.process.ProcessUtils.getProcessData1();
  10.                 String ksql = null;
  11.                 ksql = "update SJ_XMJCXX t set t.fXMJD= '"+sActivityNames+"' where t= '"+processid+"'";
  12.                 KSQL.executeUpdate(ksql, null, "/InvestmentAudit/xmgl/data",null);
  13.         }




  14.         public static void sjxmxxProcessAfterFinish() {
  15.         //流程级完成事件
  16.                 String processid = com.justep.system.process.ProcessUtils.getProcessData1();
  17.                 System.out.printf("项目编码:"+processid);
  18.                 String ksql = "update SJ_XMJCXX t set t.fXMJD= '完结' where t.fid='"+processid+"'"; -----报错
  19.                 // String ksql = "update SJ_XMJCXX t set t.fXMJD= '完结' where t ='"+processid+"'";  -------代码正确执行,但未修改
  20.                 KSQL.executeUpdate(ksql, null, "/InvestmentAudit/xmgl/data",null);
  21.         }
复制代码



发表于 2015-3-23 23:16:53 | 显示全部楼层
update SJ_XMJCXX t set t.fXMJD= '完结' where t='9925B63D188943488E27A2896D691EFD'

t即代表主键,不需要写t.fid了。

评分

参与人数 1 +4 收起 理由
jishuang + 4 赞一个!

查看全部评分

回复 支持 反对

使用道具 举报

61

主题

188

帖子

887

积分

高级会员

Rank: 4

积分
887
 楼主| 发表于 2015-3-23 23:42:16 | 显示全部楼层
本帖最后由 lovejsp 于 2015-3-23 23:46 编辑
lanware_smf 发表于 2015-3-23 23:16
update SJ_XMJCXX t set t.fXMJD= '完结' where t='9925B63D188943488E27A2896D691EFD'

t即代表主键,不需 ...

String ksql = "update SJ_XMJCXX t set t.fXMJD= '完结' where t ='"+processid+"'";  
这样写的话,代码执行了没报错,但是没修改成功,纳闷了
回复 支持 反对

使用道具 举报

发表于 2015-3-24 10:20:24 | 显示全部楼层
lovejsp 发表于 2015-3-23 23:42
String ksql = "update SJ_XMJCXX t set t.fXMJD= '完结' where t ='"+processid+"'";  
这样写的话,代码 ...

输出ksql看看呢,到数据库能执行吧
回复 支持 反对

使用道具 举报

61

主题

188

帖子

887

积分

高级会员

Rank: 4

积分
887
 楼主| 发表于 2015-3-24 13:01:38 | 显示全部楼层
项目编码:BECC068FF49D4B33B7E5EAAB31A7D617
update SJ_XMJCXX t set t.fXMJD= '完结' where t ='BECC068FF49D4B33B7E5EAAB31A7D617'
上面的输出的语句,数据库没有修改成功~
回复 支持 反对

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
35920
发表于 2015-3-24 15:36:25 | 显示全部楼层
lovejsp 发表于 2015-3-24 13:01
项目编码:BECC068FF49D4B33B7E5EAAB31A7D617
update SJ_XMJCXX t set t.fXMJD= '完结' where t ='BECC068FF ...

ksql是找的概念和关系,关系中没有fID,如果要过滤主键就用概念别名,不能写fid

如果写sql直接查的是数据库,可以写fid
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



如按照该方法解决,请及时跟帖,便于版主结贴
回复 支持 反对

使用道具 举报

61

主题

188

帖子

887

积分

高级会员

Rank: 4

积分
887
 楼主| 发表于 2015-3-24 15:40:32 | 显示全部楼层
jishuang 发表于 2015-3-24 15:36
ksql是找的概念和关系,关系中没有fID,如果要过滤主键就用概念别名,不能写fid

如果写sql直接查的是数 ...

我修改成这样了
String ksql = "update SJ_XMJCXX t set t.fXMJD= '完结' where t ='"+processid+"'";
下面的输出processid和ksql的语句,但是数据库没有修改成功~
项目编码:BECC068FF49D4B33B7E5EAAB31A7D617
update SJ_XMJCXX t set t.fXMJD= '完结' where t ='BECC068FF49D4B33B7E5EAAB31A7D617'

回复 支持 反对

使用道具 举报

发表于 2015-3-24 15:41:54 | 显示全部楼层
lovejsp 发表于 2015-3-24 15:40
我修改成这样了
String ksql = "update SJ_XMJCXX t set t.fXMJD= '完结' where t ='"+processid+"'";
...

目前写的整个的后台代码看看呢
回复 支持 反对

使用道具 举报

61

主题

188

帖子

887

积分

高级会员

Rank: 4

积分
887
 楼主| 发表于 2015-3-24 23:08:05 | 显示全部楼层
本帖最后由 lovejsp 于 2015-3-24 23:09 编辑

这个是流程的java文件代码

  1. public class SjxmxxProcess {

  2.         public static void sjxmxxProcessBeforeSaveSJ_XMJCXXAction() {
  3.                   Table table = (Table)ContextHelper.getActionContext().getParameter("table");
  4.     //获得所有新增的行
  5.              Iterator<Row>   rows = table.iterator(com.justep.system.data.ModifyState.NEW );   
  6.              SimpleDateFormat sDateFormat = new SimpleDateFormat("yyyy");
  7.              String date = sDateFormat.format(new java.util.Date());      
  8.                 while (rows.hasNext()){
  9.                        Row row = rows.next();  
  10.                         String a=BizUtils.createNextSequenceString("SJXM"+date,"0000");   
  11.                         row.setValue("fSJXMBM",a);
  12.         }
  13. }
  14.         
  15.         public static void sjxmxxProcessAfterAbort() {
  16.         //流程终止
  17.                 String processid = com.justep.system.process.ProcessUtils.getProcessData1();
  18.                 String ksql = "update SJ_XMJCXX t set t.fXMJD= '已终止' where t= '"+processid+"'";
  19.                 KSQL.executeUpdate(ksql, null, "/InA/xmgl/data",null);
  20.         }
  21.         public static void sjxmxxProcessAfterBack() {
  22.         //流程级回退
  23.                 ProcessControl flowControl = (ProcessControl)ContextHelper.getActionContext().getParameter("control");
  24.                         String sActivityNames = null;
  25.                         for (ProcessControlItem to : flowControl.getFlowTos()) {
  26.                                 sActivityNames = to.getTask().getActivityName();
  27.                                 }
  28.                 String processid = com.justep.system.process.ProcessUtils.getProcessData1();
  29.                 String ksql = null;
  30.                 ksql = "update SJ_XMJCXX t set t.fXMJD= '"+sActivityNames+"' where t= '"+processid+"'";
  31.                 KSQL.executeUpdate(ksql, null, "/InA/xmgl/data",null);
  32.         }

  33.         public static void sjxmxxProcessAfterAdvance() {
  34.         //流程级的流转事件
  35.                 ProcessControl flowControl = (ProcessControl)ContextHelper.getActionContext().getParameter("control");
  36.                         String sActivityNames = null;
  37.                         for (ProcessControlItem to : flowControl.getFlowTos()) {
  38.                                 sActivityNames = to.getTask().getActivityName();
  39.                                 }
  40.                 System.out.print(sActivityNames);
  41.                 String processid = com.justep.system.process.ProcessUtils.getProcessData1();
  42.                 String ksql = null;
  43.                 ksql = "update SJ_XMJCXX t set t.fXMJD= '"+sActivityNames+"' where t= '"+processid+"'";
  44.                 KSQL.executeUpdate(ksql, null, "/InA/xmgl/data",null);
  45.         }




  46.         public static void sjxmxxProcessAfterFinish() {
  47.         //流程级完成事件
  48.                 String processid = com.justep.system.process.ProcessUtils.getProcessData1();
  49.                 System.out.printf("项目编码:"+processid);
  50.                 String ksql = "update SJ_XMJCXX t set t.fXMJD= '完结' where t ='"+processid+"'";
  51.                 // String ksql = "update SJ_XMJCXX t set t.fXMJD= '完结' where t ='"+processid+"'";  -------代码正确执行,但未修改
  52.                 System.out.printf(ksql);
  53.                 KSQL.executeUpdate(ksql, null, "/InA/xmgl/data",null);
  54.         }
  55. }
复制代码
回复 支持 反对

使用道具 举报

61

主题

188

帖子

887

积分

高级会员

Rank: 4

积分
887
 楼主| 发表于 2015-3-24 23:10:23 | 显示全部楼层
其他事件修改状态字段fXMJD都正常,只有流程级完成事件这个不行
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|X3技术论坛|Justep Inc.    

GMT+8, 2024-5-2 23:51 , Processed in 0.074246 second(s), 26 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表