Activiti_5.14_用户手册_中文版(8)

2018-12-15 17:49

? ActivitiWrongDbException:当Activiti引擎发现数据库版本号和引擎版本号不一致时

抛出。

? ActivitiOptimisticLockingException:对同一数据进行并发方法并出现乐观锁时

抛出。

? ActivitiClassLoadingException:当无法找到需要加载的类或在加载类时出现了错

误(比如,JavaDelegate,TaskListener等。

? ?

ActivitiObjectNotFoundException:当请求或操作的对应不存在时抛出。 ActivitiIllegalArgumentException:这个异常表示调用Activiti API时传入了一个

非法的参数,可能是引擎配置中的非法值,或提供了一个非法制,或流程定义中使用的非法值。

? ActivitiTaskAlreadyClaimedException:当任务已经被认领了,再调用taskService.claim(...)就会抛出。

使用Activiti的服务

像上面介绍的那样,要想操作Activiti引擎,需要通过 org.activiti.engine.ProcessEngine实例暴露的服务。 下面的代码假设你已经拥有了一个可以运行的Activiti环境。 你就可以操作一个

org.activiti.engine.ProcessEngine。 如果只想简单尝试一下代码, 可以下载或者

cloneActiviti单元测试模板, 导入到IDE中,把testUserguideCode()方法添加到

org.activiti.MyUnitTest中。

这个小例子的最终目标是做一个工作业务流程, 演示公司中简单的请假申请:

发布流程

任何与??静态??资源有关的数据(比如流程定义)都可以通过 RepositoryService访问。 从概念上讲,所以静态数据都是Activiti的资源内容。

在src/test/resources/org/activiti/test目录下创建一个新的xml文件

VacationRequest.bpmn20.xml(如果不使用单元测试模板,你也可以在任何地方创建), 内容

如下。注意这一章不会解释例子中使用的xml结构。 如果有需要可以先阅读bpmn 2.0章来了解这些。

${employeeName} would like to take ${numberOfDays} day(s) of vacation (Motivation: ${vacationMotivation}). management Your manager has disapproved your vacation request for ${numberOfDays} days. Reason: ${managerMotivation} ${employeeName} 为了让Activiti引擎知道这个流程,我们必须先进行发布。发布意味着引擎会把BPMN 20.xml解析成可以执行的东西, 发布包中的所有流程定义都会添加到数据库中。 这样,当引擎重启时,它依然可以获得已发布的流程:

ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); RepositoryService repositoryService = processEngine.getRepositoryService(); repositoryService.createDeployment() .addClasspathResource(\\ .deploy(); Log.info(\repositoryService.createProcessDefinitionQuery().count()); 可以阅读发布章来了解更多关于发布的信息。

启动一个流程实例

把流程定义发布到Activiti引擎后,我们可以基于它发起新流程实例。 对每个流程定义,都可以有很多流程实例。 流程定义是??蓝图??,流程实例是它的一个运行的执行。

所有与流程运行状态相关的东西都可以通过RuntimeService获得。 有很多方法可以启动一个新流程实例。在下面的代码中,我们使用定义在流程定义xml 中的key来启动流程实例。 我们也可以在流程实例启动时添加一些流程变量,因为第一个用户任务的表达式需要这些变量。 流程变量经常会被用到,因为它们赋予来自同一个流程定义的不同流程实例的特别含义。 简单来说,流程变量是区分流程实例的关键。

Map variables = new HashMap(); variables.put(\variables.put(\variables.put(\ RuntimeService runtimeService = processEngine.getRuntimeService(); ProcessInstance processInstance = runtimeService.startProcessInstanceByKey(\variables); // Verify that we started a new process instance Log.info(\runtimeService.createProcessInstanceQuery().count()); 完成任务

流程启动后,第一步就是用户任务。这是必须由系统用户处理的一个环节。 通常,用户会有一个任务列表,展示了所有必须由整个用户处理的任务。 下面的代码展示了对应的查询可能是怎样的:


Activiti_5.14_用户手册_中文版(8).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:《货币银行学》模拟考试题

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: