Activiti结束事件(End Event)

作者:Jesai -2017.08.03T01:03

曾经,黑夜多么漫长,八月雨扰眠,缘何?

声明:版权所有,如需引用请注明出处,如发现抄袭,必追究法律责任

1       前言:

Activiti工作流始于开始任务,止于结束任务。结束事件标志着(子)流程的(分支的)结束。结束事件总是抛出(型)事件。这意味着当流程执行到达结束事件时,会抛出一个结果。结果的类型由事件内部的黑色图标描绘。在XML表示中,类型由子元素声明给出。流程终结又可以分为4种情况:空结束任务、错误结束任务、取消结束任务、终结任务,其中空结束任务是最常见的结束任务。

2       结束任务的类型:

1)空结束任务(none end event)

2)错误结束事件(error end event)

3)取消结束任务(terminate end event)

4)终结任务(Cancel end event)

3       空结束任务(none end event)

空结束任务是最常见的一种结束任务,也是最简单的一种结束任务,只要把结束任务置于流程的最后节点,流程实例运行到该节点的时候,流程引擎就会结束该流程实例。并没有太多复杂的技术。所以不作太多的介绍。空事件的XML表示格式,为普通结束事件声明,没有任何子元素(其它种类的结束事件都有子元素,用于声明其类型)。

3.1   流程实例图标:

图3-1 空结束事件图标

3.2   代码:

1

4       错误结束事件(error end event)

错误结束事件会在流程到达错误结束事件的时候抛出错误,并结束当前的流程分支。错误可以使用使用匹配的错误边界中间事件 intermediate boundary error event 捕获。如果找不到匹配的错误边界事件,将会抛出异常。

4.1   流程实例图标:

错误结束事件就是自流程或者流程实例的错误结束事件抛出一个bpmn错误。然后被工作流的错误边界事件获取。

图4-1 错误结束事件图标

错误结束事件,表示为结束事件,加上errorEventDefinition子元素:

1

2

3

errorRef属性可以引用在流程外定义的error元素:

1

2 ...3

4 ...

error的errorCode用于查找匹配的错误捕获边界事件。如果errorRef不匹配任何已定义的error,则该errorRef会用做errorCode的快捷方式。这个快捷方式是Activiti特有的。下面的代码片段在功能上是相同的。

1

2 ...3

4 ...5

6

7

8 ...

与下面的功能相同

1

2

3

请注意errorRef必须遵从BPMN 2.0概要(schema),且必须是合法的QName。

4.2流程图设计

流程图设计一个子流程,然后子流程里面有一个错误结束事件。外面的错误捕获边界任务就会捕获异常。捕获了异常后,由于是错误边界先去捕获异常,所以捕获错误事件分支会先执行,然后结束。正常结束事件节点所在的分支不会执行。

图4-2 错误结束事件流程设计

4.3执行结果

图4-3 错误结束事件流程运行结果

4.4   流程代码

1 <?xml version='1.0' encoding='UTF-8'?>

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

151

152

153

154

155

156

157

158

159

160

161

162

163

164

165

166

167

168

169

170

171

172

173

174

175

176

177

178

179

4.5   java监听类代码

4.5.1     子流程监听器:

1 /**

2

3 *4

5 */

6

7 packagelight.mvc.workflow.serviceTask;8

9

10

11 importorg.activiti.engine.delegate.DelegateExecution;12

13 importorg.activiti.engine.delegate.JavaDelegate;14

15

16

17 /**

18

19 *20

21 * 项目名称:lightmvc22

23 * 类名称:ServiceTask24

25 * 类描述:26

27 * 创建人:邓家海28

29 * 创建时间:2017年6月4日 下午6:18:1130

31 * 修改人:deng32

33 * 修改时间:2017年6月4日 下午6:18:1134

35 * 修改备注:36

37 *@version

38

39 *40

41 */

42

43

44

45 public class SubErrorTestRunningTask implementsJavaDelegate{46

47 //重写委托的提交方法

48

49 @Override50

51 public void execute(DelegateExecution execution) throwsException {52

53 //receiveTaskprocess

54

55 System.out.println("SubErrorTestRunningTask is running!");56

57 }58

59 }

4.5.2     捕获事件监听器

1 /**

2

3 *4

5 */

6

7 packagelight.mvc.workflow.serviceTask;8

9

10

11 importorg.activiti.engine.delegate.DelegateExecution;12

13 importorg.activiti.engine.delegate.JavaDelegate;14

