工作流activiti5.6的数据库版本问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了工作流activiti5.6的数据库版本问题相关的知识,希望对你有一定的参考价值。

工作流activiti 里我用的mysql5.1.37的版本 其他工作流的配置文件都已经配好。为什么在执行ant demo.start的时候 还是发生的问题。 mysql server version 不正。如何解决。乱码先不考虑。
注明:activiti指南里面的mysql的测试版本是5.1.1

问题异常:
【[deploy-bar] ### The error may involve org.activiti.engine.impl.persistence.enti
ty.ResourceEntity.insertResource-Inline
[deploy-bar] ### The error occurred while setting parameters
[deploy-bar] ### Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorExceptio
n: You have an error in your SQL syntax; check the manual that corresponds to yo
ur MySQL server version for the right syntax to use near '??Tp×?t??÷¤?????

[deploy-bar] 8?SVXa??UVRX!a<?S?°???
[deploy-bar] [),§ @ì?ù>?à?&M??|á?…???S????r' at line 2
[deploy-bar] at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(E
xceptionFactory.java:8)】
问题已经解决 是因为另外一个软件的版本问题。activiti-modeler-5.6.war的版本要与activiti的版本一致。千万不要把build.xml里的 下载语句注释掉。

参考技术A 你好,请问一下哦
我在执行ant demo.start时,脚本完成后,会在浏览器内启动所有的 Activiti 的web应用,但却无法访问.你知道这个是怎么回事儿吗?
PS:我安装的版本是5.5
谢谢啦追问

控制台里报什么错?
你的WEB应用里的数据库配置正确么 一般是 activiti-cfg.jar里的activiti.cfg.xml文件改成你用的数据库配置。

追答

控制台没有报错,数据库配置正确,但是我是在build.mysql.properties中哦
PS:我这个是安装的时候,还没创建自己的web项目

追问

我也用的mysql 你要改我说的配置文件
要启动 发布好的tomcat

追答

恩,我试哈,谢谢啦

本回答被提问者采纳

Activiti工作流学习-----基于5.19.0版本

8.1.5 Start Event

继续上一篇的事件的分享笔记,Start Event指明该处是流程开始,至于开始事件的类型(消息到达开始,指定的事件循环开始等),定义如何开始是在开始事件圆圈图标里面的小图标表示,具体反映到xml中就是子元素的不同。

Start Event总是进行捕获:在任何时候等待相应的触发器触发。

下面展示start event的xml,其中initiator指的是流程发起人,流程开始后他将会被保存起来:

<startEvent id="request" activiti:initiator="xxx" />

而用户“xxx”在代码中实现同样的功能可以:

1 try {
2   identityService.setAuthenticatedUserId("bono");
3   runtimeService.startProcessInstanceByKey("someProcessKey");
4 } finally {
5   identityService.setAuthenticatedUserId(null);
6 }

使用在try-catch中使用IdentityService.setAuthenticatedUserId(String)方法。

8.1.6 None Start Event

一个none start event说的是在流程定义中没有没有定义触发器。意味着流程引擎不会让流程实例自动开始,需要由开发人员调用API实现(一般子流程就是这个样子):

1 ProcessInstance processInstance = runtimeService.startProcessInstanceByXXX();

一个none start event在activiti可视化插件中的样子:

技术分享

而bpmn文件中则是

<startEvent id="start" name="my start event" />

可以配置formKey属性:

<startEvent id="request" activiti:formKey="org/activiti/examples/taskforms/request.form" />

8.1.7 Timer Start Event

timer start event作用是在指定的时间启动流程实例。它主要用在在流程只需要启动一次或者流程循环启动。注意:子流程是不能有timer start event。一般的在流程发布后就启动流程,这时没有必要调用startProcessInstanceByXXX方法了,尽管调用是没有限制的,但是导致同一时刻有多个流程实例运行。同时如果流程有新的版本发布,timer start event只会启动最新的版本的流程定义。

在activiti可视化插件中的样子:

技术分享

pbmn文件的xml格式中:

<startEvent id="theStart">
  <timerEventDefinition>
    <timeCycle>R4/2011-03-11T12:13/PT5M</timeCycle>
</timerEventDefinition>
</startEvent>

或者指定事件启动:

<startEvent id="theStart">
  <timerEventDefinition>
    <timeDate>2011-03-11T12:13:14</timeDate>
  </timerEventDefinition>
</startEvent>

8.1.7  Message Start Event

一个Message Start Event会使用命名的消息启动流程实例,在有很多start event时候通过消息命名可以选择正确的start event来启动流程实例用到。

在发布流程定义一个或者多个的时候,需要注意一些问题:

每个message start event的名称在流程定义中确保唯一的,在流程定义中没有必要使得多个message start event的名字相同。在多个message start event引用的消息都相同的时候,工作流会抛出异常。

升级流程版本后,此前的message start event将会被新版本的message start event代替。

调用RunTimeService的API:

