Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
3842242
chore(): prepare for alternative BpmProvider implementation
os-cib Nov 24, 2025
e1ee094
chore(): fix review results
os-cib Nov 24, 2025
7d0695e
chore() direct provider in webclient
os-cib Nov 27, 2025
71b260e
Merge branch 'main' into cibseven-CIB7-792-prepare-BpmProvider-altern…
os-cib Dec 2, 2025
cbfe868
resolve copilot comments
os-cib Dec 9, 2025
c6d49e8
Merge branch 'main' into cibseven-CIB7-792-prepare-BpmProvider-altern…
os-cib Dec 15, 2025
88bf50a
chore: get ProcessEngine from EngineUtil instead of BpmPlatform
os-cib Dec 15, 2025
14921b3
Merge branch 'main' into cibseven-CIB7-792-prepare-BpmProvider-altern…
os-cib Jan 13, 2026
b339945
chore: remove instance check to SevenProvider
os-cib Jan 15, 2026
4c876f1
chore: split cibseven-webclient-core into -core/-interfaces/-direct-p…
os-cib Jan 15, 2026
a27bac7
chore: acces to ProcessEngine alternatively with BpmPlatform or Engin…
os-cib Jan 16, 2026
f74335b
Merge branch 'main' into cibseven-CIB7-792-prepare-BpmProvider-altern…
os-cib Feb 4, 2026
402b4d9
chore: throw error if no process engine could be found
os-cib Feb 4, 2026
bfa507a
Merge branch 'main' into cibseven-CIB7-792-prepare-BpmProvider-altern…
os-cib Apr 9, 2026
984cb49
missing methods added
os-cib Apr 9, 2026
3643365
no NPE on empty result
os-cib Apr 13, 2026
48d45cf
duplicate files removed
os-cib Apr 14, 2026
c543d0f
chore: unused dependencies removed
os-cib Apr 15, 2026
5d9552d
chore: ^Cscription improved
os-cib Apr 15, 2026
655a798
chore: test build removed
os-cib Apr 15, 2026
0e99944
Merge branch 'main' into cibseven-CIB7-792-prepare-BpmProvider-altern…
os-cib Apr 16, 2026
f2bafca
fix: Remove unnecessry user resolving
patrickCIB May 22, 2026
ad7f54e
Merge branch 'main' of github.com:cibseven/cibseven-webclient into ci…
patrickCIB May 22, 2026
98a8792
feat: Implement new interfaces
patrickCIB May 22, 2026
1ed33c2
fix: fix sb4 compatibility
patrickCIB May 22, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 15 additions & 0 deletions cibseven-direct-provider/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
/target/
/.settings/
/.classpath
/.project
/bin/
/.springBeans
/build/
/src/main/resources/seven-webclient.yaml

# IntelliJ
.idea/
*.iml

# MacOS
.DS_Store
37 changes: 37 additions & 0 deletions cibseven-direct-provider/pom.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.cibseven.webapp</groupId>
<artifactId>cibseven-webclient</artifactId>
<version>2.2.0-SNAPSHOT</version>
</parent>
<artifactId>cibseven-direct-provider</artifactId>
<name>CIB seven webclient direct provider</name>
<description>Services of the direct provider access to the cibseven engine</description>

<dependencies>
<dependency>
<groupId>jakarta.ws.rs</groupId>
<artifactId>jakarta.ws.rs-api</artifactId>
</dependency>
<dependency>
<groupId>org.cibseven.bpm</groupId>
<artifactId>cibseven-engine-rest-core-jakarta</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.cibseven.bpm</groupId>
<artifactId>cibseven-engine</artifactId>
<scope>provided</scope>
<type>jar</type>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.cibseven.webapp</groupId>
<artifactId>cibseven-interfaces</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>