15

16

17 /**

18

19 *20

21 * 项目名称:lightmvc22

23 * 类名称:ServiceTask24

25 * 类描述:26

27 * 创建人:邓家海28

29 * 创建时间:2017年6月4日 下午6:18:1130

31 * 修改人:deng32

33 * 修改时间:2017年6月4日 下午6:18:1134

35 * 修改备注:36

37 *@version

38

39 *40

41 */

42

43

44

45 public class CacheErrorTestRunningTask implementsJavaDelegate{46

47 //重写委托的提交方法

48

49 @Override50

51 public void execute(DelegateExecution execution) throwsException {52

53 //receiveTaskprocess

54

55 System.out.println("CacheErrorTestRunningTask is running!");56

57 }58

59

60

61 }

4.5.3     正常结束事件监听器

1 /**

2

3 *4

5 */

6

7 packagelight.mvc.workflow.serviceTask;8

9

10

11 importorg.activiti.engine.delegate.DelegateExecution;12

13 importorg.activiti.engine.delegate.JavaDelegate;14

15

16

17 /**

18

19 *20

21 * 项目名称:lightmvc22

23 * 类名称:ServiceTask24

25 * 类描述:26

27 * 创建人:邓家海28

29 * 创建时间:2017年6月4日 下午6:18:1130

31 * 修改人:deng32

33 * 修改时间:2017年6月4日 下午6:18:1134

35 * 修改备注:36

37 *@version

38

39 *40

41 */

42

43 public class NormalErrorTestRunningTask implementsJavaDelegate{44

45 //重写委托的提交方法

46

47 @Override48

49 public void execute(DelegateExecution execution) throwsException {50

51 //receiveTaskprocess

52

53 System.out.println("NormalErrorTestRunningTask is running!");54

55 }56

57 }58

59

4.5.4     扩展1

下面我们改动一下流程,更清晰的看看这个工作的原理是怎么样的。

这一次我们是把错误事件的指向正常结束事件后面去了,可以看到,后面是正常执行的。

图4-3 错误结束事件流程设计

图4-4 错误结束事件运行结果

4.5.5     扩展2

再来改一下流程,可以看出,错误捕获边界是达到了终止主流程的效果的。主流程被中断了。不过错误捕获边界是否有终止事件,主流程都不会被继续往下执行。

图4-5 错误结束事件流程图

图4-6 错误结束事件运行结果

5       取消结束任务(terminate end event)

当到达终止结束事件时,当前的流程实例或子流程会被终止。概念上说,当执行到达终止结束事件时,会判断第一个范围 scope(流程或子流程)并终止它。请注意在BPMN 2.0中,子流程可以是嵌入式子流程,调用活动,事件子流程,或事务子流程。有一条通用规则:当存在多实例的调用过程或嵌入式子流程时,只会终止一个实例,其他的实例与流程实例不会受影响。可以添加一个可选属性terminateAll。当其为true时,无论该终止结束事件在流程定义中的位置,也无论它是否在子流程(甚至是嵌套子流程)中,都会终止(根)流程实例。

5.1   流程实例图标:

图5-1 取消结束事件图标

终止结束事件,表示为结束事件,加上terminateEventDefinition子元素。

请注意terminateAll属性是可选的(默认为false)。

1 2

3

5.2   流程图设计

注意,这个流程的终止事件并没有设置成终止全部,可以看到,全部任务节点都被执行了。

图5-2 取消结束事件流程图设计

5.3   运行结果

图5-3 取消结束事件流程执行结果

5.4   XML代码:

1 <?xml version='1.0' encoding='UTF-8'?>

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

151

152

153

154

155

156

157

158

159

160

161

162

163

164

165

166

167

168

169

170

171

172

173

174

175

176

177

178

179

180

181

182

183

184

185

5.5   扩展

这一次,我们把该流程的终止任务设置成终止全部,可以看到,子流程执行完了之后,主流程被终止了。由此可见,终止的只是主流程,子流程并没有终止。

图5-4 取消结束事件图标

5.6   运行结果

图5-5 取消结束事件执行结果

5.7   XML代码:

5.8   java监听器代码:

1 /**

2

3 *4

5 */

6

7 packagelight.mvc.workflow.serviceTask;8

9 importorg.activiti.engine.delegate.DelegateExecution;10

11 importorg.activiti.engine.delegate.JavaDelegate;12

