Activity服务任务(serviceTask)

Activity服务任务(serviceTask)

作者:邓家海

都有一段沉默的时间,等待厚积薄发

应用场景:

当客户有这么一个需求:下一个任务我需要自动执行一些操作,并且这个节点不需要任何的人工干涉,也就是说这个节点是自动化的。那么,这个当前面一个经办人员把任务发送下去的时候,自然而然的下一个节点就会开始马上执行。这个时候。我们就需要使用Activity工作流的ServiceTask任务。

ServiceTask任务的实现,其实不复杂。

实现步骤:

(1)设计流程

(2)编写委托类

(3)把委托类设置到流程的监听类上面

设计流程:

编写委托类:

 1 package light.mvc.workflow.serviceTask;
 2
 3
 4
 5 import org.activiti.engine.delegate.DelegateExecution;
 6
 7 import org.activiti.engine.delegate.Expression;
 8
 9 import org.activiti.engine.delegate.JavaDelegate;
10
11
12
13 /**
14
15  *
16
17  * 项目名称:lightmvc
18
19  * 类名称:ServiceTask
20
21  * 类描述:
22
23  * 创建人:邓家海
24
25  * 创建时间:2017年6月4日 下午6:18:11
26
27  * 修改人:deng
28
29  * 修改时间:2017年6月4日 下午6:18:11
30
31  * 修改备注:
32
33  * @version
34
35  *
36
37  */
38
39
40
41 public class ServiceTask implements JavaDelegate{
42
43 //流程变量
44
45 private Expression text1;
46
47
48
49 //重写委托的提交方法
50
51 @Override
52
53 public void execute(DelegateExecution execution) throws Exception {
54
55 System.out.println("serviceTask已经执行已经执行!");
56
57 String value1 = (String) text1.getValue(execution);
58
59 System.out.println(value1);
60
61     execution.setVariable("var1", new StringBuffer(value1).reverse().toString());
62
63 }
64
65
66
67 }

把委托类设置到流程的监听类上面:

流程代码:

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:activiti="http://activiti.org/bpmn" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:omgdc="http://www.omg.org/spec/DD/20100524/DC" xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI" typeLanguage="http://www.w3.org/2001/XMLSchema" expressionLanguage="http://www.w3.org/1999/XPath" targetNamespace="http://www.activiti.org/processdef">
 3   <process id="process" isExecutable="true">
 4     <startEvent id="sid-F6C5FFC5-63CA-453D-8C11-2DA040793DE9"></startEvent>
 5     <serviceTask id="sid-77E58C69-38B7-4DE5-BD73-D0B6CEDD48D4" name="服务" activiti:class="light.mvc.workflow.serviceTask.ServiceTask">
 6       <extensionElements>
 7         <activiti:field name="text1">
 8           <activiti:string><![CDATA[test]]></activiti:string>
 9         </activiti:field>
10       </extensionElements>
11     </serviceTask>
12     <endEvent id="sid-DB39A39C-1BCC-4F45-B909-9A4319632B42"></endEvent>
13     <sequenceFlow id="sid-567FAFA0-954C-4BC1-AC05-4610A75001B2" sourceRef="sid-77E58C69-38B7-4DE5-BD73-D0B6CEDD48D4" targetRef="sid-DB39A39C-1BCC-4F45-B909-9A4319632B42"></sequenceFlow>
14     <sequenceFlow id="sid-44C871F5-454A-4D4E-8E6F-C0FAA38C7E38" sourceRef="sid-F6C5FFC5-63CA-453D-8C11-2DA040793DE9" targetRef="sid-77E58C69-38B7-4DE5-BD73-D0B6CEDD48D4"></sequenceFlow>
15   </process>
16   <bpmndi:BPMNDiagram id="BPMNDiagram_process">
17     <bpmndi:BPMNPlane bpmnElement="process" id="BPMNPlane_process">
18       <bpmndi:BPMNShape bpmnElement="sid-F6C5FFC5-63CA-453D-8C11-2DA040793DE9" id="BPMNShape_sid-F6C5FFC5-63CA-453D-8C11-2DA040793DE9">
19         <omgdc:Bounds height="30.0" width="30.0" x="172.75" y="99.0"></omgdc:Bounds>
20       </bpmndi:BPMNShape>
21       <bpmndi:BPMNShape bpmnElement="sid-77E58C69-38B7-4DE5-BD73-D0B6CEDD48D4" id="BPMNShape_sid-77E58C69-38B7-4DE5-BD73-D0B6CEDD48D4">
22         <omgdc:Bounds height="80.0" width="100.0" x="315.0" y="60.0"></omgdc:Bounds>
23       </bpmndi:BPMNShape>
24       <bpmndi:BPMNShape bpmnElement="sid-DB39A39C-1BCC-4F45-B909-9A4319632B42" id="BPMNShape_sid-DB39A39C-1BCC-4F45-B909-9A4319632B42">
25         <omgdc:Bounds height="28.0" width="28.0" x="480.0" y="100.0"></omgdc:Bounds>
26       </bpmndi:BPMNShape>
27       <bpmndi:BPMNEdge bpmnElement="sid-567FAFA0-954C-4BC1-AC05-4610A75001B2" id="BPMNEdge_sid-567FAFA0-954C-4BC1-AC05-4610A75001B2">
28         <omgdi:waypoint x="415.0" y="100.0"></omgdi:waypoint>
29         <omgdi:waypoint x="447.5" y="100.0"></omgdi:waypoint>
30         <omgdi:waypoint x="447.5" y="114.0"></omgdi:waypoint>
31         <omgdi:waypoint x="480.0" y="114.0"></omgdi:waypoint>
32       </bpmndi:BPMNEdge>
33       <bpmndi:BPMNEdge bpmnElement="sid-44C871F5-454A-4D4E-8E6F-C0FAA38C7E38" id="BPMNEdge_sid-44C871F5-454A-4D4E-8E6F-C0FAA38C7E38">
34         <omgdi:waypoint x="202.75" y="114.0"></omgdi:waypoint>
35         <omgdi:waypoint x="258.875" y="114.0"></omgdi:waypoint>
36         <omgdi:waypoint x="258.875" y="100.0"></omgdi:waypoint>
37         <omgdi:waypoint x="315.0" y="100.0"></omgdi:waypoint>
38       </bpmndi:BPMNEdge>
39     </bpmndi:BPMNPlane>
40   </bpmndi:BPMNDiagram>
41 </definitions>