</project>
Original file line number Diff line number Diff line change
@@ -0,0 +1,158 @@
/*
* Copyright CIB software GmbH and/or licensed to CIB software GmbH
* under one or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information regarding copyright
* ownership. CIB software licenses this file to you under the Apache License,
* Version 2.0; 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.cibseven.webapp.providers;

import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Map;

import org.cibseven.bpm.engine.AuthorizationException;
import org.cibseven.bpm.engine.ProcessEngineException;
import org.cibseven.bpm.engine.exception.NotFoundException;
import org.cibseven.bpm.engine.history.HistoricActivityInstance;
import org.cibseven.bpm.engine.history.HistoricActivityInstanceQuery;
import org.cibseven.bpm.engine.rest.dto.history.HistoricActivityInstanceDto;
import org.cibseven.bpm.engine.rest.dto.history.HistoricActivityInstanceQueryDto;
import org.cibseven.bpm.engine.rest.dto.runtime.ActivityInstanceDto;
import org.cibseven.bpm.engine.rest.util.QueryUtil;
import org.cibseven.webapp.auth.CIBUser;
import org.cibseven.webapp.exception.NoObjectFoundException;
import org.cibseven.webapp.exception.SystemException;
import org.cibseven.webapp.rest.model.ActivityInstance;
import org.cibseven.webapp.rest.model.ActivityInstanceHistory;

public class DirectActivityProvider implements IActivityProvider {

DirectProviderUtil directProviderUtil;
public DirectActivityProvider(DirectProviderUtil directProviderUtil){
this.directProviderUtil = directProviderUtil;
}

@Override
public ActivityInstance findActivityInstance(String processInstanceId, CIBUser user) {
org.cibseven.bpm.engine.runtime.ActivityInstance activityInstance = null;
try {
activityInstance = directProviderUtil.getProcessEngine(user).getRuntimeService().getActivityInstance(processInstanceId);
} catch (AuthorizationException e) {
throw e;
} catch (ProcessEngineException e) {
throw new SystemException(e.getMessage(), e);
}

if (activityInstance == null) {
throw new NoObjectFoundException(new SystemException("Process instance with id " + processInstanceId + " does not exist"));
}

ActivityInstanceDto result = ActivityInstanceDto.fromActivityInstance(activityInstance);
return directProviderUtil.convertValue(result, ActivityInstance.class, user);
}

@Override
public List<ActivityInstanceHistory> findActivitiesInstancesHistory(Map<String, Object> queryParams, CIBUser user) {
HistoricActivityInstanceQueryDto queryHistoricActivityInstanceDto = directProviderUtil.getObjectMapper(user).convertValue(queryParams,
HistoricActivityInstanceQueryDto.class);
return queryHistoricActivityInstance(queryHistoricActivityInstanceDto, user);

}

@Override
public List<ActivityInstanceHistory> findActivitiesInstancesHistory(String processInstanceId, CIBUser user) {
HistoricActivityInstanceQueryDto queryHistoricActivityInstanceDto = new HistoricActivityInstanceQueryDto();
queryHistoricActivityInstanceDto.setProcessInstanceId(processInstanceId);
return queryHistoricActivityInstance(queryHistoricActivityInstanceDto, user);
}

@Override
public ActivityInstance findActivityInstances(String processInstanceId, CIBUser user) throws SystemException {

org.cibseven.bpm.engine.runtime.ActivityInstance activityInstance = null;

try {
activityInstance = directProviderUtil.getProcessEngine(user).getRuntimeService().getActivityInstance(processInstanceId);
} catch (AuthorizationException e) {
throw e;
} catch (ProcessEngineException e) {
throw new SystemException(e.getMessage(), e);
}

if (activityInstance == null) {
throw new NoObjectFoundException(new SystemException("Process instance with id " + processInstanceId + " does not exist"));
}

ActivityInstanceDto result = ActivityInstanceDto.fromActivityInstance(activityInstance);
return directProviderUtil.convertValue(result, ActivityInstance.class, user);
}

@Override
public List<ActivityInstanceHistory> findActivityInstanceHistory(String processInstanceId, CIBUser user)
throws SystemException {

HistoricActivityInstanceQueryDto queryHistoricActivityInstanceDto = new HistoricActivityInstanceQueryDto();
queryHistoricActivityInstanceDto.setProcessInstanceId(processInstanceId);
return queryHistoricActivityInstance(queryHistoricActivityInstanceDto, user);
}

@Override
public void deleteVariableByExecutionId(String executionId, String variableName, CIBUser user) {
try {
directProviderUtil.getProcessEngine(user).getRuntimeService().removeVariableLocal(executionId, variableName);
} catch (AuthorizationException e) {
throw e;
} catch (ProcessEngineException e) {
String errorMessage = String.format("Cannot delete %s variable %s: %s", executionId, variableName, e.getMessage());
throw new SystemException(errorMessage, e);
}

}

@Override
public void deleteVariableHistoryInstance(String id, CIBUser user) {
try {
directProviderUtil.getProcessEngine(user).getHistoryService().deleteHistoricVariableInstance(id);
} catch (NotFoundException nfe) { // rewrite status code from bad request
// (400) to not found (404)
throw new SystemException(nfe.getMessage(), nfe);
}
}

@Override
public Collection<ActivityInstanceHistory> findActivitiesProcessDefinitionHistory(String processDefinitionId,
Map<String, Object> params, CIBUser user) {
HistoricActivityInstanceQueryDto queryHistoricActivityInstanceDto = directProviderUtil.getObjectMapper(user).convertValue(params,
HistoricActivityInstanceQueryDto.class);
queryHistoricActivityInstanceDto.setProcessDefinitionId(processDefinitionId);
return queryHistoricActivityInstance(queryHistoricActivityInstanceDto, user);

}

private List<ActivityInstanceHistory> queryHistoricActivityInstance(
HistoricActivityInstanceQueryDto queryHistoricActivityInstanceDto, CIBUser user) {
queryHistoricActivityInstanceDto.setObjectMapper(directProviderUtil.getObjectMapper(user));
HistoricActivityInstanceQuery query = queryHistoricActivityInstanceDto.toQuery(directProviderUtil.getProcessEngine(user));
List<HistoricActivityInstance> matchingHistoricActivityInstances = QueryUtil.list(query, null, null);

List<ActivityInstanceHistory> historicActivityInstanceResults = new ArrayList<>();
for (HistoricActivityInstance historicActivityInstance : matchingHistoricActivityInstances) {
HistoricActivityInstanceDto resultHistoricActivityInstance = new HistoricActivityInstanceDto();
HistoricActivityInstanceDto.fromHistoricActivityInstance(resultHistoricActivityInstance, historicActivityInstance);
historicActivityInstanceResults.add(directProviderUtil.convertValue(resultHistoricActivityInstance, ActivityInstanceHistory.class, user));
}
return historicActivityInstanceResults;
}

}
Loading