13 /**

14

15 *16

17 * 项目名称:lightmvc18

19 * 类名称:ServiceTask20

21 * 类描述:22

23 * 创建人:邓家海24

25 * 创建时间:2017年6月4日 下午6:18:1126

27 * 修改人:deng28

29 * 修改时间:2017年6月4日 下午6:18:1130

31 * 修改备注:32

33 *@version

34

35 *36

37 */

38

39 public class FirstTestRunningTask implementsJavaDelegate{40

41 //重写委托的提交方法

42

43 @Override44

45 public void execute(DelegateExecution execution) throwsException {46

47 //receiveTaskprocess

48

49 System.out.println("FirstTestRunningTask is running!");50

51 }52

53 }

1 /**

2

3 *4

5 */

6

7 packagelight.mvc.workflow.serviceTask;8

9

10

11 importorg.activiti.engine.delegate.DelegateExecution;12

13 importorg.activiti.engine.delegate.JavaDelegate;14

15 /**

16

17 *18

19 * 项目名称:lightmvc20

21 * 类名称:ServiceTask22

23 * 类描述:24

25 * 创建人:邓家海26

27 * 创建时间:2017年6月4日 下午6:18:1128

29 * 修改人:deng30

31 * 修改时间:2017年6月4日 下午6:18:1132

33 * 修改备注:34

35 *@version

36

37 *38

39 */

40

41 public class SecondTestRunningTask implementsJavaDelegate{42

43 //重写委托的提交方法

44

45 @Override46

47 public void execute(DelegateExecution execution) throwsException {48

49 //receiveTaskprocess

50

51 System.out.println("SecondTestRunningTask is running!");52

53 }54

55 }

1 /**

2

3 *4

5 */

6

7 packagelight.mvc.workflow.serviceTask;8

9 importorg.activiti.engine.delegate.DelegateExecution;10

11 importorg.activiti.engine.delegate.JavaDelegate;12

13 /**

14

15 *16

17 * 项目名称:lightmvc18

19 * 类名称:ServiceTask20

21 * 类描述:22

23 * 创建人:邓家海24

25 * 创建时间:2017年6月4日 下午6:18:1126

27 * 修改人:deng28

29 * 修改时间:2017年6月4日 下午6:18:1130

31 * 修改备注:32

33 *@version

34

35 *36

37 */

38

39 public class ThreeTestRunningTask implementsJavaDelegate{40

41 //重写委托的提交方法

42

43 @Override44

45 public void execute(DelegateExecution execution) throwsException {46

47 //receiveTaskprocess

48

49 System.out.println("ThreeTestRunningTask is running!");50

51 }52

53 }

1 /**

2

3 *4

5 */

6

7 packagelight.mvc.workflow.serviceTask;8

9 importorg.activiti.engine.delegate.BpmnError;10

11 importorg.activiti.engine.delegate.DelegateExecution;12

13 importorg.activiti.engine.delegate.JavaDelegate;14

15 /**

16

17 *18

19 * 项目名称:lightmvc20

21 * 类名称:ServiceTask22

23 * 类描述:24

25 * 创建人:邓家海26

27 * 创建时间:2017年6月4日 下午6:18:1128

29 * 修改人:deng30

31 * 修改时间:2017年7月16日 下午7:28:1132

33 * 修改备注:34

35 *@version

36

37 *38

39 */

40

41 public class TestRunningTask implementsJavaDelegate{42

43 //重写委托的提交方法

44

45 @Override46

47 public void execute(DelegateExecution execution) throwsException{48

49 System.out.println("TestRunningTask is running!");50

51 }52

53 }

6       终结任务(Cancel end event)

取消结束事件,只能与bpmn事务子流程(bpmn transaction subprocess)一起使用。当到达取消结束事件时,会抛出取消事件,且必须由取消边界事件(cancel boundary event)捕获。之后这个取消边界事件将取消事务,并触发补偿(compensation)。

6.1   流程实例图标:

图6-1 终结事件图标

6.2   流程图设计

注意,子流程必须是事务子流程,否则会抛异常。在这里可以看到,主流程是被终止的

图6-3 终结事件流程设计

6.3   执行结果

图6-4 终结事件执行结果

6.4   XML代码:

1 <?xml version='1.0' encoding='UTF-8'?>

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

151

152

153

154

155

156

157

158

159

160

161

162

163

164

165

166

167

168

169

170

171

172

173

174

175

176

177

178

179

180

181

182

183

184

185

186

187

188

189

190

191

192

193

194

195

196

197