然后执行流程(我的控制台乱码,没时间处理,不影响):

升级:

假如客户说,我并不想马上去执行这个任务,我只是想在某一个时间之后才去执行这个任务。那么上面的要求显然又不能满足需求了。我们又要怎么去升级改进呢?其实也很简单。我们前面已经实现了定时边界任务。我们只需要增加一个定时边界来处理就可以了。

Activity交流QQ群:634320089

关于定时边界处理前面已经能做介绍,这里不再重复累赘!

时间: 2024-07-29 00:37:16

Activity服务任务(serviceTask)的相关文章

系统服务-----Activity服务的获取getSystemService

android的后台存在很多service,它们在系统启动的时候被SystemServer开启,来为系统的正常运行做支撑.Activity中要调用这些service就得使用getSystemService方法,这也是Activity很重要的一个API.根据传入的Name取得对应的Object,然后转换成相应的服务对象. 传入的Name 返回的对象 说明 WINDOW_SERVICE WindowManager 管理打开的窗口程序 LAYOUT_INFLATER_SERVICE LayoutInf

Activity工作流学习——Activity服务类

Activity有9个service1.DynamicBpmnService动态Bpmn服务Service providing access to the repository of process definitions and deployments.服务提供对流程定义和部署的存储库的访问. 2.EngineService引擎服务Interface implemented by all classes that expose the Activiti services.接口实现的所有类都公开

ContextMenu和OptionsMenu主要有以下区别

1,ContextMenu必须通过Activity的registerForContextMenu(View)来进行注册,而OptionsMenu不用. 2,ContextMenu不支持icon,而OptionsMenu支持. 3,ContextMenu可以有头,可以通过setHeaderIcon,setHeaderTitle,setHeaderView来设置头,否则就没有头. 4,弹出的方式不一样. 5,Options Menu的拥有者是Activity,而上下文菜单的拥有者是Activity中

FLAG_ACTIVITY_NEW_TASK和SingleInstance的设计思路(多task的应用)

这部分的想法都是基于以下两点: 1.Activity可能被复用,可能是复用Activity的功能,还可能是复用Activity的状态: 2.Task的作用:target,同一个task中的Activity服务于相同的或者接近的目标(target). (一个task的目标往往由task的root Activity决定,因为是root Activity造就了这个task). Activity复用情景1: 在当前App中,通过Intent,打开了当前App或其他App的一个Activity(stand

Android四大基本组件(3)之四大组件总结

关于四大基本组件的一个总结: 1> 4大组件的注册 4大基本组件都需要注册才能使用,每个Activity.service.Content Provider内容提供者都需要在AndroidManifest文件中进行配置AndroidManifest文件中未进行声明的activity.服务以及内容提供者将不为系统所见,从而也就不可用,而BroadcastReceive广播接收者的注册分静态注册(在AndroidManifest文件中进行配置)和通过代码动态创建并以调用Context.register

Android 四大组件 详解

[置顶] Android四大组件详解 分类: Android四大组件2013-02-09 16:23 19411人阅读 评论(13) 收藏 举报 Android开发 注:本文主要来自网易的一个博主的文章,经过阅读,总结,故留下文章在此 Android四大基本组件介绍与生命周期 Android四大基本组件分别是Activity,Service服务,Content Provider内容提供者,BroadcastReceiver广播接收器. 一:了解四大基本组件 Activity : 应用程序中,一个

Android 手机卫士--阶段小结1

本文地址:http://www.cnblogs.com/wuyudong/p/5904528.html,转载请注明源地址. 本文对之前手机卫士开发进行一个小结. 1.SplashActivity 版本名称的展示,从清单配置文件中获取版本名称,PackageManager 服务端新版本的检测(本地版本号<服务器版本号) 展示logo 2.手机防盗 sim卡绑定:每一款手机都会有相应的卡的序列号,一旦替换掉原有电话卡,序列号会发生改变 3.手机卫士分包 基础课程分包方式,每一个类包名, com.it

17.(转) Android之四大基本组件介绍与生命周期

Android四大基本组件分别是Activity,Service服务,Content Provider内容提供者,BroadcastReceiver广播接收器. 一:了解四大基本组件 Activity : 应用程序中,一个Activity通常就是一个单独的屏幕,它上面可以显示一些控件也可以监听并处理用户的事件做出响应. Activity之间通过Intent进行通信.在Intent 的描述结构中,有两个最重要的部分:动作和动作对应的数据. 典型的动作类型有:M AIN(activity的门户).V

json js 算法 面试

Git远程操作详解 - 阮一峰的网络日志http://www.ruanyifeng.com/blog/2014/06/git_remote.html 2.XHR_百度文库http://wenku.baidu.com/link?url=bxf_ou2tKCmrl4OW_zKrH8Oikgtrjn8nuvLE32wWR-v8B946Gl26C6QoaZKBXme869Do-h44DfzTBcvQxqTn_jtM0IXWFBXEQdHt4dYMIhq Java web过滤器验证登录(避免未经登录进入主