This is an automated email from the ASF dual-hosted git repository.
tiagobento pushed a commit to branch main
in repository
https://gitbox.apache.org/repos/asf/incubator-kie-kogito-runtimes.git
The following commit(s) were added to refs/heads/main by this push:
new de30dba21c [incubator-kie-issues#2060] Implemented DummyProcess to use
as placeholder when the application does not contain any bpmn but
kie-addons-quarkus-source-files (#4017)
de30dba21c is described below
commit de30dba21c84e80a2458e108d33a5a28c0a75ca8
Author: Gabriele Cardosi <[email protected]>
AuthorDate: Tue Aug 12 18:43:58 2025 +0200
[incubator-kie-issues#2060] Implemented DummyProcess to use as placeholder
when the application does not contain any bpmn but
kie-addons-quarkus-source-files (#4017)
Co-authored-by: Gabriele-Cardosi <[email protected]>
---
.../kie/kogito/codegen/process/DummyProcess.java | 111 +++++++++++++++++++++
.../kie/kogito/codegen/process/ProcessCodegen.java | 41 ++++++--
.../util/SourceFilesProviderProducerUtil.java | 3 +-
3 files changed, 144 insertions(+), 11 deletions(-)
diff --git
a/kogito-codegen-modules/kogito-codegen-processes/src/main/java/org/kie/kogito/codegen/process/DummyProcess.java
b/kogito-codegen-modules/kogito-codegen-processes/src/main/java/org/kie/kogito/codegen/process/DummyProcess.java
new file mode 100644
index 0000000000..140dd6077a
--- /dev/null
+++
b/kogito-codegen-modules/kogito-codegen-processes/src/main/java/org/kie/kogito/codegen/process/DummyProcess.java
@@ -0,0 +1,111 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.kie.kogito.codegen.process;
+
+import java.util.List;
+import java.util.Map;
+
+import org.kie.api.definition.process.Node;
+import org.kie.api.definition.process.WorkflowElementIdentifier;
+import org.kie.api.io.Resource;
+import org.kie.kogito.internal.process.runtime.KogitoWorkflowProcess;
+
+/**
+ * Class used as "placeholder" in case there are no processes in the
application but
+ * kie-addons-quarkus-source-files is present.
+ * Temporary hack for incubator-kie-issues#2060
+ */
+public class DummyProcess implements KogitoWorkflowProcess {
+
+ @Override
+ public String getVisibility() {
+ return "";
+ }
+
+ @Override
+ public List<Node> getNodesRecursively() {
+ return List.of();
+ }
+
+ @Override
+ public Node[] getNodes() {
+ return new Node[0];
+ }
+
+ @Override
+ public Node getNode(WorkflowElementIdentifier workflowElementIdentifier) {
+ return null;
+ }
+
+ @Override
+ public Node getNodeByUniqueId(String s) {
+ return null;
+ }
+
+ @Override
+ public KnowledgeType getKnowledgeType() {
+ return null;
+ }
+
+ @Override
+ public String getNamespace() {
+ return "dummy-namespace";
+ }
+
+ @Override
+ public String getId() {
+ return "dummy-id";
+ }
+
+ @Override
+ public String getName() {
+ return "dummy-name";
+ }
+
+ @Override
+ public String getVersion() {
+ return "dummy-version";
+ }
+
+ @Override
+ public String getPackageName() {
+ return "dummy-package-name";
+ }
+
+ @Override
+ public String getType() {
+ return "dummy-type";
+ }
+
+ @Override
+ public Map<String, Object> getMetaData() {
+ return Map.of();
+ }
+
+ @Override
+ public Resource getResource() {
+ return null;
+ }
+
+ @Override
+ public void setResource(Resource resource) {
+
+ }
+}
diff --git
a/kogito-codegen-modules/kogito-codegen-processes/src/main/java/org/kie/kogito/codegen/process/ProcessCodegen.java
b/kogito-codegen-modules/kogito-codegen-processes/src/main/java/org/kie/kogito/codegen/process/ProcessCodegen.java
index ee8b0c7509..fc33742b1e 100644
---
a/kogito-codegen-modules/kogito-codegen-processes/src/main/java/org/kie/kogito/codegen/process/ProcessCodegen.java
+++
b/kogito-codegen-modules/kogito-codegen-processes/src/main/java/org/kie/kogito/codegen/process/ProcessCodegen.java
@@ -119,7 +119,28 @@ public class ProcessCodegen extends AbstractGenerator {
Map<String, byte[]> processSVGMap = new HashMap<>();
Map<String, Throwable> processesErrors = new HashMap<>();
boolean useSvgAddon = context.getAddonsConfig().useProcessSVG();
- final List<GeneratedInfo<KogitoWorkflowProcess>> processes =
resources.stream()
+ final List<GeneratedInfo<KogitoWorkflowProcess>> processes =
getGeneratedInfoForProcesses(context, resources,
+ useSvgAddon,
+ processSVGMap,
+ processesErrors);
+ if (processes.isEmpty() && context.getAddonsConfig().useSourceFiles())
{ // Temporary hack for incubator-kie-issues#2060 */
+ processes.add(new GeneratedInfo<>(new DummyProcess()));
+ }
+ if (useSvgAddon) {
+
context.addContextAttribute(ContextAttributesConstants.PROCESS_AUTO_SVG_MAPPING,
processSVGMap);
+ }
+ context.addContextAttribute(IS_BUSINESS_CALENDAR_PRESENT,
resources.stream().anyMatch(resource ->
resource.resource().getSourcePath().endsWith(BUSINESS_CALENDAR_PATH)));
+
+ handleValidation(context, processesErrors);
+
+ return ofProcesses(context, processes);
+ }
+
+ private static List<GeneratedInfo<KogitoWorkflowProcess>>
getGeneratedInfoForProcesses(KogitoBuildContext context,
Collection<CollectedResource> resources,
+ boolean useSvgAddon,
+ Map<String, byte[]> processSVGMap,
+ Map<String, Throwable> processesErrors) {
+ return resources.stream()
.map(CollectedResource::resource)
.flatMap(resource -> {
try {
@@ -145,15 +166,6 @@ public class ProcessCodegen extends AbstractGenerator {
//Validate parsed processes
.map(processInfo -> validate(processInfo, processesErrors))
.collect(toList());
-
- if (useSvgAddon) {
-
context.addContextAttribute(ContextAttributesConstants.PROCESS_AUTO_SVG_MAPPING,
processSVGMap);
- }
- context.addContextAttribute(IS_BUSINESS_CALENDAR_PRESENT,
resources.stream().anyMatch(resource ->
resource.resource().getSourcePath().endsWith(BUSINESS_CALENDAR_PATH)));
-
- handleValidation(context, processesErrors);
-
- return ofProcesses(context, processes);
}
private static GeneratedInfo<KogitoWorkflowProcess>
addResource(GeneratedInfo<KogitoWorkflowProcess> info, Resource r) {
@@ -299,6 +311,9 @@ public class ProcessCodegen extends AbstractGenerator {
// first we generate all the data classes from variable declarations
for (WorkflowProcess workFlowProcess : processes.values()) {
+ if (workFlowProcess instanceof DummyProcess) {
+ continue; // Temporary hack for incubator-kie-issues#2060
+ }
// transaction is disabled by default for SW types
boolean defaultTransactionEnabled =
!KogitoWorkflowProcess.SW_TYPE.equals(workFlowProcess.getType());
if (isTransactionEnabled(this, context(),
defaultTransactionEnabled)) {
@@ -319,6 +334,9 @@ public class ProcessCodegen extends AbstractGenerator {
boolean isServerless = false;
// then we generate work items task inputs and outputs if any
for (WorkflowProcess workFlowProcess : processes.values()) {
+ if (workFlowProcess instanceof DummyProcess) {
+ continue; // Temporary hack for incubator-kie-issues#2060
+ }
isServerless |=
KogitoWorkflowProcess.SW_TYPE.equals(workFlowProcess.getType());
if
(KogitoWorkflowProcess.SW_TYPE.equals(workFlowProcess.getType())) {
continue;
@@ -334,6 +352,9 @@ public class ProcessCodegen extends AbstractGenerator {
// collect all process descriptors (exec model)
for (KogitoWorkflowProcess workFlowProcess : processes.values()) {
+ if (workFlowProcess instanceof DummyProcess) {
+ continue; // Temporary hack for incubator-kie-issues#2060
+ }
ProcessExecutableModelGenerator execModelGen =
new ProcessExecutableModelGenerator(workFlowProcess,
execModelGenerator);
String packageName = workFlowProcess.getPackageName();
diff --git
a/kogito-codegen-modules/kogito-codegen-processes/src/main/java/org/kie/kogito/codegen/process/util/SourceFilesProviderProducerUtil.java
b/kogito-codegen-modules/kogito-codegen-processes/src/main/java/org/kie/kogito/codegen/process/util/SourceFilesProviderProducerUtil.java
index 5da214b251..0368d40af9 100644
---
a/kogito-codegen-modules/kogito-codegen-processes/src/main/java/org/kie/kogito/codegen/process/util/SourceFilesProviderProducerUtil.java
+++
b/kogito-codegen-modules/kogito-codegen-processes/src/main/java/org/kie/kogito/codegen/process/util/SourceFilesProviderProducerUtil.java
@@ -25,6 +25,7 @@ import java.util.Map;
import org.kie.api.io.Resource;
import org.kie.kogito.codegen.api.context.KogitoBuildContext;
+import org.kie.kogito.codegen.process.DummyProcess;
import org.kie.kogito.codegen.process.ProcessCodegenException;
import org.kie.kogito.internal.process.runtime.KogitoWorkflowProcess;
@@ -61,7 +62,7 @@ public class SourceFilesProviderProducerUtil {
.findFirst()
.orElseThrow(() -> new
ProcessCodegenException("SourceFileProviderProducerTemplate does not contain a
class declaration"));
- if (workflows.isEmpty()) {
+ if (workflows.isEmpty() ||
workflows.values().stream().allMatch(DummyProcess.class::isInstance)) { //
Temporary hack for incubator-kie-issues#2060
producerClass.remove(staticInitDeclaration);
} else {
registerWorkflows(staticInitDeclaration, workflows, context);
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]