198

199

200

201

202

203

204

205

206

207

208

209

210

211

212

213

214

215

216

217

218

219

220

221

222

223

224

225

226

227

228

229

230

231

232

233

234

235

236

237

238

239

240

241

242

243

6.5   Java监听类代码:

1 /**

2

3 *4

5 */

6

7 packagelight.mvc.workflow.serviceTask;8

9

10

11 importorg.activiti.engine.delegate.DelegateExecution;12

13 importorg.activiti.engine.delegate.JavaDelegate;14

15

16

17 /**

18

19 *20

21 * 项目名称:lightmvc22

23 * 类名称:ServiceTask24

25 * 类描述:26

27 * 创建人:邓家海28

29 * 创建时间:2017年6月4日 下午6:18:1130

31 * 修改人:deng32

33 * 修改时间:2017年6月4日 下午6:18:1134

35 * 修改备注:36

37 *@version

38

39 *40

41 */

42

43 public class FirstTestRunningTask implementsJavaDelegate{44

45 //重写委托的提交方法

46

47 @Override48

49 public void execute(DelegateExecution execution) throwsException {50

51 //receiveTaskprocess

52

53 System.out.println("FirstTestRunningTask is running!");54

55 }56

57 }

1 /**

2

3 *4

5 */

6

7 packagelight.mvc.workflow.serviceTask;8

9

10

11 importorg.activiti.engine.delegate.DelegateExecution;12

13 importorg.activiti.engine.delegate.JavaDelegate;14

15

16

17 /**

18

19 *20

21 * 项目名称:lightmvc22

23 * 类名称:ServiceTask24

25 * 类描述:26

27 * 创建人:邓家海28

29 * 创建时间:2017年6月4日 下午6:18:1130

31 * 修改人:deng32

33 * 修改时间:2017年6月4日 下午6:18:1134

35 * 修改备注:36

37 *@version

38

39 *40

41 */

42

43 public class SecondTestRunningTask implementsJavaDelegate{44

45 //重写委托的提交方法

46

47 @Override48

49 public void execute(DelegateExecution execution) throwsException {50

51 //receiveTaskprocess

52

53 System.out.println("SecondTestRunningTask is running!");54

55 }56

57 }

1 /**

2

3 *4

5 */

6

7 packagelight.mvc.workflow.serviceTask;8

9

10

11 importorg.activiti.engine.delegate.DelegateExecution;12

13 importorg.activiti.engine.delegate.JavaDelegate;14

15

16

17 /**

18

19 *20

21 * 项目名称:lightmvc22

23 * 类名称:ServiceTask24

25 * 类描述:26

27 * 创建人:邓家海28

29 * 创建时间:2017年6月4日 下午6:18:1130

31 * 修改人:deng32

33 * 修改时间:2017年6月4日 下午6:18:1134

35 * 修改备注:36

37 *@version

38

39 *40

41 */

42

43 public class ThreeTestRunningTask implementsJavaDelegate{44

45 //重写委托的提交方法

46

47 @Override48

49 public void execute(DelegateExecution execution) throwsException {50

51 //receiveTaskprocess

52

53 System.out.println("ThreeTestRunningTask is running!");54

55 }56

57 }

1 /**

2

3 *4

5 */

6

7 packagelight.mvc.workflow.serviceTask;8

9

10

11 importorg.activiti.engine.delegate.DelegateExecution;12

13 importorg.activiti.engine.delegate.JavaDelegate;14

15

16

17 /**

18

19 *20

21 * 项目名称:lightmvc22

23 * 类名称:ServiceTask24

25 * 类描述:26

27 * 创建人:邓家海28

29 * 创建时间:2017年6月4日 下午6:18:1130

31 * 修改人:deng32

33 * 修改时间:2017年6月4日 下午6:18:1134

35 * 修改备注:36

37 *@version

38

39 *40

41 */

42

43

44

45 public class FourTestRunningTask implementsJavaDelegate{46

47 //重写委托的提交方法

48

49 @Override50

51 public void execute(DelegateExecution execution) throwsException {52

53 //receiveTaskprocess

54

55 System.out.println("FourTestRunningTask is running!");56

57 }58

59 }

1 /**

2

3 *4

5 */

6

7 packagelight.mvc.workflow.serviceTask;8

9

10

11 importorg.activiti.engine.delegate.DelegateExecution;12

13 importorg.activiti.engine.delegate.JavaDelegate;14