ProcessInstance startProcessInstanceByMessage(String messageName);
ProcessInstance startProcessInstanceByMessage(String messageName, Map<String, Object> processVariables);
ProcessInstance startProcessInstanceByMessage(String messageName, String businessKey, Map<String, Object< processVariables);

其中messageName是messageEventDefinition中messageRef引用message节点中name的值。message start event只支持顶层流程,不支持子流程。调用runtimeService.startProcessInstanceByMessage(…?)可以选定message event。对于使用方法runtimeService.startProcessInstanceByKey(…?) 和runtimeService.startProcessInstanceById(…?)是使用了none start event,如果此时定义了多个message event会抛出异常。

技术分享

 例如在messageEventDefinition节点中配置:

<definitions id="definitions"
  xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL"
  xmlns:activiti="http://activiti.org/bpmn"
  targetNamespace="Examples"
  xmlns:tns="Examples">

  <message id="newInvoice" name="newInvoiceMessage" />

  <process id="invoiceProcess">

    <startEvent id="messageStart" >
        <messageEventDefinition messageRef="tns:newInvoice" />
    </startEvent>
    ...
  </process>

</definitions>

 8.1.8 Signal Start Event

使用命名的信号进行启动流程实例,信号在在流程中间信号抛出或者调用API(runtimeService.signalEventReceivedXXX方法)触发,所有的流程定义如果有相同名称的信号事件,都会被启动。另外在这两种情况下,都可以选择同步或异步的方式启动流程实例。

其中调用API的参数signalName来自流程定义中signalEventDefinition节点的signalRef的配置,而signalRef来自signal的属性name。signal start event的可视化符号为下图所示:

技术分享

解析为xml:

 1 <signal id="theSignal" name="The Signal" />
 2 
 3 <process id="processWithSignalStart1">
 4   <startEvent id="theStart">
 5     <signalEventDefinition id="theSignalEventDefinition" signalRef="theSignal"  />
 6   </startEvent>
 7   <sequenceFlow id="flow1" sourceRef="theStart" targetRef="theTask" />
 8   <userTask id="theTask" name="Task in process A" />
 9   <sequenceFlow id="flow2" sourceRef="theTask" targetRef="theEnd" />
10       <endEvent id="theEnd" />
11 </process>

8.1.9 Error Start Event

一个error start event在子流程中常用,并且它并不能用在启动一个流程实例。错误开始事件都是中断事件。error start event的可视化符号为下图所示:

技术分享

解析为xml为:

1 <startEvent id="messageStart" >
2     <errorEventDefinition errorRef="someError" />
3 </startEvent>

一个结束事件常常用在流程和子流程中,并且end event总是往外抛出信息,意味着流程执行到结束事件的时候会有结果抛出。

8.2.1 None End Event

空的结束事件意味着并没有指定的结果抛出,所以流程引擎在当前执行路径下面并不会执行任何额外的事情。一个none end event的可视化效果。

技术分享

<endEvent id="end" name="my end event" />

8.2.2 Error End Event

如果流程执行到error end event,当前路径执行将会提前结束并抛出一个错误,这个错误会被匹配的边界事件所捕获,如果没有找到对应的边界事件,将会抛出异常,他具体的可视化效果下图所示:

技术分享

xml解析为:

<endEvent id="myErrorEndEvent">
  <errorEventDefinition errorRef="myError" />
</endEvent>

errorRef引用的myError是在error中配置的:

<error id="myError" errorCode="123" />
...
<process id="myProcess">
...

其中error的errorCode将会被匹配边界事件,如果errorRef并没有找到对于的error,errorRef将会作为errorCode的短名,这在Activiti中是特有的,比如:

<error id="myError" errorCode="error123" />
...
<process id="myProcess">
...
  <endEvent id="myErrorEndEvent">
    <errorEventDefinition errorRef="myError" />
  </endEvent>
...

等效于:

<endEvent id="myErrorEndEvent">
  <errorEventDefinition errorRef="error123" />
</endEvent>

8.2.3 Terminate End Event

 当流程执行到terminate end event的时候,当前流程和子流程都将会终止结束。从概念上讲,当执行到终止结束事件的时候,流程实例和子流程会结束,在BPMN2.0中,一个子流程会可以嵌入到子流程、含事务的子流程中,这适用于一般情况。当例如有多实例调用活动或嵌入的子流程,此时只有该实例将结束,其他实例和流程实例不受影响。流程设计器中设计可视化效果为:

技术分享

解析为xml的话:

<endEvent id="myEndEvent >
  <terminateEventDefinition activiti:terminateAll="true"></terminateEventDefinition>
</endEvent>

 

以上是关于工作流activiti5.6的数据库版本问题的主要内容,如果未能解决你的问题,请参考以下文章

旧宝石总是在更新版本的ruby上工作吗?

问一个问题,为啥pacman搜索不到其他版本的内核

工作的时候会用到的版本控制器Svn与Git

Linux(Ubuntu/CentOS) 下查看 GLIBC 版本

Linux(Ubuntu/CentOS) 下查看 GLIBC 版本

第39问:如何编译 MySQL 的调试版本