还是事物的问题,上次好了 这次不知道怎么,流程随便点了几次以后就卡死了,任何操作都不行。。,全部是等待状态。
NutzTransactionInterceptor
public class NutzTransactionInterceptor extends TransactionInterceptor {
private static final Logger log = LoggerFactory.getLogger(NutzTransactionInterceptor.class);
public void initialize(Object accessObject) {
//ignore
}
protected TransactionStatus getTransaction() {
try {
boolean isNew = Trans.get() == null;
Trans.begin(Connection.TRANSACTION_REPEATABLE_READ);
return new TransactionStatus(Trans.get(), isNew);
} catch (Exception e) {
log.error(e.getMessage(), e);
throw new RuntimeException(e.getMessage(), e);
}
}
protected void commit(TransactionStatus status) {
try {
Trans.commit();
} catch (Exception e) {
throw new RuntimeException(e.getMessage(), e);
} finally {
try {
Trans.close();
} catch (Exception e) {
log.error(e.getMessage(), e);
throw new RuntimeException(e.getMessage(), e);
}
}
}
protected void rollback(TransactionStatus status) {
try {
Trans.rollback();
} catch (Exception e) {
throw new RuntimeException(e.getMessage(), e);
} finally {
try {
Trans.close();
} catch (Exception e) {
log.error(e.getMessage(), e);
throw new RuntimeException(e.getMessage(), e);
}
}
}
}
SnakerIocLoader
/**
* 用法: 假设使用ComboIocLoader及流程文件位于flows目录.在@IocBy中声明 "*xxxxxx.xxx.x.x.SnakerIocLoader", "flows"
* @author wendal(wendal1985@gmail.com)
*
*/
public class SnakerIocLoader implements IocLoader {
private static final Log log = Logs.get();
protected IocObject iobj;
protected String name = "snakerEngine";
protected String dataSourceBeanName = "dataSource";
protected String factoryMethodName = "buildSnaker";
protected static String querySql = "select * from wf_process where name=? order by version desc";
public SnakerIocLoader(String...paths) {
// 手工构建一个nutz的ioc bean定义
iobj = new IocObject();
iobj.setFactory(SnakerIocLoader.class.getName() +"#" + factoryMethodName); // 调用本类的buildSnaker方法
iobj.setType(SnakerEngine.class); // 反馈类型
IocValue ds = new IocValue();
ds.setType(IocValue.TYPE_REFER);
ds.setValue(dataSourceBeanName); // 引用数据源
iobj.addArg(ds);
for (String path : paths) {
IocValue p = new IocValue();
p.setValue(path);
iobj.addArg(p);
}
if (log.isDebugEnabled())
log.debug("snakerflow bean will define as\n" + Json.toJson(iobj));
}
public static SnakerEngine buildSnaker(DataSource ds) throws IOException {
return buildSnaker(ds, new Object[]{});
}
public static SnakerEngine buildSnaker(DataSource ds, String path) throws IOException {
return buildSnaker(ds, new Object[]{path});
}
protected static SnakerEngine buildSnaker(DataSource ds, Object...paths) throws IOException {
// 首先,我们构建一个snaker的上下文
SimpleContext ctx = new SimpleContext();
// 将集成nutz所必须的两个类,关联之. 这样使用者仅需要声明本IocLoader即可完成全部配置
ctx.put(NutzAccess.class.getName(), NutzAccess.class);
ctx.put(NutzTransactionInterceptor.class.getName(), NutzTransactionInterceptor.class);
// 开始构建sanker的配置对象
Configuration cnf = new Configuration(ctx);
// fix : 事务拦截器直接放SimpleContext会不生效
Mirror.me(cnf).setValue(cnf, "interceptor", ctx.find(NutzTransactionInterceptor.class));
cnf.initAccessDBObject(ds);
SnakerEngine engine = cnf.buildSnakerEngine();
// 如果用户声明了流程描述文件的路径,加载之
if (paths != null) {
for (Object path : paths) {
for(NutResource re : Scans.me().scan(String.valueOf(path))) {
if (log.isDebugEnabled())
log.debug("Found snakerflow xml > " + re.getName());
//*********************************************************
// 这部分属于hack的部分, 因为snaker并不识别相同的流程配置,而是简单地作为新流程
// 所以,需要自行查询一下是不是数据相同,不一样的时候才deploy
byte[] data = Streams.readBytesAndClose(re.getInputStream());
ProcessModel model = ModelParser.parse(data);
List<Process> list = ctx.find(DBAccess.class).queryList(Process.class, querySql, model.getName());
if (!list.isEmpty()) {
Process p = list.get(0);
byte[] cnt = p.getDBContent();
if (cnt != null && Arrays.equals(cnt, data)) {
log.debug("Same snakerflow xml > " + re.getName() + " skiped");
continue;
}
}
//*********************************************************
// 同名的流程数据有更新或这是全新的流程,部署之
engine.process().deploy(new ByteArrayInputStream(data));
}
}
}
// 工厂方法完成, snaker引擎已经准备好了,可以返回了
return engine;
}
public String[] getName() {
// 这个类仅需要维护一个ioc bean的定义,所以就是单个name的数组咯
return new String[]{name};
}
public boolean has(String name) {
return this.name.equals(name); // 就一个ioc bean定义嘛
}
public IocObject load(IocLoading il, String name) throws ObjectLoadException {
if (this.name.equals(name))
return iobj;
throw new ObjectLoadException("Object '" + name + "' without define!");
}
}
流程操作的是
@At("/process")
@Ok("json")
public Object process(@Param("processId") String processId,@Param("orderId") String orderId,
@Param("taskId") String taskId,@Param("nextOperator") String nextOperator,
@Param("nodeName") String nodeName,@Param("ccOperator") String ccOperator,HttpServletRequest req) {
try{
Map<String, Object> params = new HashMap<String, Object>();
Enumeration<String> paraNames = req.getParameterNames();
while (paraNames.hasMoreElements()) {
String element = paraNames.nextElement();
int index = element.indexOf("_");
if(index == -1) {
params.put(element, req.getParameter(element));
} else {
char type = element.charAt(0);
String name = element.substring(index + 1);
Object value = null;
switch(type) {
case 'S':
value = req.getParameter(element);
break;
case 'I':
value = StringUtil.getParaToInt(req,element);
break;
case 'L':
value = StringUtil.getParaToLong(req,element);
break;
case 'B':
value = StringUtil.getParaToBoolean(req,element);
break;
case 'D':
value = StringUtil.getParaToDate(req,element);
break;
case 'N':
value = Double.parseDouble(req.getParameter(element));
break;
default:
value = req.getParameter(element);
break;
}
params.put(name, value);
}
}
if (StringUtils.isEmpty(orderId) && StringUtils.isEmpty(taskId)) {
startAndExecute(processId, ShiroUtils.getUsername(), params);
} else {
int method = StringUtil.getParaToInt(req,PARA_METHOD, 0);
switch(method) {
case 0://任务执行
execute(taskId, ShiroUtils.getUsername(), params);
break;
case -1://驳回、任意跳转
executeAndJump(taskId, ShiroUtils.getUsername(), params,nodeName);
break;
case 1://转办
if(StringUtils.isNotEmpty(nextOperator)) {
transferMajor(taskId, ShiroUtils.getUsername(), nextOperator.split(","));
}
break;
case 2://协办
if(StringUtils.isNotEmpty(nextOperator)) {
transferAidant(taskId, ShiroUtils.getUsername(), nextOperator.split(","));
}
break;
default:
execute(taskId, ShiroUtils.getUsername(), params);
break;
}
}
if(StringUtils.isNotEmpty(ccOperator)) {
engine.order().createCCOrder(orderId, ShiroUtils.getUsername(), ccOperator.split(","));
}
return Result.success("system.success");
} catch (Exception e) {
e.printStackTrace();
return Result.error("system.error");
}
}
不知道这个上面是否需要加@AOP类 我看jfaker中有@Before(Tx.class)
报错如下
insert into wf_task_actor (task_Id, actor_Id) values (?, ?)
2017-06-07 15:00:30,364 org.snaker.engine.access.jdbc.JdbcAccess.saveOrUpdate(JdbcAccess.java:171) ERROR - Lock wait timeout exceeded; try restarting transaction Query: insert into wf_task_actor (task_Id, actor_Id) values (?, ?) Parameters: [54c4ba245afc40e7b97a700ebe0a8a1b, superadmin]
java.sql.SQLException: Lock wait timeout exceeded; try restarting transaction Query: insert into wf_task_actor (task_Id, actor_Id) values (?, ?) Parameters: [54c4ba245afc40e7b97a700ebe0a8a1b, superadmin]
at org.apache.commons.dbutils.AbstractQueryRunner.rethrow(AbstractQueryRunner.java:392)
at org.apache.commons.dbutils.QueryRunner.update(QueryRunner.java:491)
at org.apache.commons.dbutils.QueryRunner.update(QueryRunner.java:404)
at org.snaker.engine.access.jdbc.JdbcAccess.saveOrUpdate(JdbcAccess.java:169)
at org.snaker.engine.access.AbstractDBAccess.saveTaskActor(AbstractDBAccess.java:264)
at org.snaker.engine.core.TaskService.assignTask(TaskService.java:308)
at org.snaker.engine.core.TaskService.saveTask(TaskService.java:429)
at org.snaker.engine.core.TaskService.createTask(TaskService.java:379)
at org.snaker.engine.core.TaskService$$EnhancerByCGLIB$$dd544ac7.CGLIB$createTask$5(<generated>)
at org.snaker.engine.core.TaskService$$EnhancerByCGLIB$$dd544ac7$$FastClassByCGLIB$$7b4622eb.invoke(<generated>)
at net.sf.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:215)
at org.snaker.engine.access.transaction.TransactionInterceptor.intercept(TransactionInterceptor.java:91)
at org.snaker.engine.core.TaskService$$EnhancerByCGLIB$$dd544ac7.createTask(<generated>)
at org.snaker.engine.handlers.impl.CreateTaskHandler.handle(CreateTaskHandler.java:53)
at org.snaker.engine.model.BaseModel.fire(BaseModel.java:47)
at org.snaker.engine.model.TransitionModel.execute(TransitionModel.java:66)
at org.snaker.engine.model.NodeModel.runOutTransition(NodeModel.java:92)
at org.snaker.engine.model.StartModel.exec(StartModel.java:41)
at org.snaker.engine.model.NodeModel.execute(NodeModel.java:81)
at org.snaker.engine.core.SnakerEngineImpl.startProcess(SnakerEngineImpl.java:241)
at org.snaker.engine.core.SnakerEngineImpl.startInstanceById(SnakerEngineImpl.java:196)
at org.snaker.engine.core.SnakerEngineImpl$$EnhancerByCGLIB$$5da1ed21.CGLIB$startInstanceById$6(<generated>)
at org.snaker.engine.core.SnakerEngineImpl$$EnhancerByCGLIB$$5da1ed21$$FastClassByCGLIB$$69ec0f5a.invoke(<generated>)
at net.sf.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:215)
at org.snaker.engine.access.transaction.TransactionInterceptor.intercept(TransactionInterceptor.java:91)
at org.snaker.engine.core.SnakerEngineImpl$$EnhancerByCGLIB$$5da1ed21.startInstanceById(<generated>)
at com.kanq.modules.controllers.platform.workflow.SnakerController.startAndExecute(SnakerController.java:158)
at com.kanq.modules.controllers.platform.workflow.FlowController.process(FlowController.java:138)
at com.kanq.modules.controllers.platform.workflow.FlowController$$FASTCLASS._invoke(FlowController.java:1)
at org.nutz.lang.reflect.AbstractFastClass.invoke(AbstractFastClass.java:143)
at org.nutz.lang.reflect.FastClassFactory.invoke(FastClassFactory.java:67)
at org.nutz.mvc.impl.processor.MethodInvokeProcessor.process(MethodInvokeProcessor.java:27)
at org.nutz.mvc.impl.processor.AbstractProcessor.doNext(AbstractProcessor.java:44)
at org.nutz.mvc.impl.processor.AdaptorProcessor.process(AdaptorProcessor.java:33)
at org.nutz.mvc.impl.processor.AbstractProcessor.doNext(AbstractProcessor.java:44)
at org.nutz.mvc.impl.processor.ActionFiltersProcessor.process(ActionFiltersProcessor.java:58)
at org.nutz.mvc.impl.processor.AbstractProcessor.doNext(AbstractProcessor.java:44)
at com.kanq.common.processor.XssSqlFilterProcessor.process(XssSqlFilterProcessor.java:33)
at org.nutz.mvc.impl.processor.AbstractProcessor.doNext(AbstractProcessor.java:44)
at com.kanq.common.processor.NutShiroProcessor.process(NutShiroProcessor.java:49)
at org.nutz.mvc.impl.processor.AbstractProcessor.doNext(AbstractProcessor.java:44)
at org.nutz.mvc.impl.processor.ModuleProcessor.process(ModuleProcessor.java:123)
at org.nutz.mvc.impl.processor.AbstractProcessor.doNext(AbstractProcessor.java:44)
at org.nutz.mvc.impl.processor.EncodingProcessor.process(EncodingProcessor.java:27)
at org.nutz.mvc.impl.processor.AbstractProcessor.doNext(AbstractProcessor.java:44)
at org.nutz.mvc.impl.processor.UpdateRequestAttributesProcessor.process(UpdateRequestAttributesProcessor.java:15)
at org.nutz.mvc.impl.processor.AbstractProcessor.doNext(AbstractProcessor.java:44)
at com.kanq.common.processor.GlobalsSettingProcessor.process(GlobalsSettingProcessor.java:33)
at org.nutz.mvc.impl.processor.AbstractProcessor.doNext(AbstractProcessor.java:44)
at com.kanq.common.processor.LogTimeProcessor.process(LogTimeProcessor.java:21)
at org.nutz.mvc.impl.NutActionChain.doChain(NutActionChain.java:44)
at org.nutz.mvc.impl.ActionInvoker.invoke(ActionInvoker.java:67)
at org.nutz.mvc.ActionHandler.handle(ActionHandler.java:31)
at org.nutz.mvc.NutFilter.doFilter(NutFilter.java:198)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:61)
at org.apache.shiro.web.servlet.AdviceFilter.executeChain(AdviceFilter.java:108)
at org.apache.shiro.web.servlet.AdviceFilter.doFilterInternal(AdviceFilter.java:137)
at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125)
at org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:66)
at org.apache.shiro.web.servlet.AbstractShiroFilter.executeChain(AbstractShiroFilter.java:449)
at org.apache.shiro.web.servlet.AbstractShiroFilter$1.call(AbstractShiroFilter.java:365)
at org.apache.shiro.subject.support.SubjectCallable.doCall(SubjectCallable.java:90)
at org.apache.shiro.subject.support.SubjectCallable.call(SubjectCallable.java:83)
at org.apache.shiro.subject.support.DelegatingSubject.execute(DelegatingSubject.java:383)
at org.apache.shiro.web.servlet.AbstractShiroFilter.doFilterInternal(AbstractShiroFilter.java:362)
at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:503)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:421)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1070)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:611)
at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.doRun(AprEndpoint.java:2466)
at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:2455)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:745)
2017-06-07 15:00:30,364 org.snaker.engine.access.jdbc.JdbcAccess.saveOrUpdate(JdbcAccess.java:171) ERROR - Lock wait timeout exceeded; try restarting transaction Query: insert into wf_task_actor (task_Id, actor_Id) values (?, ?) Parameters: [397d898bee3e4f4da3e6edda048d38ff, superadmin]
java.sql.SQLException: Lock wait timeout exceeded; try restarting transaction Query: insert into wf_task_actor (task_Id, actor_Id) values (?, ?) Parameters: [397d898bee3e4f4da3e6edda048d38ff, superadmin]
at org.apache.commons.dbutils.AbstractQueryRunner.rethrow(AbstractQueryRunner.java:392)
at org.apache.commons.dbutils.QueryRunner.update(QueryRunner.java:491)
at org.apache.commons.dbutils.QueryRunner.update(QueryRunner.java:404)
at org.snaker.engine.access.jdbc.JdbcAccess.saveOrUpdate(JdbcAccess.java:169)
at org.snaker.engine.access.AbstractDBAccess.saveTaskActor(AbstractDBAccess.java:264)
at org.snaker.engine.core.TaskService.assignTask(TaskService.java:308)
at org.snaker.engine.core.TaskService.saveTask(TaskService.java:429)
at org.snaker.engine.core.TaskService.createTask(TaskService.java:379)
at org.snaker.engine.core.TaskService$$EnhancerByCGLIB$$dd544ac7.CGLIB$createTask$5(<generated>)
at org.snaker.engine.core.TaskService$$EnhancerByCGLIB$$dd544ac7$$FastClassByCGLIB$$7b4622eb.invoke(<generated>)
at net.sf.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:215)
at org.snaker.engine.access.transaction.TransactionInterceptor.intercept(TransactionInterceptor.java:91)
at org.snaker.engine.core.TaskService$$EnhancerByCGLIB$$dd544ac7.createTask(<generated>)
at org.snaker.engine.handlers.impl.CreateTaskHandler.handle(CreateTaskHandler.java:53)
at org.snaker.engine.model.BaseModel.fire(BaseModel.java:47)
at org.snaker.engine.model.TransitionModel.execute(TransitionModel.java:66)
at org.snaker.engine.model.NodeModel.runOutTransition(NodeModel.java:92)
at org.snaker.engine.model.StartModel.exec(StartModel.java:41)
at org.snaker.engine.model.NodeModel.execute(NodeModel.java:81)
at org.snaker.engine.core.SnakerEngineImpl.startProcess(SnakerEngineImpl.java:241)
at org.snaker.engine.core.SnakerEngineImpl.startInstanceById(SnakerEngineImpl.java:196)
at org.snaker.engine.core.SnakerEngineImpl$$EnhancerByCGLIB$$5da1ed21.CGLIB$startInstanceById$6(<generated>)
at org.snaker.engine.core.SnakerEngineImpl$$EnhancerByCGLIB$$5da1ed21$$FastClassByCGLIB$$69ec0f5a.invoke(<generated>)
at net.sf.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:215)
at org.snaker.engine.access.transaction.TransactionInterceptor.intercept(TransactionInterceptor.java:91)
at org.snaker.engine.core.SnakerEngineImpl$$EnhancerByCGLIB$$5da1ed21.startInstanceById(<generated>)
at com.kanq.modules.controllers.platform.workflow.SnakerController.startAndExecute(SnakerController.java:158)
at com.kanq.modules.controllers.platform.workflow.FlowController.process(FlowController.java:138)
at com.kanq.modules.controllers.platform.workflow.FlowController$$FASTCLASS._invoke(FlowController.java:1)
at org.nutz.lang.reflect.AbstractFastClass.invoke(AbstractFastClass.java:143)
at org.nutz.lang.reflect.FastClassFactory.invoke(FastClassFactory.java:67)
at org.nutz.mvc.impl.processor.MethodInvokeProcessor.process(MethodInvokeProcessor.java:27)
at org.nutz.mvc.impl.processor.AbstractProcessor.doNext(AbstractProcessor.java:44)
at org.nutz.mvc.impl.processor.AdaptorProcessor.process(AdaptorProcessor.java:33)
at org.nutz.mvc.impl.processor.AbstractProcessor.doNext(AbstractProcessor.java:44)
at org.nutz.mvc.impl.processor.ActionFiltersProcessor.process(ActionFiltersProcessor.java:58)
at org.nutz.mvc.impl.processor.AbstractProcessor.doNext(AbstractProcessor.java:44)
at com.kanq.common.processor.XssSqlFilterProcessor.process(XssSqlFilterProcessor.java:33)
at org.nutz.mvc.impl.processor.AbstractProcessor.doNext(AbstractProcessor.java:44)
at com.kanq.common.processor.NutShiroProcessor.process(NutShiroProcessor.java:49)
at org.nutz.mvc.impl.processor.AbstractProcessor.doNext(AbstractProcessor.java:44)
at org.nutz.mvc.impl.processor.ModuleProcessor.process(ModuleProcessor.java:123)
at org.nutz.mvc.impl.processor.AbstractProcessor.doNext(AbstractProcessor.java:44)
at org.nutz.mvc.impl.processor.EncodingProcessor.process(EncodingProcessor.java:27)
at org.nutz.mvc.impl.processor.AbstractProcessor.doNext(AbstractProcessor.java:44)
at org.nutz.mvc.impl.processor.UpdateRequestAttributesProcessor.process(UpdateRequestAttributesProcessor.java:15)
at org.nutz.mvc.impl.processor.AbstractProcessor.doNext(AbstractProcessor.java:44)
at com.kanq.common.processor.GlobalsSettingProcessor.process(GlobalsSettingProcessor.java:33)
at org.nutz.mvc.impl.processor.AbstractProcessor.doNext(AbstractProcessor.java:44)
at com.kanq.common.processor.LogTimeProcessor.process(LogTimeProcessor.java:21)
at org.nutz.mvc.impl.NutActionChain.doChain(NutActionChain.java:44)
at org.nutz.mvc.impl.ActionInvoker.invoke(ActionInvoker.java:67)
at org.nutz.mvc.ActionHandler.handle(ActionHandler.java:31)
at org.nutz.mvc.NutFilter.doFilter(NutFilter.java:198)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:61)
at org.apache.shiro.web.servlet.AdviceFilter.executeChain(AdviceFilter.java:108)
at org.apache.shiro.web.servlet.AdviceFilter.doFilterInternal(AdviceFilter.java:137)
at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125)
at org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:66)
at org.apache.shiro.web.servlet.AbstractShiroFilter.executeChain(AbstractShiroFilter.java:449)
at org.apache.shiro.web.servlet.AbstractShiroFilter$1.call(AbstractShiroFilter.java:365)
at org.apache.shiro.subject.support.SubjectCallable.doCall(SubjectCallable.java:90)
at org.apache.shiro.subject.support.SubjectCallable.call(SubjectCallable.java:83)
at org.apache.shiro.subject.support.DelegatingSubject.execute(DelegatingSubject.java:383)
at org.apache.shiro.web.servlet.AbstractShiroFilter.doFilterInternal(AbstractShiroFilter.java:362)
at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:503)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:421)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1070)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:611)
at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.doRun(AprEndpoint.java:2466)
at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:2455)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:745)
2017-06-07 15:00:30,364 org.nutz.trans.Trans._rollback(Trans.java:111) DEBUG - Transaction delay rollback id=20, count=4
2017-06-07 15:00:30,373 org.nutz.trans.Trans._rollback(Trans.java:111) DEBUG - Transaction delay rollback id=21, count=4
2017-06-07 15:00:30,373 org.nutz.trans.Trans._rollback(Trans.java:111) DEBUG - Transaction delay rollback id=20, count=3
org.snaker.engine.SnakerException
2017-06-07 15:00:30,373 org.nutz.trans.Trans._rollback(Trans.java:111) DEBUG - Transaction delay rollback id=21, count=3
at org.snaker.engine.access.transaction.TransactionInterceptor.intercept(TransactionInterceptor.java:98)
at org.snaker.engine.core.SnakerEngineImpl$$EnhancerByCGLIB$$5da1ed21.startInstanceById(<generated>)
at com.kanq.modules.controllers.platform.workflow.SnakerController.startAndExecute(SnakerController.java:158)
at com.kanq.modules.controllers.platform.workflow.FlowController.process(FlowController.java:138)
at com.kanq.modules.controllers.platform.workflow.FlowController$$FASTCLASS._invoke(FlowController.java:1)
at org.nutz.lang.reflect.AbstractFastClass.invoke(AbstractFastClass.java:143)
at org.nutz.lang.reflect.FastClassFactory.invoke(FastClassFactory.java:67)
at org.nutz.mvc.impl.processor.MethodInvokeProcessor.process(MethodInvokeProcessor.java:27)
at org.nutz.mvc.impl.processor.AbstractProcessor.doNext(AbstractProcessor.java:44)
at org.nutz.mvc.impl.processor.AdaptorProcessor.process(AdaptorProcessor.java:33)
at org.nutz.mvc.impl.processor.AbstractProcessor.doNext(AbstractProcessor.java:44)
at org.nutz.mvc.impl.processor.ActionFiltersProcessor.process(ActionFiltersProcessor.java:58)
at org.nutz.mvc.impl.processor.AbstractProcessor.doNext(AbstractProcessor.java:44)
at com.kanq.common.processor.XssSqlFilterProcessor.process(XssSqlFilterProcessor.java:33)
at org.nutz.mvc.impl.processor.AbstractProcessor.doNext(AbstractProcessor.java:44)
at com.kanq.common.processor.NutShiroProcessor.process(NutShiroProcessor.java:49)
at org.nutz.mvc.impl.processor.AbstractProcessor.doNext(AbstractProcessor.java:44)
at org.nutz.mvc.impl.processor.ModuleProcessor.process(ModuleProcessor.java:123)
at org.nutz.mvc.impl.processor.AbstractProcessor.doNext(AbstractProcessor.java:44)
at org.nutz.mvc.impl.processor.EncodingProcessor.process(EncodingProcessor.java:27)
at org.nutz.mvc.impl.processor.AbstractProcessor.doNext(AbstractProcessor.java:44)
at org.nutz.mvc.impl.processor.UpdateRequestAttributesProcessor.process(UpdateRequestAttributesProcessor.java:15)
at org.nutz.mvc.impl.processor.AbstractProcessor.doNext(AbstractProcessor.java:44)
at com.kanq.common.processor.GlobalsSettingProcessor.process(GlobalsSettingProcessor.java:33)
at org.nutz.mvc.impl.processor.AbstractProcessor.doNext(AbstractProcessor.java:44)
at com.kanq.common.processor.LogTimeProcessor.process(LogTimeProcessor.java:21)
at org.nutz.mvc.impl.NutActionChain.doChain(NutActionChain.java:44)
at org.nutz.mvc.impl.ActionInvoker.invoke(ActionInvoker.java:67)
at org.nutz.mvc.ActionHandler.handle(ActionHandler.java:31)
at org.nutz.mvc.NutFilter.doFilter(NutFilter.java:198)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:61)
at org.apache.shiro.web.servlet.AdviceFilter.executeChain(AdviceFilter.java:108)
at org.apache.shiro.web.servlet.AdviceFilter.doFilterInternal(AdviceFilter.java:137)
at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125)
at org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:66)
at org.apache.shiro.web.servlet.AbstractShiroFilter.executeChain(AbstractShiroFilter.java:449)
at org.apache.shiro.web.servlet.AbstractShiroFilter$1.call(AbstractShiroFilter.java:365)
at org.apache.shiro.subject.support.SubjectCallable.doCall(SubjectCallable.java:90)
at org.apache.shiro.subject.support.SubjectCallable.call(SubjectCallable.java:83)
at org.apache.shiro.subject.support.DelegatingSubject.execute(DelegatingSubject.java:383)
at org.apache.shiro.web.servlet.AbstractShiroFilter.doFilterInternal(AbstractShiroFilter.java:362)
at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:503)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:421)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1070)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:611)
at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.doRun(AprEndpoint.java:2466)
at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:2455)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:745)
Caused by: org.snaker.engine.SnakerException
at org.snaker.engine.access.transaction.TransactionInterceptor.intercept(TransactionInterceptor.java:98)
at org.snaker.engine.core.TaskService$$EnhancerByCGLIB$$dd544ac7.createTask(<generated>)
at org.snaker.engine.handlers.impl.CreateTaskHandler.handle(CreateTaskHandler.java:53)
at org.snaker.engine.model.BaseModel.fire(BaseModel.java:47)
at org.snaker.engine.model.TransitionModel.execute(TransitionModel.java:66)
at org.snaker.engine.model.NodeModel.runOutTransition(NodeModel.java:92)
at org.snaker.engine.model.StartModel.exec(StartModel.java:41)
at org.snaker.engine.model.NodeModel.execute(NodeModel.java:81)
at org.snaker.engine.core.SnakerEngineImpl.startProcess(SnakerEngineImpl.java:241)
at org.snaker.engine.core.SnakerEngineImpl.startInstanceById(SnakerEngineImpl.java:196)
at org.snaker.engine.core.SnakerEngineImpl$$EnhancerByCGLIB$$5da1ed21.CGLIB$startInstanceById$6(<generated>)
at org.snaker.engine.core.SnakerEngineImpl$$EnhancerByCGLIB$$5da1ed21$$FastClassByCGLIB$$69ec0f5a.invoke(<generated>)
at net.sf.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:215)
at org.snaker.engine.access.transaction.TransactionInterceptor.intercept(TransactionInterceptor.java:91)
... 61 more
已经改的差不多了 不希望 放弃啊 麻烦帮忙看看 谢谢了。