Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
ghsby
o2oa
提交
611590e6
o2oa
项目概览
ghsby
/
o2oa
落后 Fork 源项目 2880 个版本
Fork自
浙江兰德纵横网络技术股份有限公司 / o2oa
通知
1
Star
1
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,发现更多精彩内容 >>
提交
611590e6
编写于
7月 20, 2022
作者:
O
o2sword
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
流程数据发布设计4
上级
a7b7b29e
变更
5
显示空白变更内容
内联
并排
Showing
5 changed file
with
153 addition
and
36 deletion
+153
-36
o2server/x_base_core_project/src/main/java/com/x/base/core/entity/dynamic/DynamicEntityBuilder.java
.../com/x/base/core/entity/dynamic/DynamicEntityBuilder.java
+1
-1
o2server/x_processplatform_core_entity/src/main/java/com/x/processplatform/core/entity/element/Publish.java
...va/com/x/processplatform/core/entity/element/Publish.java
+8
-6
o2server/x_processplatform_service_processing/src/main/java/com/x/processplatform/service/processing/Business.java
...va/com/x/processplatform/service/processing/Business.java
+1
-0
o2server/x_processplatform_service_processing/src/main/java/com/x/processplatform/service/processing/factory/ElementFactory.java
...ssplatform/service/processing/factory/ElementFactory.java
+27
-25
o2server/x_processplatform_service_processing/src/main/java/com/x/processplatform/service/processing/processor/publish/PublishProcessor.java
...ervice/processing/processor/publish/PublishProcessor.java
+116
-4
未找到文件。
o2server/x_base_core_project/src/main/java/com/x/base/core/entity/dynamic/DynamicEntityBuilder.java
浏览文件 @
611590e6
...
...
@@ -153,7 +153,7 @@ public class DynamicEntityBuilder {
*/
private
void
createBundleField
(
Builder
builder
)
{
Field
bundleField
=
new
Field
();
bundleField
.
setName
(
"bundle"
);
bundleField
.
setName
(
DynamicEntity
.
BUNDLE_FIELD
);
bundleField
.
setDescription
(
"流程实例的JOB"
);
bundleField
.
setType
(
"string"
);
this
.
createField
(
builder
,
bundleField
,
String
.
class
);
...
...
o2server/x_processplatform_core_entity/src/main/java/com/x/processplatform/core/entity/element/Publish.java
浏览文件 @
611590e6
...
...
@@ -32,6 +32,8 @@ public class Publish extends Activity {
private
static
final
long
serialVersionUID
=
588240173459487399L
;
private
static
final
String
TABLE
=
PersistenceProperties
.
Element
.
Publish
.
table
;
public
static
final
String
PUBLISH_TARGET_CMS
=
"cms"
;
public
static
final
String
PUBLISH_TARGET_TABLE
=
"table"
;
@Override
public
String
getId
()
{
...
...
@@ -452,19 +454,19 @@ public class Publish extends Activity {
@CheckPersist
(
allowEmpty
=
true
)
private
String
notifyDataPathList
;
public
static
final
String
jaxwsParameterScript_FIELDNAME
=
"jaxwsParameter
Script"
;
public
static
final
String
targetAssignDataScript_FIELDNAME
=
"targetAssignData
Script"
;
@IdReference
(
Script
.
class
)
@FieldDescribe
(
"数据脚本."
)
@FieldDescribe
(
"
内容管理
数据脚本."
)
@Column
(
length
=
AbstractPersistenceProperties
.
processPlatform_name_length
,
name
=
ColumnNamePrefix
+
jaxwsParameter
Script_FIELDNAME
)
+
targetAssignData
Script_FIELDNAME
)
@CheckPersist
(
allowEmpty
=
true
)
private
String
targetAssignDataScript
;
public
static
final
String
jaxwsParameterScriptText_FIELDNAME
=
"jaxwsParameter
ScriptText"
;
@FieldDescribe
(
"数据脚本文本."
)
public
static
final
String
targetAssignDataScriptText_FIELDNAME
=
"targetAssignData
ScriptText"
;
@FieldDescribe
(
"
内容管理
数据脚本文本."
)
@Lob
@Basic
(
fetch
=
FetchType
.
EAGER
)
@Column
(
length
=
JpaObject
.
length_1M
,
name
=
ColumnNamePrefix
+
jaxwsParameter
ScriptText_FIELDNAME
)
@Column
(
length
=
JpaObject
.
length_1M
,
name
=
ColumnNamePrefix
+
targetAssignData
ScriptText_FIELDNAME
)
@CheckPersist
(
allowEmpty
=
true
)
private
String
targetAssignDataScriptText
;
...
...
o2server/x_processplatform_service_processing/src/main/java/com/x/processplatform/service/processing/Business.java
浏览文件 @
611590e6
...
...
@@ -34,6 +34,7 @@ public class Business {
public
static
final
String
EVENT_INVOKEJAXRSRESPONSE
=
"invokeJaxrsResponse"
;
public
static
final
String
EVENT_INVOKEJAXRSBODY
=
"invokeJaxrsBody"
;
public
static
final
String
EVENT_INVOKEJAXRSHEAD
=
"invokeJaxrsHead"
;
public
static
final
String
EVENT_PUBLISHCMSBODY
=
"publishCmsBody"
;
public
static
final
String
EVENT_SERVICE
=
"service"
;
public
static
final
String
EVENT_ROUTE
=
"route"
;
public
static
final
String
EVENT_ROUTEAPPENDTASKIDENTITY
=
"routeAppendTaskIdentity"
;
...
...
o2server/x_processplatform_service_processing/src/main/java/com/x/processplatform/service/processing/factory/ElementFactory.java
浏览文件 @
611590e6
...
...
@@ -14,6 +14,8 @@ import javax.persistence.criteria.Predicate;
import
javax.persistence.criteria.Root
;
import
javax.script.CompiledScript
;
import
com.x.processplatform.core.entity.element.*
;
import
com.x.processplatform.core.entity.element.Process
;
import
org.apache.commons.beanutils.PropertyUtils
;
import
org.apache.commons.collections4.ListUtils
;
import
org.apache.commons.lang3.StringUtils
;
...
...
@@ -26,30 +28,6 @@ import com.x.base.core.project.logger.Logger;
import
com.x.base.core.project.logger.LoggerFactory
;
import
com.x.base.core.project.scripting.ScriptingFactory
;
import
com.x.base.core.project.tools.ListTools
;
import
com.x.processplatform.core.entity.element.Activity
;
import
com.x.processplatform.core.entity.element.ActivityType
;
import
com.x.processplatform.core.entity.element.Agent
;
import
com.x.processplatform.core.entity.element.Application
;
import
com.x.processplatform.core.entity.element.Begin
;
import
com.x.processplatform.core.entity.element.Cancel
;
import
com.x.processplatform.core.entity.element.Choice
;
import
com.x.processplatform.core.entity.element.Delay
;
import
com.x.processplatform.core.entity.element.Embed
;
import
com.x.processplatform.core.entity.element.End
;
import
com.x.processplatform.core.entity.element.Form
;
import
com.x.processplatform.core.entity.element.Invoke
;
import
com.x.processplatform.core.entity.element.Manual
;
import
com.x.processplatform.core.entity.element.Mapping
;
import
com.x.processplatform.core.entity.element.Mapping_
;
import
com.x.processplatform.core.entity.element.Merge
;
import
com.x.processplatform.core.entity.element.Parallel
;
import
com.x.processplatform.core.entity.element.Process
;
import
com.x.processplatform.core.entity.element.Route
;
import
com.x.processplatform.core.entity.element.Route_
;
import
com.x.processplatform.core.entity.element.Script
;
import
com.x.processplatform.core.entity.element.Script_
;
import
com.x.processplatform.core.entity.element.Service
;
import
com.x.processplatform.core.entity.element.Split
;
import
com.x.processplatform.service.processing.AbstractFactory
;
import
com.x.processplatform.service.processing.Business
;
...
...
@@ -526,6 +504,10 @@ public class ElementFactory extends AbstractFactory {
scriptName
=
Objects
.
toString
(
PropertyUtils
.
getProperty
(
o
,
Invoke
.
jaxrsBodyScript_FIELDNAME
));
scriptText
=
Objects
.
toString
(
PropertyUtils
.
getProperty
(
o
,
Invoke
.
jaxrsBodyScriptText_FIELDNAME
));
break
;
case
Business
.
EVENT_PUBLISHCMSBODY
:
scriptName
=
Objects
.
toString
(
PropertyUtils
.
getProperty
(
o
,
Publish
.
targetAssignDataScript_FIELDNAME
));
scriptText
=
Objects
.
toString
(
PropertyUtils
.
getProperty
(
o
,
Publish
.
targetAssignDataScriptText_FIELDNAME
));
break
;
case
Business
.
EVENT_INVOKEJAXRSHEAD
:
scriptName
=
Objects
.
toString
(
PropertyUtils
.
getProperty
(
o
,
Invoke
.
jaxrsHeadScript_FIELDNAME
));
scriptText
=
Objects
.
toString
(
PropertyUtils
.
getProperty
(
o
,
Invoke
.
jaxrsHeadScriptText_FIELDNAME
));
...
...
@@ -614,6 +596,26 @@ public class ElementFactory extends AbstractFactory {
return
compiledScript
;
}
public
CompiledScript
getCompiledScript
(
String
applicationId
,
String
scriptName
,
String
scriptText
)
{
StringBuilder
sb
=
new
StringBuilder
();
CompiledScript
compiledScript
=
null
;
try
{
if
(
StringUtils
.
isNotEmpty
(
scriptName
))
{
List
<
Script
>
list
=
listScriptNestedWithApplicationWithUniqueName
(
applicationId
,
scriptName
);
for
(
Script
script
:
list
)
{
sb
.
append
(
script
.
getText
()).
append
(
System
.
lineSeparator
());
}
}
if
(
StringUtils
.
isNotEmpty
(
scriptText
))
{
sb
.
append
(
scriptText
).
append
(
System
.
lineSeparator
());
}
compiledScript
=
ScriptingFactory
.
functionalizationCompile
(
sb
.
toString
());
}
catch
(
Exception
e
)
{
logger
.
error
(
e
);
}
return
compiledScript
;
}
public
CompiledScript
getCompiledScript
(
String
applicationId
,
Route
o
,
String
event
)
throws
Exception
{
CacheCategory
cacheCategory
=
new
CacheCategory
(
Route
.
class
,
Script
.
class
);
CacheKey
cacheKey
=
new
CacheKey
(
GETCOMPILEDSCRIPT
,
applicationId
,
o
.
getId
(),
event
);
...
...
o2server/x_processplatform_service_processing/src/main/java/com/x/processplatform/service/processing/processor/publish/PublishProcessor.java
浏览文件 @
611590e6
package
com.x.processplatform.service.processing.processor.publish
;
import
com.google.gson.JsonElement
;
import
com.x.base.core.container.EntityManagerContainer
;
import
com.x.base.core.project.logger.Logger
;
import
com.x.base.core.project.logger.LoggerFactory
;
import
com.x.base.core.project.scripting.JsonScriptingExecutor
;
import
com.x.base.core.project.scripting.ScriptingFactory
;
import
com.x.base.core.project.tools.ListTools
;
import
com.x.processplatform.core.entity.content.Work
;
import
com.x.processplatform.core.entity.element.Embed
;
import
com.x.processplatform.core.entity.element.Publish
;
import
com.x.processplatform.core.entity.element.Route
;
import
com.x.processplatform.core.entity.element.*
;
import
com.x.processplatform.core.entity.log.Signal
;
import
com.x.processplatform.service.processing.Business
;
import
com.x.processplatform.service.processing.WrapScriptObject
;
import
com.x.processplatform.service.processing.processor.AeiObjects
;
import
com.x.processplatform.service.processing.processor.invoke.InvokeProcessor
;
import
org.apache.commons.lang3.StringUtils
;
import
javax.script.CompiledScript
;
import
javax.script.ScriptContext
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.Objects
;
/**
* 数据发布节点处理器
...
...
@@ -46,13 +54,112 @@ public class PublishProcessor extends AbstractPublishProcessor {
.
push
(
Signal
.
publishExecute
(
aeiObjects
.
getWork
().
getActivityToken
(),
publish
));
List
<
Work
>
results
=
new
ArrayList
<>();
boolean
passThrough
=
false
;
switch
(
publish
.
getPublishTarget
())
{
case
Publish
.
PUBLISH_TARGET_CMS
:
// 可以根据返回脚本判断时候流转
passThrough
=
true
;
break
;
case
Publish
.
PUBLISH_TARGET_TABLE
:
// 可以根据返回脚本判断时候流转
passThrough
=
true
;
break
;
default
:
break
;
}
if
(
passThrough
)
{
results
.
add
(
aeiObjects
.
getWork
());
}
else
{
LOGGER
.
info
(
"work title:{}, id:{} public return false, stay in the current activity."
,
()
->
aeiObjects
.
getWork
().
getTitle
(),
()
->
aeiObjects
.
getWork
().
getId
());
}
if
(
passThrough
)
{
results
.
add
(
aeiObjects
.
getWork
());
}
return
results
;
}
private
boolean
publishToTable
(
AeiObjects
aeiObjects
,
Publish
publish
)
throws
Exception
{
return
true
;
}
private
List
<
AssignTable
>
evalTableBody
(
AeiObjects
aeiObjects
,
Publish
publish
)
throws
Exception
{
List
<
AssignTable
>
list
=
new
ArrayList
<>();
if
(
ListTools
.
isNotEmpty
(
publish
.
getPublishTableList
())){
for
(
PublishTable
publishTable
:
publish
.
getPublishTableList
()){
AssignTable
assignTable
=
new
AssignTable
();
assignTable
.
setTableName
(
publishTable
.
getTableName
());
if
(
PublishTable
.
TABLE_DATA_BY_PATH
.
equals
(
publishTable
.
getQueryTableDataBy
())){
if
(
StringUtils
.
isNotBlank
(
publishTable
.
getQueryTableDataPath
())){
Object
o
=
aeiObjects
.
getData
().
find
(
publishTable
.
getQueryTableDataPath
());
if
(
o
!=
null
){
assignTable
.
setData
(
gson
.
toJsonTree
(
o
));
}
}
}
else
{
WrapScriptObject
assignBody
=
new
WrapScriptObject
();
if
(
hasTableAssignDataScript
(
publishTable
))
{
ScriptContext
scriptContext
=
aeiObjects
.
scriptContext
();
CompiledScript
cs
=
aeiObjects
.
business
().
element
().
getCompiledScript
(
aeiObjects
.
getApplication
().
getId
(),
aeiObjects
.
getActivity
(),
Business
.
EVENT_PUBLISHCMSBODY
);
scriptContext
.
getBindings
(
ScriptContext
.
ENGINE_SCOPE
).
put
(
ScriptingFactory
.
BINDING_NAME_JAXRSBODY
,
assignBody
);
JsonScriptingExecutor
.
jsonElement
(
cs
,
scriptContext
,
o
->
{
if
(!
o
.
isJsonNull
())
{
assignTable
.
setData
(
o
);
}
});
}
}
if
(
assignTable
.
getData
()
==
null
){
assignTable
.
setData
(
gson
.
toJsonTree
(
aeiObjects
.
getData
()));
}
}
}
return
list
;
}
private
String
evalCmsBody
(
AeiObjects
aeiObjects
,
Publish
publish
)
throws
Exception
{
WrapScriptObject
assignBody
=
new
WrapScriptObject
();
if
(
hasCmsAssignDataScript
(
publish
))
{
ScriptContext
scriptContext
=
aeiObjects
.
scriptContext
();
CompiledScript
cs
=
aeiObjects
.
business
().
element
().
getCompiledScript
(
aeiObjects
.
getApplication
().
getId
(),
aeiObjects
.
getActivity
(),
Business
.
EVENT_PUBLISHCMSBODY
);
scriptContext
.
getBindings
(
ScriptContext
.
ENGINE_SCOPE
).
put
(
ScriptingFactory
.
BINDING_NAME_JAXRSBODY
,
assignBody
);
JsonScriptingExecutor
.
jsonElement
(
cs
,
scriptContext
,
o
->
{
if
(!
o
.
isJsonNull
())
{
assignBody
.
set
(
gson
.
toJson
(
o
));
}
});
}
return
assignBody
.
get
();
}
public
class
AssignTable
{
private
String
tableName
;
private
JsonElement
data
;
public
String
getTableName
()
{
return
tableName
;
}
public
void
setTableName
(
String
tableName
)
{
this
.
tableName
=
tableName
;
}
public
JsonElement
getData
()
{
return
data
;
}
public
void
setData
(
JsonElement
data
)
{
this
.
data
=
data
;
}
}
@Override
protected
void
executingCommitted
(
AeiObjects
aeiObjects
,
Publish
publish
,
List
<
Work
>
works
)
throws
Exception
{
// Do nothing
...
...
@@ -77,4 +184,9 @@ public class PublishProcessor extends AbstractPublishProcessor {
return
StringUtils
.
isNotEmpty
(
publish
.
getTargetAssignDataScript
())
||
StringUtils
.
isNotEmpty
(
publish
.
getTargetAssignDataScriptText
());
}
private
boolean
hasTableAssignDataScript
(
PublishTable
publishTable
)
{
return
StringUtils
.
isNotEmpty
(
publishTable
.
getTargetAssignDataScript
())
||
StringUtils
.
isNotEmpty
(
publishTable
.
getTargetAssignDataScriptText
());
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录