Java 服务任务(
java service task
)
描述
Java 服务任务是用于调用一个外部
Java
类。
图形符号
A service task is visualized as a rounded rectangle with a small gear icon in the top-left corner.
脚本任务的图形表示是在一个圆边矩形的左上角标一个齿轮图标。
XML表示
There are 4 ways of declaring how to invoke Java logic:
l
Specifying a class that implements JavaDelegate or ActivityBehavior
l
Evaluating an expression that resolves to a delegation object
l
Invoking a method expression
l
Evaluating a value expression
有以下四种调用Java
的声明方法
l
实现JavaDelegate
或
ActivitiBehavior
l
计算一个表达式用于解析一个授权对象
l
调用方法表达式
l
评估值表达式
To specify a class that is called during process execution, the fully qualified classname needs to be provided by the
'activiti:class'
attribute.
为了可以在流程运行调用类,需要用‘activiti:class
’属性指定一个全限定性类名。
<serviceTask id="javaService" name="My Java Service Task" activiti:class="org.activiti.MyJavaDelegate" />
See
the
implementation
section
for more details on how to use such a class.
It is also possible to use an expression that resolves to an object. This object must follow the same rules as objects that are created when the activiti:class attribute is used (see
further
).
有关如何使用这个类的详情请参阅 实现部分
也可以用一个表达式解析一个对象,当用属性activiti:class
解析对象时这个对象必须遵循对象产生的相同的规则。
<serviceTask id="serviceTask" activiti:delegateExpression="${delegateExpressionBean}" />
Here, the delegateExpressionBean is a bean that implements the JavaDelegate interface, defined in for example the Spring container.
这里,
delegateExpressionBean
是一个实现了
JavaDelegate
接口,定义在
spring容器中的对象。
To specify a UEL method expression that should be evaluated, use attribute
activiti:expression
.
指定一个UEL
方法返回一个对象,用
activiti:expression
属性:
<serviceTask id="javaService" name="My Java Service Task" activiti:expression="#{printer.printMessage()}" />
Method printMessage (without parameters) will be called on the named object called printer.
It's also possible to pass parameters with an method used in the expression.
Printer对象的
printMessage
方法会被调用。
也可以给表达式中的方法传递参数。
<serviceTask id="javaService"
name="My Java Service Task"
activiti:expression="#{printer.printMessage(execution, myVar)}" />
Method printMessage will be called on the object named printer. The first parameter passed is the DelegateExecution, which is available in the expression context by default available as execution. The second parameter passed, is the value of the variable with name myVar in the current execution.
Printer的
printMessage()
方法将会被调用。第一个参数传递的是
DelegateExecution
类,它可以在表达式上下文得到。第二参数是在当前运行上下文中的变量
myVar
的值。
To specify a UEL value expression that should be evaluated, use attribute
activiti:expression
.
可以用activiti:expression
去指定一个
UEL
值表达式。
<serviceTask id="javaService"
name="My Java Service Task"
activiti:expression="#{split.ready}" />
The getter method of property ready, getReady (without parameters), will be called on the named bean called split. The named objects are resolved in the execution's process variables and (if applicable) in the Spring context.
Split对象的
getReady()
方法将被调用,对象位于可以是运行的流程变量,也可以是
Spring
容器中的
bean
。
实现(Implementation)
To implement a class that can be called during process execution, this class needs to implement the
org.activiti.engine.delegate.JavaDelegate
interface and provide the required logic in the
execute
method. When process execution arrives at this particular step, it will execute this logic defined in that method and leave the activity in the default BPMN 2.0 way.
为了类可以在流程运行中被调用,这个类需要实现
org.activiti.engine.delegate.JavaDelegate
接口并且在
execute方法中提供所需的逻辑。当流程运行到达这个特殊的一步时,定义在方法中的逻辑将会被执行,之后以默认的
BPMN 2.0
方式退出。
Let's create for example a Java class that can be used to change a process variable String to uppercase.
This class needs to implement the
org.activiti.engine.delegate.JavaDelegate
interface,
which requires us to implement the
execute(DelegateExecution)
method.
It's this operation that will be called by the engine and which needs to contain the business logic.
Process instance information such as process variables and other can be accessed and manipulated
through the
DelegateExecution
interface (click on the link for a detailed Javadoc of its operations).
分享到:
相关推荐
<serviceTask id="serviceTask" name="Java service invocation" activiti:class="com.easyway.activiti.servicetask.ReverseStringsFieldInjected"> ``` 在上面的示例代码中,我们将调用...
在Android应用开发中,Service和Timer是两个非常重要的组件,它们可以帮助我们实现后台服务和定时任务的管理。本文将深入探讨如何使用Service和Timer来执行周期性的任务。 Service是Android系统中的一个关键组件,...
Spring Task,也称为Spring的内置任务调度框架,是Spring Framework的一部分,它提供了在Spring应用中定义和执行定时任务的能力。这个功能强大的工具使得开发者无需依赖外部任务调度库(如Quartz或Cron),就能在...
源码中可能有`@Configuration`类用于配置调度器,`@Component`或`@Service`类用于定义任务,以及`@Scheduled`注解标记的方法。 6. **参数配置**: 配置文件(如application.properties或application.yml)可能包含了...
Spring Task是Spring框架的一部分,它提供了丰富的定时和调度功能,使得在Java应用中执行周期性任务变得非常简单。下面我们将深入探讨如何在Spring Boot项目中设置这一功能。 首先,我们需要在`application....
4.运行SpringBootJD\src\test\java\com\example\examplejd\service\impl\JdOrderServiceImplTest.java中的void homefwTaskSearch()方法,从jd服务器获取任务工单 集成的京东接口列表如下: 1获取...
接着,我们可以创建一个服务类,查询数据库获取定时任务的配置,并通过`TaskScheduler`接口来调度任务。Spring的`TaskScheduler`可以在运行时安排任务,而不仅仅是启动时。以下是一个示例: ```java import org....
在IT领域,尤其是在Java开发中,定时任务是一个非常常见的需求,用于执行周期性的任务,比如数据备份、报表生成、系统监控等。Spring框架提供了一系列工具来支持定时任务的实现,其中包括Spring自带的`spring-task`...
Quartz实现JAVA定时任务的动态配置的方法 Quartz 是一个强大的开源作业调度框架,广泛应用于 JAVA 项目中。它提供了强大的作业调度功能,能够满足复杂的业务需求。本文将介绍如何使用 Quartz 实现 JAVA 定时任务的...
在Java编程中,后台进程(Background Process)通常指的是在主应用程序执行时,不与用户界面直接交互,而是默默地运行在后台执行特定任务的程序部分。这些任务可能包括数据处理、定时任务、服务监控等。Java提供了...
根据提供的文件信息,本文将详细解析Java定时任务与Spring框架集成的相关知识点,包括如何在Spring环境中配置和管理定时任务。 ### Java定时任务简介 在Java中实现定时任务主要有以下几种方式: 1. **Timer和...
开发者可以通过监听任务事件,或者使用服务任务(Service Task)调用业务逻辑,来实现任务的处理。 5. **流程控制**:根据业务需求,可能需要对流程进行控制,例如:跳过任务、分支、合并、回退等,这些都可以通过...
Java SDK为开发者提供了一组API,可以用来访问Google App Engine的服务,如数据存储(Datastore)、任务队列(Task Queue)、邮件服务(Mail Service)、图像服务(Images Service)等。 在压缩包"appengine-java-...
本文将详细介绍如何利用Spring Boot结合Spring Task(Spring的定时任务模块)和JavaMailSender接口来实现这个功能。 首先,我们需要在项目中引入必要的依赖。在`pom.xml`文件中,添加Spring Boot的`spring-boot-...
1. **配置Spring Task**:在Spring的配置文件(如`applicationContext.xml`或使用Java配置类)中,我们需要启用任务调度功能并配置相应的执行器或调度器。例如,使用Java配置可以这样写: ```java @Configuration @...
在Java编程中,多线程和定时任务是两个非常重要的概念。它们被广泛应用于服务器端应用、后台处理、数据同步等多个场景。本篇文章将详细解释如何利用注解优雅地实现多线程定时任务。 首先,我们需要理解“定时任务”...
一个简单的项目,可以帮助我创建必须使用Windows Task Scheduler运行的任务的jar文件。 有可能的使用 创建一个可执行的jar文件,然后从Windows Tasks Scheduler运行。 入门 创建一个新的过程 创建一个实现Processor ...
- `submit(Callable<T> task)`:提交一个`Callable`任务用于执行,并返回一个表示该任务完成结果的`Future`。 - `invokeAll(Collection<? extends Callable<T>> tasks)`:执行给定的`Callable`任务集合,并返回表示...
4. `Task`:表示服务的执行实例,包含了任务的状态、ID和分配到的节点等信息。 5. `Network`:定义了集群内的网络资源,允许服务之间通过自定义网络进行通信。 6. `ServiceSpec`:用于创建或更新服务的规格,包含了...