Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
z_stack
Activiti
提交
e08cf91c
A
Activiti
项目概览
z_stack
/
Activiti
9 个月 前同步成功
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
A
Activiti
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
未验证
提交
e08cf91c
编写于
1月 03, 2023
作者:
B
Bassam Al-Sarori
提交者:
GitHub
1月 03, 2023
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
candidate starters publish events (#4191)
上级
92e6216d
变更
7
隐藏空白更改
内联
并排
Showing
7 changed file
with
160 addition
and
11 deletion
+160
-11
activiti-core/activiti-api-impl/activiti-api-process-model-impl/src/main/java/org/activiti/api/runtime/event/impl/ProcessCandidateStarterGroupAddedEvents.java
...e/event/impl/ProcessCandidateStarterGroupAddedEvents.java
+33
-0
activiti-core/activiti-api-impl/activiti-api-process-model-impl/src/main/java/org/activiti/api/runtime/event/impl/ProcessCandidateStarterUserAddedEvents.java
...me/event/impl/ProcessCandidateStarterUserAddedEvents.java
+33
-0
activiti-core/activiti-spring-boot-starter/src/main/java/org/activiti/spring/ProcessCandidateStartersEventProducer.java
...ctiviti/spring/ProcessCandidateStartersEventProducer.java
+34
-7
activiti-core/activiti-spring-boot-starter/src/main/java/org/activiti/spring/boot/ProcessEngineAutoConfiguration.java
.../activiti/spring/boot/ProcessEngineAutoConfiguration.java
+6
-2
activiti-core/activiti-spring-boot-starter/src/test/java/org/activiti/spring/boot/process/ProcessCandidateStarterEventIT.java
...i/spring/boot/process/ProcessCandidateStarterEventIT.java
+30
-2
activiti-core/activiti-spring-boot-starter/src/test/java/org/activiti/spring/boot/process/listener/ProcessCandidateStarterGroupAddedListener.java
...s/listener/ProcessCandidateStarterGroupAddedListener.java
+12
-0
activiti-core/activiti-spring-boot-starter/src/test/java/org/activiti/spring/boot/process/listener/ProcessCandidateStarterUserAddedListener.java
...ss/listener/ProcessCandidateStarterUserAddedListener.java
+12
-0
未找到文件。
activiti-core/activiti-api-impl/activiti-api-process-model-impl/src/main/java/org/activiti/api/runtime/event/impl/ProcessCandidateStarterGroupAddedEvents.java
0 → 100644
浏览文件 @
e08cf91c
/*
* Copyright 2010-2020 Alfresco Software, Ltd.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
org.activiti.api.runtime.event.impl
;
import
org.activiti.api.process.runtime.events.ProcessCandidateStarterGroupAddedEvent
;
import
java.util.List
;
public
class
ProcessCandidateStarterGroupAddedEvents
{
private
List
<
ProcessCandidateStarterGroupAddedEvent
>
events
;
public
ProcessCandidateStarterGroupAddedEvents
(
List
<
ProcessCandidateStarterGroupAddedEvent
>
events
)
{
this
.
events
=
events
;
}
public
List
<
ProcessCandidateStarterGroupAddedEvent
>
getEvents
()
{
return
events
;
}
}
activiti-core/activiti-api-impl/activiti-api-process-model-impl/src/main/java/org/activiti/api/runtime/event/impl/ProcessCandidateStarterUserAddedEvents.java
0 → 100644
浏览文件 @
e08cf91c
/*
* Copyright 2010-2020 Alfresco Software, Ltd.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
org.activiti.api.runtime.event.impl
;
import
org.activiti.api.process.runtime.events.ProcessCandidateStarterUserAddedEvent
;
import
java.util.List
;
public
class
ProcessCandidateStarterUserAddedEvents
{
private
List
<
ProcessCandidateStarterUserAddedEvent
>
events
;
public
ProcessCandidateStarterUserAddedEvents
(
List
<
ProcessCandidateStarterUserAddedEvent
>
events
)
{
this
.
events
=
events
;
}
public
List
<
ProcessCandidateStarterUserAddedEvent
>
getEvents
()
{
return
events
;
}
}
activiti-core/activiti-spring-boot-starter/src/main/java/org/activiti/spring/ProcessCandidateStartersEventProducer.java
浏览文件 @
e08cf91c
...
...
@@ -19,14 +19,18 @@ import org.activiti.api.process.runtime.events.ProcessCandidateStarterGroupAdded
import
org.activiti.api.process.runtime.events.ProcessCandidateStarterUserAddedEvent
;
import
org.activiti.api.process.runtime.events.listener.ProcessRuntimeEventListener
;
import
org.activiti.api.runtime.event.impl.ProcessCandidateStarterGroupAddedEventImpl
;
import
org.activiti.api.runtime.event.impl.ProcessCandidateStarterGroupAddedEvents
;
import
org.activiti.api.runtime.event.impl.ProcessCandidateStarterUserAddedEventImpl
;
import
org.activiti.api.runtime.event.impl.ProcessCandidateStarterUserAddedEvents
;
import
org.activiti.api.runtime.model.impl.ProcessCandidateStarterGroupImpl
;
import
org.activiti.api.runtime.model.impl.ProcessCandidateStarterUserImpl
;
import
org.activiti.engine.RepositoryService
;
import
org.activiti.engine.repository.ProcessDefinition
;
import
org.activiti.engine.task.IdentityLink
;
import
org.activiti.runtime.api.event.impl.ProcessCandidateStarterEventConverterHelper
;
import
org.springframework.context.ApplicationEventPublisher
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.Optional
;
...
...
@@ -36,39 +40,50 @@ public class ProcessCandidateStartersEventProducer extends AbstractActivitiSmart
private
List
<
ProcessRuntimeEventListener
<
ProcessCandidateStarterUserAddedEvent
>>
candidateStarterUserListeners
;
private
List
<
ProcessRuntimeEventListener
<
ProcessCandidateStarterGroupAddedEvent
>>
candidateStarterGroupListeners
;
private
ProcessCandidateStarterEventConverterHelper
processCandidateStarterEventConverterHelper
=
new
ProcessCandidateStarterEventConverterHelper
();
private
ApplicationEventPublisher
eventPublisher
;
public
ProcessCandidateStartersEventProducer
(
RepositoryService
repositoryService
,
List
<
ProcessRuntimeEventListener
<
ProcessCandidateStarterUserAddedEvent
>>
candidateStarterUserListeners
,
List
<
ProcessRuntimeEventListener
<
ProcessCandidateStarterGroupAddedEvent
>>
candidateStarterGroupListeners
)
{
List
<
ProcessRuntimeEventListener
<
ProcessCandidateStarterGroupAddedEvent
>>
candidateStarterGroupListeners
,
ApplicationEventPublisher
eventPublisher
)
{
this
.
repositoryService
=
repositoryService
;
this
.
candidateStarterUserListeners
=
Optional
.
ofNullable
(
candidateStarterUserListeners
).
orElseGet
(()
->
List
.
of
());
this
.
candidateStarterGroupListeners
=
Optional
.
ofNullable
(
candidateStarterGroupListeners
).
orElseGet
(()
->
List
.
of
());
this
.
eventPublisher
=
eventPublisher
;
}
@Override
public
void
doStart
()
{
List
<
ProcessDefinition
>
processDefinitions
=
repositoryService
.
createProcessDefinitionQuery
().
latestVersion
().
list
();
List
<
ProcessCandidateStarterUserAddedEvent
>
candidateStarterUserAddedEvents
=
new
ArrayList
<>();
List
<
ProcessCandidateStarterGroupAddedEvent
>
candidateStarterGroupAddedEvents
=
new
ArrayList
<>();
for
(
ProcessDefinition
processDefinition
:
processDefinitions
)
{
List
<
IdentityLink
>
identityLinks
=
repositoryService
.
getIdentityLinksForProcessDefinition
(
processDefinition
.
getId
());
for
(
IdentityLink
identityLink:
identityLinks
){
if
(
processCandidateStarterEventConverterHelper
.
isProcessCandidateStarterUserLink
(
identityLink
))
{
notifyCandidateStarterUserAddedListeners
(
identityLink
);
ProcessCandidateStarterUserAddedEvent
processCandidateStarterUserAddedEvent
=
createCandidateStarterUserEvent
(
identityLink
);
candidateStarterUserAddedEvents
.
add
(
processCandidateStarterUserAddedEvent
);
notifyCandidateStarterUserAddedListeners
(
processCandidateStarterUserAddedEvent
);
}
else
if
(
processCandidateStarterEventConverterHelper
.
isProcessCandidateStarterGroupLink
(
identityLink
))
{
notifyCandidateStarterGroupAddedListeners
(
identityLink
);
ProcessCandidateStarterGroupAddedEvent
processCandidateStarterGroupAddedEvent
=
createCandidateStarterGroupEvent
(
identityLink
);
candidateStarterGroupAddedEvents
.
add
(
processCandidateStarterGroupAddedEvent
);
notifyCandidateStarterGroupAddedListeners
(
processCandidateStarterGroupAddedEvent
);
}
}
}
publishCandidateStarterEvents
(
candidateStarterUserAddedEvents
,
candidateStarterGroupAddedEvents
);
}
private
void
notifyCandidateStarterUserAddedListeners
(
IdentityLink
identityLink
)
{
private
void
notifyCandidateStarterUserAddedListeners
(
ProcessCandidateStarterUserAddedEvent
processCandidateStarterUserAddedEvent
)
{
for
(
ProcessRuntimeEventListener
<
ProcessCandidateStarterUserAddedEvent
>
listener:
candidateStarterUserListeners
)
{
listener
.
onEvent
(
createCandidateStarterUserEvent
(
identityLink
)
);
listener
.
onEvent
(
processCandidateStarterUserAddedEvent
);
}
}
private
void
notifyCandidateStarterGroupAddedListeners
(
IdentityLink
identityLink
)
{
private
void
notifyCandidateStarterGroupAddedListeners
(
ProcessCandidateStarterGroupAddedEvent
processCandidateStarterGroupAddedEvent
)
{
for
(
ProcessRuntimeEventListener
<
ProcessCandidateStarterGroupAddedEvent
>
listener:
candidateStarterGroupListeners
)
{
listener
.
onEvent
(
createCandidateStarterGroupEvent
(
identityLink
)
);
listener
.
onEvent
(
processCandidateStarterGroupAddedEvent
);
}
}
...
...
@@ -82,6 +97,18 @@ public class ProcessCandidateStartersEventProducer extends AbstractActivitiSmart
new
ProcessCandidateStarterGroupImpl
(
identityLink
.
getProcessDefinitionId
(),
identityLink
.
getGroupId
()));
}
private
void
publishCandidateStarterEvents
(
List
<
ProcessCandidateStarterUserAddedEvent
>
candidateStarterUserAddedEvents
,
List
<
ProcessCandidateStarterGroupAddedEvent
>
candidateStarterGroupAddedEvents
)
{
if
(!
candidateStarterUserAddedEvents
.
isEmpty
())
{
eventPublisher
.
publishEvent
(
new
ProcessCandidateStarterUserAddedEvents
(
candidateStarterUserAddedEvents
));
}
if
(!
candidateStarterGroupAddedEvents
.
isEmpty
())
{
eventPublisher
.
publishEvent
(
new
ProcessCandidateStarterGroupAddedEvents
(
candidateStarterGroupAddedEvents
));
}
}
@Override
public
void
doStop
()
{
// nothing
...
...
activiti-core/activiti-spring-boot-starter/src/main/java/org/activiti/spring/boot/ProcessEngineAutoConfiguration.java
浏览文件 @
e08cf91c
...
...
@@ -221,8 +221,12 @@ public class ProcessEngineAutoConfiguration extends AbstractProcessEngineAutoCon
@ConditionalOnMissingBean
public
ProcessCandidateStartersEventProducer
processCandidateStartersEventProducer
(
RepositoryService
repositoryService
,
@Autowired
(
required
=
false
)
List
<
ProcessRuntimeEventListener
<
ProcessCandidateStarterUserAddedEvent
>>
candidateStarterUserListeners
,
@Autowired
(
required
=
false
)
List
<
ProcessRuntimeEventListener
<
ProcessCandidateStarterGroupAddedEvent
>>
candidateStarterGroupListeners
)
{
return
new
ProcessCandidateStartersEventProducer
(
repositoryService
,
candidateStarterUserListeners
,
candidateStarterGroupListeners
);
@Autowired
(
required
=
false
)
List
<
ProcessRuntimeEventListener
<
ProcessCandidateStarterGroupAddedEvent
>>
candidateStarterGroupListeners
,
ApplicationEventPublisher
eventPublisher
)
{
return
new
ProcessCandidateStartersEventProducer
(
repositoryService
,
candidateStarterUserListeners
,
candidateStarterGroupListeners
,
eventPublisher
);
}
@Bean
...
...
activiti-core/activiti-spring-boot-starter/src/test/java/org/activiti/spring/boot/process/ProcessCandidateStarterEventIT.java
浏览文件 @
e08cf91c
...
...
@@ -17,6 +17,10 @@ package org.activiti.spring.boot.process;
import
org.activiti.api.process.model.ProcessCandidateStarterGroup
;
import
org.activiti.api.process.model.ProcessCandidateStarterUser
;
import
org.activiti.api.process.runtime.events.ProcessCandidateStarterGroupAddedEvent
;
import
org.activiti.api.process.runtime.events.ProcessCandidateStarterUserAddedEvent
;
import
org.activiti.api.runtime.event.impl.ProcessCandidateStarterGroupAddedEvents
;
import
org.activiti.api.runtime.event.impl.ProcessCandidateStarterUserAddedEvents
;
import
org.activiti.engine.RepositoryService
;
import
org.activiti.spring.boot.process.listener.ProcessCandidateStarterGroupAddedListener
;
import
org.activiti.spring.boot.process.listener.ProcessCandidateStarterGroupRemovedListener
;
...
...
@@ -59,6 +63,14 @@ public class ProcessCandidateStarterEventIT {
candidateStarterGroupListener
.
getCandidateStarterGroups
());
}
@Test
public
void
shouldPublishProcessCandidateStarterAddedEvents
()
{
String
processDefinitionId
=
getProcessDefinitionId
();
assertPublishedCandidateStartersEvents
(
processDefinitionId
,
candidateStarterUserListener
.
getPublishedEvents
(),
candidateStarterGroupListener
.
getPublishedEvents
());
}
@Test
public
void
shouldTriggerProcessCandidateStarterRemovedEvents
()
{
String
processDefinitionId
=
getProcessDefinitionId
();
...
...
@@ -67,8 +79,8 @@ public class ProcessCandidateStarterEventIT {
repositoryService
.
deleteCandidateStarterGroup
(
processDefinitionId
,
"activitiTeam"
);
assertCandidateStarters
(
processDefinitionId
,
candidateStarterUserRemovedListener
.
getCandidateStarterUsers
(),
candidateStarterGroupRemovedListener
.
getCandidateStarterGroups
());
candidateStarterUserRemovedListener
.
getCandidateStarterUsers
(),
candidateStarterGroupRemovedListener
.
getCandidateStarterGroups
());
}
private
String
getProcessDefinitionId
()
{
...
...
@@ -88,4 +100,20 @@ public class ProcessCandidateStarterEventIT {
.
extracting
(
ProcessCandidateStarterGroup:
:
getProcessDefinitionId
,
ProcessCandidateStarterGroup:
:
getGroupId
)
.
contains
(
tuple
(
processDefinitionId
,
"activitiTeam"
));
}
private
void
assertPublishedCandidateStartersEvents
(
String
processDefinitionId
,
ProcessCandidateStarterUserAddedEvents
candidateStarterUsersAddedEvents
,
ProcessCandidateStarterGroupAddedEvents
candidateStarterGroupsAddedEvents
)
{
assertThat
(
candidateStarterUsersAddedEvents
).
isNotNull
();
assertThat
(
candidateStarterUsersAddedEvents
.
getEvents
())
.
extracting
(
ProcessCandidateStarterUserAddedEvent:
:
getEntity
)
.
extracting
(
ProcessCandidateStarterUser:
:
getProcessDefinitionId
,
ProcessCandidateStarterUser:
:
getUserId
)
.
contains
(
tuple
(
processDefinitionId
,
"user"
));
assertThat
(
candidateStarterGroupsAddedEvents
).
isNotNull
();
assertThat
(
candidateStarterGroupsAddedEvents
.
getEvents
())
.
extracting
(
ProcessCandidateStarterGroupAddedEvent:
:
getEntity
)
.
extracting
(
ProcessCandidateStarterGroup:
:
getProcessDefinitionId
,
ProcessCandidateStarterGroup:
:
getGroupId
)
.
contains
(
tuple
(
processDefinitionId
,
"activitiTeam"
));
}
}
activiti-core/activiti-spring-boot-starter/src/test/java/org/activiti/spring/boot/process/listener/ProcessCandidateStarterGroupAddedListener.java
浏览文件 @
e08cf91c
...
...
@@ -18,6 +18,8 @@ package org.activiti.spring.boot.process.listener;
import
org.activiti.api.process.model.ProcessCandidateStarterGroup
;
import
org.activiti.api.process.runtime.events.ProcessCandidateStarterGroupAddedEvent
;
import
org.activiti.api.process.runtime.events.listener.ProcessRuntimeEventListener
;
import
org.activiti.api.runtime.event.impl.ProcessCandidateStarterGroupAddedEvents
;
import
org.springframework.context.event.EventListener
;
import
org.springframework.stereotype.Component
;
import
java.util.ArrayList
;
...
...
@@ -27,6 +29,7 @@ import java.util.List;
public
class
ProcessCandidateStarterGroupAddedListener
implements
ProcessRuntimeEventListener
<
ProcessCandidateStarterGroupAddedEvent
>
{
private
List
<
ProcessCandidateStarterGroup
>
candidateStarterGroups
=
new
ArrayList
<>();
private
ProcessCandidateStarterGroupAddedEvents
events
;
@Override
public
void
onEvent
(
ProcessCandidateStarterGroupAddedEvent
event
)
{
...
...
@@ -37,4 +40,13 @@ public class ProcessCandidateStarterGroupAddedListener implements ProcessRuntime
return
candidateStarterGroups
;
}
@EventListener
public
void
publishedEvent
(
ProcessCandidateStarterGroupAddedEvents
events
)
{
this
.
events
=
events
;
}
public
ProcessCandidateStarterGroupAddedEvents
getPublishedEvents
()
{
return
events
;
}
}
activiti-core/activiti-spring-boot-starter/src/test/java/org/activiti/spring/boot/process/listener/ProcessCandidateStarterUserAddedListener.java
浏览文件 @
e08cf91c
...
...
@@ -18,6 +18,8 @@ package org.activiti.spring.boot.process.listener;
import
org.activiti.api.process.model.ProcessCandidateStarterUser
;
import
org.activiti.api.process.runtime.events.ProcessCandidateStarterUserAddedEvent
;
import
org.activiti.api.process.runtime.events.listener.ProcessRuntimeEventListener
;
import
org.activiti.api.runtime.event.impl.ProcessCandidateStarterUserAddedEvents
;
import
org.springframework.context.event.EventListener
;
import
org.springframework.stereotype.Component
;
import
java.util.ArrayList
;
...
...
@@ -27,6 +29,7 @@ import java.util.List;
public
class
ProcessCandidateStarterUserAddedListener
implements
ProcessRuntimeEventListener
<
ProcessCandidateStarterUserAddedEvent
>
{
private
List
<
ProcessCandidateStarterUser
>
candidateStarterUsers
=
new
ArrayList
<>();
private
ProcessCandidateStarterUserAddedEvents
events
;
@Override
public
void
onEvent
(
ProcessCandidateStarterUserAddedEvent
event
)
{
...
...
@@ -37,4 +40,13 @@ public class ProcessCandidateStarterUserAddedListener implements ProcessRuntimeE
return
candidateStarterUsers
;
}
@EventListener
public
void
publishedEvents
(
ProcessCandidateStarterUserAddedEvents
events
)
{
this
.
events
=
events
;
}
public
ProcessCandidateStarterUserAddedEvents
getPublishedEvents
()
{
return
events
;
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录