Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
weixin_42566577
o2oa
提交
e3310e73
o2oa
项目概览
weixin_42566577
/
o2oa
与 Fork 源项目一致
Fork自
浙江兰德纵横网络技术股份有限公司 / o2oa
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
o2oa
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
e3310e73
编写于
2月 08, 2022
作者:
R
Ray
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
添加待办执行前,待办执行后,待办停留调用代码
上级
94d20052
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
138 addition
and
46 deletion
+138
-46
o2server/x_processplatform_core_entity/src/main/java/com/x/processplatform/core/entity/element/Process.java
...va/com/x/processplatform/core/entity/element/Process.java
+6
-0
o2server/x_processplatform_service_processing/src/main/java/com/x/processplatform/service/processing/factory/ElementFactory.java
...ssplatform/service/processing/factory/ElementFactory.java
+14
-0
o2server/x_processplatform_service_processing/src/main/java/com/x/processplatform/service/processing/jaxrs/task/ActionProcessing.java
...tform/service/processing/jaxrs/task/ActionProcessing.java
+86
-32
o2server/x_processplatform_service_processing/src/main/java/com/x/processplatform/service/processing/processor/manual/AbstractManualProcessor.java
.../processing/processor/manual/AbstractManualProcessor.java
+9
-1
o2server/x_processplatform_service_processing/src/main/java/com/x/processplatform/service/processing/processor/manual/ManualProcessor.java
.../service/processing/processor/manual/ManualProcessor.java
+23
-13
未找到文件。
o2server/x_processplatform_core_entity/src/main/java/com/x/processplatform/core/entity/element/Process.java
浏览文件 @
e3310e73
...
...
@@ -591,26 +591,32 @@ public class Process extends SliceJpaObject {
return
manualStayScriptText
;
}
public
static
final
String
MANUALBEFORETASKSCRIPT_FIELDNAME
=
"manualBeforeTaskScript"
;
@FieldDescribe
(
"待办执行前脚本."
)
@Transient
private
String
manualBeforeTaskScript
;
public
static
final
String
MANUALBEFORETASKSCRIPTTEXT_FIELDNAME
=
"manualBeforeTaskScriptText"
;
@FieldDescribe
(
"待办执行前脚本文本."
)
@Transient
private
String
manualBeforeTaskScriptText
;
public
static
final
String
MANUALAFTERTASKSCRIPT_FIELDNAME
=
"manualAfterTaskScript"
;
@FieldDescribe
(
"待办执行后脚本."
)
@Transient
private
String
manualAfterTaskScript
;
public
static
final
String
MANUALAFTERTASKSCRIPTTEXT_FIELDNAME
=
"manualAfterTaskScriptText"
;
@FieldDescribe
(
"待办执行后脚本文本."
)
@Transient
private
String
manualAfterTaskScriptText
;
public
static
final
String
MANUALSTAYSCRIPT_FIELDNAME
=
"manualStayScript"
;
@FieldDescribe
(
"人工活动有停留脚本."
)
@Transient
private
String
manualStayScript
;
public
static
final
String
MANUALSTAYSCRIPTTEXT_FIELDNAME
=
"manualStayScriptText"
;
@FieldDescribe
(
"人工活动有停留脚本文本."
)
@Transient
private
String
manualStayScriptText
;
...
...
o2server/x_processplatform_service_processing/src/main/java/com/x/processplatform/service/processing/factory/ElementFactory.java
浏览文件 @
e3310e73
...
...
@@ -676,6 +676,20 @@ public class ElementFactory extends AbstractFactory {
scriptName
=
Objects
.
toString
(
PropertyUtils
.
getProperty
(
o
,
Process
.
afterEndScript_FIELDNAME
));
scriptText
=
Objects
.
toString
(
PropertyUtils
.
getProperty
(
o
,
Process
.
afterEndScriptText_FIELDNAME
));
break
;
case
Business
.
EVENT_MANUALSTAY
:
scriptName
=
Objects
.
toString
(
PropertyUtils
.
getProperty
(
o
,
Process
.
MANUALSTAYSCRIPT_FIELDNAME
));
scriptText
=
Objects
.
toString
(
PropertyUtils
.
getProperty
(
o
,
Process
.
MANUALSTAYSCRIPTTEXT_FIELDNAME
));
break
;
case
Business
.
EVENT_MANUALBEFORETASK
:
scriptName
=
Objects
.
toString
(
PropertyUtils
.
getProperty
(
o
,
Process
.
MANUALBEFORETASKSCRIPT_FIELDNAME
));
scriptText
=
Objects
.
toString
(
PropertyUtils
.
getProperty
(
o
,
Process
.
MANUALBEFORETASKSCRIPTTEXT_FIELDNAME
));
break
;
case
Business
.
EVENT_MANUALAFTERTASK
:
scriptName
=
Objects
.
toString
(
PropertyUtils
.
getProperty
(
o
,
Process
.
MANUALAFTERTASKSCRIPT_FIELDNAME
));
scriptText
=
Objects
.
toString
(
PropertyUtils
.
getProperty
(
o
,
Process
.
MANUALAFTERTASKSCRIPTTEXT_FIELDNAME
));
break
;
default
:
break
;
}
...
...
o2server/x_processplatform_service_processing/src/main/java/com/x/processplatform/service/processing/jaxrs/task/ActionProcessing.java
浏览文件 @
e3310e73
...
...
@@ -5,7 +5,6 @@ import java.util.Objects;
import
java.util.concurrent.Callable
;
import
java.util.concurrent.TimeUnit
;
import
javax.script.CompiledScript
;
import
javax.script.ScriptContext
;
import
org.apache.commons.lang3.BooleanUtils
;
...
...
@@ -80,47 +79,98 @@ class ActionProcessing extends BaseAction {
private
void
callManualBeforeTaskScript
(
Business
business
,
Task
task
)
throws
Exception
{
if
(
Objects
.
equals
(
task
.
getActivityType
(),
ActivityType
.
manual
))
{
Manual
manual
=
business
.
element
().
get
(
task
.
getActivity
(),
Manual
.
class
);
if
((
null
!=
manual
)
&&
(
StringUtils
.
isNotEmpty
(
manual
.
getManualBeforeTaskScript
())
||
StringUtils
.
isNotEmpty
(
manual
.
getManualBeforeTaskScriptText
())))
{
Work
work
=
business
.
entityManagerContainer
().
find
(
task
.
getWork
(),
Work
.
class
);
if
(
null
!=
work
)
{
AeiObjects
aeiObjects
=
new
AeiObjects
(
business
,
work
,
manual
,
new
ProcessingConfigurator
(),
new
ProcessingAttributes
());
ScriptContext
scriptContext
=
aeiObjects
.
scriptContext
();
((
WorkContext
)
scriptContext
.
getAttribute
(
ScriptingFactory
.
BINDING_NAME_WORKCONTEXT
))
.
bindTask
(
task
);
WorkDataHelper
workDataHelper
=
new
WorkDataHelper
(
business
.
entityManagerContainer
(),
work
);
CompiledScript
cs
=
business
.
element
().
getCompiledScript
(
task
.
getApplication
(),
manual
,
Business
.
EVENT_MANUALBEFORETASK
);
JsonScriptingExecutor
.
eval
(
cs
,
scriptContext
);
workDataHelper
.
update
(
aeiObjects
.
getData
());
business
.
entityManagerContainer
().
commit
();
Process
process
=
business
.
element
().
get
(
task
.
getProcess
(),
Process
.
class
);
if
((
null
!=
manual
)
&&
(
null
!=
process
))
{
boolean
processHasManualBeforeTaskScript
=
processHasManualBeforeTaskScript
(
process
);
boolean
hasManualBeforeTaskScript
=
hasManualBeforeTaskScript
(
manual
);
if
(
processHasManualBeforeTaskScript
||
hasManualBeforeTaskScript
)
{
Work
work
=
business
.
entityManagerContainer
().
find
(
task
.
getWork
(),
Work
.
class
);
if
(
null
!=
work
)
{
evalCallManualBeforeTaskScript
(
business
,
task
,
manual
,
process
,
processHasManualBeforeTaskScript
,
hasManualBeforeTaskScript
,
work
);
}
}
}
}
}
private
void
callManualAfterTaskScript
(
Business
business
,
Task
task
,
TaskCompleted
taskCompleted
)
private
void
evalCallManualBeforeTaskScript
(
Business
business
,
Task
task
,
Manual
manual
,
Process
process
,
boolean
processHasManualBeforeTaskScript
,
boolean
hasManualBeforeTaskScript
,
Work
work
)
throws
Exception
{
if
(
Objects
.
equals
(
task
.
getActivityType
(),
ActivityType
.
manual
))
{
Manual
manual
=
business
.
element
().
get
(
task
.
getActivity
(),
Manual
.
class
);
if
((
null
!=
manual
)
&&
(
StringUtils
.
isNotEmpty
(
manual
.
getManualAfterTaskScript
())
||
StringUtils
.
isNotEmpty
(
manual
.
getManualAfterTaskScriptText
())))
{
Work
work
=
business
.
entityManagerContainer
().
find
(
task
.
getWork
(),
Work
.
class
);
if
(
null
!=
work
)
{
AeiObjects
aeiObjects
=
new
AeiObjects
(
business
,
work
,
manual
,
new
ProcessingConfigurator
(),
new
ProcessingAttributes
());
ScriptContext
scriptContext
=
aeiObjects
.
scriptContext
();
((
WorkContext
)
scriptContext
.
getAttribute
(
ScriptingFactory
.
BINDING_NAME_WORKCONTEXT
))
.
bindTaskCompleted
(
taskCompleted
);
CompiledScript
cs
=
business
.
element
().
getCompiledScript
(
task
.
getApplication
(),
manual
,
Business
.
EVENT_MANUALAFTERTASK
);
JsonScriptingExecutor
.
eval
(
cs
,
scriptContext
);
AeiObjects
aeiObjects
=
new
AeiObjects
(
business
,
work
,
manual
,
new
ProcessingConfigurator
(),
new
ProcessingAttributes
());
ScriptContext
scriptContext
=
aeiObjects
.
scriptContext
();
((
WorkContext
)
scriptContext
.
getAttribute
(
ScriptingFactory
.
BINDING_NAME_WORKCONTEXT
)).
bindTask
(
task
);
WorkDataHelper
workDataHelper
=
new
WorkDataHelper
(
business
.
entityManagerContainer
(),
work
);
if
(
processHasManualBeforeTaskScript
)
{
JsonScriptingExecutor
.
eval
(
business
.
element
().
getCompiledScript
(
task
.
getApplication
(),
process
,
Business
.
EVENT_MANUALBEFORETASK
),
scriptContext
);
}
if
(
hasManualBeforeTaskScript
)
{
JsonScriptingExecutor
.
eval
(
business
.
element
().
getCompiledScript
(
task
.
getApplication
(),
manual
,
Business
.
EVENT_MANUALBEFORETASK
),
scriptContext
);
}
workDataHelper
.
update
(
aeiObjects
.
getData
());
business
.
entityManagerContainer
().
commit
();
}
private
boolean
hasManualBeforeTaskScript
(
Manual
manual
)
{
return
((
null
!=
manual
)
&&
(
StringUtils
.
isNotEmpty
(
manual
.
getManualBeforeTaskScript
())
||
StringUtils
.
isNotEmpty
(
manual
.
getManualBeforeTaskScriptText
())));
}
private
boolean
processHasManualBeforeTaskScript
(
Process
process
)
{
return
((
null
!=
process
)
&&
(
StringUtils
.
isNotEmpty
(
process
.
getManualBeforeTaskScript
())
||
StringUtils
.
isNotEmpty
(
process
.
getManualBeforeTaskScriptText
())));
}
private
void
callManualAfterTaskScript
(
Business
business
,
TaskCompleted
taskCompleted
)
throws
Exception
{
if
(
Objects
.
equals
(
taskCompleted
.
getActivityType
(),
ActivityType
.
manual
))
{
Manual
manual
=
business
.
element
().
get
(
taskCompleted
.
getActivity
(),
Manual
.
class
);
Process
process
=
business
.
element
().
get
(
taskCompleted
.
getProcess
(),
Process
.
class
);
if
((
null
!=
manual
)
&&
(
null
!=
process
))
{
boolean
processHasManualAfterTaskScript
=
processHasManualAfterTaskScript
(
process
);
boolean
hasManualAfterTaskScript
=
hasManualAfterTaskScript
(
manual
);
if
(
processHasManualAfterTaskScript
||
hasManualAfterTaskScript
)
{
Work
work
=
business
.
entityManagerContainer
().
find
(
taskCompleted
.
getWork
(),
Work
.
class
);
if
(
null
!=
work
)
{
evalCallManualAfterTaskScript
(
business
,
taskCompleted
,
manual
,
process
,
processHasManualAfterTaskScript
,
hasManualAfterTaskScript
,
work
);
}
}
}
}
}
private
void
evalCallManualAfterTaskScript
(
Business
business
,
TaskCompleted
taskCompleted
,
Manual
manual
,
Process
process
,
boolean
processHasManualAfterTaskScript
,
boolean
hasManualAfterTaskScript
,
Work
work
)
throws
Exception
{
AeiObjects
aeiObjects
=
new
AeiObjects
(
business
,
work
,
manual
,
new
ProcessingConfigurator
(),
new
ProcessingAttributes
());
ScriptContext
scriptContext
=
aeiObjects
.
scriptContext
();
((
WorkContext
)
scriptContext
.
getAttribute
(
ScriptingFactory
.
BINDING_NAME_WORKCONTEXT
))
.
bindTaskCompleted
(
taskCompleted
);
if
(
processHasManualAfterTaskScript
)
{
JsonScriptingExecutor
.
eval
(
business
.
element
().
getCompiledScript
(
taskCompleted
.
getApplication
(),
process
,
Business
.
EVENT_MANUALAFTERTASK
),
scriptContext
);
}
if
(
hasManualAfterTaskScript
)
{
JsonScriptingExecutor
.
eval
(
business
.
element
().
getCompiledScript
(
taskCompleted
.
getApplication
(),
manual
,
Business
.
EVENT_MANUALAFTERTASK
),
scriptContext
);
}
}
private
boolean
hasManualAfterTaskScript
(
Manual
manual
)
{
return
((
null
!=
manual
)
&&
(
StringUtils
.
isNotEmpty
(
manual
.
getManualAfterTaskScript
())
||
StringUtils
.
isNotEmpty
(
manual
.
getManualAfterTaskScriptText
())));
}
private
boolean
processHasManualAfterTaskScript
(
Process
process
)
{
return
((
null
!=
process
)
&&
(
StringUtils
.
isNotEmpty
(
process
.
getManualAfterTaskScript
())
||
StringUtils
.
isNotEmpty
(
process
.
getManualAfterTaskScriptText
())));
}
public
ActionResult
<
Wo
>
call
()
throws
Exception
{
ActionResult
<
Wo
>
result
=
new
ActionResult
<>();
Wo
wo
=
new
Wo
();
...
...
@@ -162,7 +212,7 @@ class ActionProcessing extends BaseAction {
emc
.
remove
(
task
,
CheckRemoveType
.
all
);
emc
.
commit
();
/* 待办执行后脚本,不能修改数据. */
callManualAfterTaskScript
(
business
,
task
,
task
Completed
);
callManualAfterTaskScript
(
business
,
taskCompleted
);
MessageFactory
.
task_to_taskCompleted
(
taskCompleted
);
wo
.
setId
(
taskCompleted
.
getId
());
}
...
...
@@ -172,10 +222,14 @@ class ActionProcessing extends BaseAction {
}
public
static
class
Wo
extends
WoId
{
private
static
final
long
serialVersionUID
=
1L
;
}
public
static
class
Wi
extends
WrapProcessing
{
private
static
final
long
serialVersionUID
=
-
6828623155146710691L
;
}
}
o2server/x_processplatform_service_processing/src/main/java/com/x/processplatform/service/processing/processor/manual/AbstractManualProcessor.java
浏览文件 @
e3310e73
package
com.x.processplatform.service.processing.processor.manual
;
import
java.lang.reflect.InvocationTargetException
;
import
java.util.List
;
import
org.apache.commons.lang3.StringUtils
;
...
...
@@ -10,6 +11,7 @@ import com.x.base.core.project.logger.LoggerFactory;
import
com.x.processplatform.core.entity.content.Work
;
import
com.x.processplatform.core.entity.element.Activity
;
import
com.x.processplatform.core.entity.element.Manual
;
import
com.x.processplatform.core.entity.element.Process
;
import
com.x.processplatform.core.entity.element.Route
;
import
com.x.processplatform.service.processing.processor.AbstractProcessor
;
import
com.x.processplatform.service.processing.processor.AeiObjects
;
...
...
@@ -75,11 +77,17 @@ public abstract class AbstractManualProcessor extends AbstractProcessor {
protected
abstract
void
inquiringCommitted
(
AeiObjects
aeiObjects
,
Manual
manual
)
throws
Exception
;
protected
boolean
hasManualStayScript
(
Activity
activity
)
throws
Exception
{
protected
boolean
hasManualStayScript
(
Activity
activity
)
throws
IllegalAccessException
,
InvocationTargetException
,
NoSuchMethodException
{
return
StringUtils
.
isNotEmpty
(
activity
.
get
(
Manual
.
manualStayScript_FIELDNAME
,
String
.
class
))
||
StringUtils
.
isNotEmpty
(
activity
.
get
(
Manual
.
manualStayScriptText_FIELDNAME
,
String
.
class
));
}
protected
boolean
hasManualStayScript
(
Process
process
)
{
return
StringUtils
.
isNotEmpty
(
process
.
getManualStayScript
())
||
StringUtils
.
isNotEmpty
(
process
.
getManualStayScriptText
());
}
protected
void
mergeTaskCompleted
(
AeiObjects
aeiObjects
,
Work
work
,
Work
oldest
)
{
try
{
aeiObjects
.
getTaskCompleteds
().
stream
().
filter
(
o
->
StringUtils
.
equals
(
o
.
getWork
(),
work
.
getId
()))
...
...
o2server/x_processplatform_service_processing/src/main/java/com/x/processplatform/service/processing/processor/manual/ManualProcessor.java
浏览文件 @
e3310e73
...
...
@@ -337,20 +337,30 @@ public class ManualProcessor extends AbstractManualProcessor {
@Override
protected
void
executingCommitted
(
AeiObjects
aeiObjects
,
Manual
manual
,
List
<
Work
>
works
)
throws
Exception
{
// Manual Work 还没有处理完 发生了停留,出发了停留事件
if
((
ListTools
.
isEmpty
(
works
))
&&
this
.
hasManualStayScript
(
manual
)
&&
(!
aeiObjects
.
getCreateTasks
().
isEmpty
()))
{
CompiledScript
cs
=
aeiObjects
.
business
().
element
().
getCompiledScript
(
aeiObjects
.
getApplication
().
getId
(),
aeiObjects
.
getActivity
(),
Business
.
EVENT_MANUALSTAY
);
ScriptContext
scriptContext
=
aeiObjects
.
scriptContext
();
Bindings
bindings
=
scriptContext
.
getBindings
(
ScriptContext
.
ENGINE_SCOPE
);
WorkContext
workContext
=
(
WorkContext
)
bindings
.
get
(
ScriptingFactory
.
BINDING_NAME_WORKCONTEXT
);
// 只有一条待办绑定到task
if
(
aeiObjects
.
getCreateTasks
().
size
()
==
1
)
{
workContext
.
bindTask
(
aeiObjects
.
getCreateTasks
().
get
(
0
));
if
((
ListTools
.
isEmpty
(
works
))
&&
(!
aeiObjects
.
getCreateTasks
().
isEmpty
()))
{
boolean
hasManualStayScript
=
this
.
hasManualStayScript
(
manual
);
boolean
processHasManualStayScript
=
this
.
hasManualStayScript
(
aeiObjects
.
getProcess
());
if
(
hasManualStayScript
||
processHasManualStayScript
)
{
ScriptContext
scriptContext
=
aeiObjects
.
scriptContext
();
Bindings
bindings
=
scriptContext
.
getBindings
(
ScriptContext
.
ENGINE_SCOPE
);
WorkContext
workContext
=
(
WorkContext
)
bindings
.
get
(
ScriptingFactory
.
BINDING_NAME_WORKCONTEXT
);
// 只有一条待办绑定到task
if
(
aeiObjects
.
getCreateTasks
().
size
()
==
1
)
{
workContext
.
bindTask
(
aeiObjects
.
getCreateTasks
().
get
(
0
));
}
if
(
processHasManualStayScript
)
{
JsonScriptingExecutor
.
eval
(
aeiObjects
.
business
().
element
().
getCompiledScript
(
aeiObjects
.
getApplication
().
getId
(),
aeiObjects
.
getProcess
(),
Business
.
EVENT_MANUALSTAY
),
scriptContext
);
}
if
(
hasManualStayScript
)
{
JsonScriptingExecutor
.
eval
(
aeiObjects
.
business
().
element
().
getCompiledScript
(
aeiObjects
.
getApplication
().
getId
(),
aeiObjects
.
getActivity
(),
Business
.
EVENT_MANUALSTAY
),
scriptContext
);
}
// 解除绑定
workContext
.
bindTask
(
null
);
}
JsonScriptingExecutor
.
eval
(
cs
,
scriptContext
);
// 解除绑定
workContext
.
bindTask
(
null
);
}
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录