15 /**

16

17 *18

19 * 项目名称:lightmvc20

21 * 类名称:ServiceTask22

23 * 类描述:24

25 * 创建人:邓家海26

27 * 创建时间:2017年6月4日 下午6:18:1128

29 * 修改人:deng30

31 * 修改时间:2017年6月4日 下午6:18:1132

33 * 修改备注:34

35 *@version

36

37 *38

39 */

40

41 public class NormalEndTestRunningTask implementsJavaDelegate{42

43 //重写委托的提交方法

44

45 @Override46

47 public void execute(DelegateExecution execution) throwsException {48

49 //receiveTaskprocess

50

51 System.out.println("NormalEndTestRunningTask is running!");52

53 }54

55

56

57 }

1 /**

2

3 *4

5 */

6

7 packagelight.mvc.workflow.serviceTask;8

9

10

11 importorg.activiti.engine.delegate.DelegateExecution;12

13 importorg.activiti.engine.delegate.JavaDelegate;14

15

16

17 /**

18

19 *20

21 * 项目名称:lightmvc22

23 * 类名称:ServiceTask24

25 * 类描述:26

27 * 创建人:邓家海28

29 * 创建时间:2017年6月4日 下午6:18:1130

31 * 修改人:deng32

33 * 修改时间:2017年6月4日 下午6:18:1134

35 * 修改备注:36

37 *@version

38

39 *40

41 */

42

43 public class CacheEndTestRunningTask implementsJavaDelegate{44

45 //重写委托的提交方法

46

47 @Override48

49 public void execute(DelegateExecution execution) throwsException {50

51 //receiveTaskprocess

52

53 System.out.println("CacheEndTestRunningTask is running!");54

55 }56

57 }

1 /**

2

3 *4

5 */

6

7 packagelight.mvc.workflow.serviceTask;8

9

10

11 importorg.activiti.engine.delegate.DelegateExecution;12

13 importorg.activiti.engine.delegate.JavaDelegate;14

15 /**

16

17 *18

19 * 项目名称:lightmvc20

21 * 类名称:ServiceTask22

23 * 类描述:24

25 * 创建人:邓家海26

27 * 创建时间:2017年6月4日 下午6:18:1128

29 * 修改人:deng30

31 * 修改时间:2017年6月4日 下午6:18:1132

33 * 修改备注:34

35 *@version

36

37 *38

39 */

40

41 public class CancelEndEventTestRunningTask implementsJavaDelegate{42

43 //重写委托的提交方法

44

45 @Override46

47 public void execute(DelegateExecution execution) throwsException {48

49 //receiveTaskprocess

50

51 System.out.println("CancelEndEventTestRunningTask is running!");52

53 }54

55

56

57 }

1 /**

2

3 *4

5 */

6

7 packagelight.mvc.workflow.serviceTask;8

9

10

11 importorg.activiti.engine.delegate.DelegateExecution;12

13 importorg.activiti.engine.delegate.JavaDelegate;14

15

16

17 /**

18

19 *20

21 * 项目名称:lightmvc22

23 * 类名称:ServiceTask24

25 * 类描述:26

27 * 创建人:邓家海28

29 * 创建时间:2017年6月4日 下午6:18:1130

31 * 修改人:deng32

33 * 修改时间:2017年6月4日 下午6:18:1134

35 * 修改备注:36

37 *@version

38

39 *40

41 */

42

43 public class SubNormalEndTestRunningTask implementsJavaDelegate{44

45 //重写委托的提交方法

46

47 @Override48

49 public void execute(DelegateExecution execution) throwsException {50

51 //receiveTaskprocess

52

53 System.out.println("SubNormalEndTestRunningTask is running!");54

55 }56

57 }

6.6   延伸

下面我们改动一下流程:发现它还是一样的,终止了主流程。

图6-4 终结事件流程图设计

图6-4 终结事件执行结果

Activiti交流QQ群:634320089

java 事件cancel_Activiti结束事件(End Event)相关推荐

  1. Flowable实战(一):启动事件与结束事件

    工作流只要是涉及到组织审批和审核的情况下基本都需要,Flowable作为一个工作流现在比较流行的框架,算是activiti框架的修正版,国外这种情况还蛮多的就是,就是原班人马走了然后另起一家,据说硅谷 ...

  2. 复习步骤12- 16 BPMN事件(3)结束事件

    结束事件: --按照事件的位置,开始事件一般都市捕获事件,结束时间一般都是抛出事件 无指定结束事件 -- 什么都没指定直接就结束掉了 错误结束事件   --  往往和错误边界事件或错误开始事件一起使用 ...

  3. 【弄nèng - Activiti6】Activiti6入门篇(十九)—— 结束事件

    文章目录 1. 结束事件 1.1 简介 2. 错误结束事件 2.1 简介 2.2 流程设计 2.3 测试类 2.4 运行 2.4.1 启动任务 3. 终止结束事件 3.1 简介 4.2 流程设计 3. ...

  4. java响应鼠标滚轮事件_鼠标滚轮事件MouseWheel

    其实在大多数浏览器(IE6, IE7, IE8, Opera 10+, Safari 5+,Chrome)中,都提供了 "mousewheel" 事件.但杯具的是 Firefox ...

  5. java 鼠标单击_不通过鼠标点击,单纯的通过Java代码生成鼠标单击事件

    不通过鼠标点击,单纯的通过Java代码生成鼠标单击事件 关注:54  答案:3  信息版本:手机版 电脑版 解决时间 2021-01-13 04:21 提问者少走感情路 2021-01-12 08:3 ...

  6. java添加事件监听器_Java事件监听器的四种实现方式

    自身类作为事件监听器 外部类作为事件监听器 匿名内部类作为事件监听器 内部类作为事件监听器 自身类作为事件监听器: 1 import javax.swing.*;2 import java.awt.* ...

  7. java ee jms_Java EE6事件:JMS的轻量级替代品

    java ee jms 我今天要讨论的功能是Java EE 6中的事件机制.一般的想法是触发一个事件,并让事件监听器来接收它. 我创建了这个完全没有用的示例,但是它的简单性帮助我专注于重要的内容. 我 ...

  8. java的如何创建js_[Java教程]JS创建事件的三种方式(实例)

    [Java教程]JS创建事件的三种方式(实例) 0 2016-05-11 14:00:16 1.普通的定义方式 οnclick="Sfont=prompt('请在文本框中输入红色','红色' ...

  9. nginx事件 -- 第六篇 stale event

    微信公众号:郑尔多斯 关注可了解更多的Nginx知识.任何问题或建议,请公众号留言; 关注公众号,有趣有内涵的文章第一时间送达! 本文章原作者aweth0me,原文地址在这里点?我啊,我做了简单的修改 ...

最新文章

  1. 符缓冲流复制Java文件
  2. 基于threejs的商场楼层展示导航系统源码_便民措施再升级就诊无需问路!我院“智能导航系统”正式上线啦!...
  3. nginx文件系统大小_详解Nginx系列
  4. 《SolidWorks 2013中文版机械设计从入门到精通》一1.4 操作环境设置
  5. 原来 Sql Server 的存储过程是可以调试的
  6. atheros有线网卡LINUX驱动,请问有知道atheros无线网卡Linux驱动官方下载地址是什么吗?...
  7. Python -- reload 函数
  8. mysql 停从库_不停止 MySQL 服务增加从库的两种方式
  9. web后端http协议使用过程中安全防范及https协议实现原理
  10. The Future Of Mobile Development: HTML5 Vs. Native Apps
  11. 2019蓝桥杯参赛感受
  12. uboot 中内存测试,内存检测方法
  13. android 通知图标大小,android – 通知栏显示大图标和小图标
  14. 盒子模型与内外边距设置
  15. 如何用excel筛选相似内容_excel怎么筛选出相同内容
  16. 下载 idm 迅雷 网盘 磁力
  17. textarea层级问题
  18. 【For非数学专业】通俗理解似然函数、概率、极大似然估计和对数似然
  19. android 屏幕分辨率 屏幕密度,android分辨率,屏幕尺寸,屏幕密度关系
  20. MYSQL中的列转行

热门文章

  1. 【SQL】BETWEEN
  2. Jvm处理Java Thread 的run方法中抛出异常的流程
  3. git 提示error setting certificate verify locations 解决方案
  4. Chrome启动后打开第一个网页很慢的解决方案
  5. 原生JavaScript如何解决父元素查找指定类名的子元素的问题
  6. 分支限界法解决01背包问题
  7. 解决MySQL workbench的Can‘t connect to MySQL server on ‘127.0.0.1‘(10061)问题
  8. 如何在Java中将毫秒转换为“ X分钟,x秒”?
  9. 重装系统Win10电脑磁盘被写保护怎么办
  10. angularjs笔记,基本指令,字符串反转,过滤器