diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..3e13671 --- /dev/null +++ b/.gitignore @@ -0,0 +1,17 @@ +Thumbs.db +.DS_Store +.gradle +build/ +target/ +out/ +.idea +*.iml +*.ipr +*.iws +.project +.settings +.classpath +.factorypath + +indexes/ +**/node_modules diff --git a/.mvn/wrapper/maven-wrapper.jar b/.mvn/wrapper/maven-wrapper.jar new file mode 100755 index 0000000..c6feb8b Binary files /dev/null and b/.mvn/wrapper/maven-wrapper.jar differ diff --git a/.mvn/wrapper/maven-wrapper.properties b/.mvn/wrapper/maven-wrapper.properties new file mode 100755 index 0000000..b58bfae --- /dev/null +++ b/.mvn/wrapper/maven-wrapper.properties @@ -0,0 +1 @@ +distributionUrl=https://repo1.maven.org/maven2/org/apache/maven/apache-maven/3.9.0/apache-maven-3.9.0-bin.zip diff --git a/.mvn/wrapper/wrapper.iml b/.mvn/wrapper/wrapper.iml new file mode 100644 index 0000000..abfc464 --- /dev/null +++ b/.mvn/wrapper/wrapper.iml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..1c7ae56 --- /dev/null +++ b/README.md @@ -0,0 +1,32 @@ +# Maven plugin for CBDG + +[Test Project](https://github.com/NovatecConsulting/cbdg-maven-test) + +## Code documentation +Hosted via [github pages](https://novatecconsulting.github.io/camunda-bpmn-documentation-generator/) + +## The configuration of the plugin in the POM of target-project + + + ... + + info.novatec + cbdg-maven-plugin + 1.0-SNAPSHOT + + + + generate + install + + generate + + + + + ... + + +## Run the goal of the plugin on the target-project + + ./mw cbdg:generate diff --git a/mw b/mw new file mode 100755 index 0000000..93eb752 --- /dev/null +++ b/mw @@ -0,0 +1,238 @@ +#!/bin/sh +# ---------------------------------------------------------------------------- +# 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. +# ---------------------------------------------------------------------------- + +# ---------------------------------------------------------------------------- +# Maven2 Start Up Batch script +# +# Required ENV vars: +# ------------------ +# JAVA_HOME - location of a JDK home dir +# +# Optional ENV vars +# ----------------- +# M2_HOME - location of maven2's installed home dir +# MAVEN_OPTS - parameters passed to the Java VM when running Maven +# e.g. to debug Maven itself, use +# set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +# MAVEN_SKIP_RC - flag to disable loading of mavenrc files +# ---------------------------------------------------------------------------- + +if [ -z "$MAVEN_SKIP_RC" ] ; then + + if [ -f /etc/mavenrc ] ; then + . /etc/mavenrc + fi + + if [ -f "$HOME/.mavenrc" ] ; then + . "$HOME/.mavenrc" + fi + +fi + +# OS specific support. $var _must_ be set to either true or false. +cygwin=false; +darwin=false; +mingw=false +case "`uname`" in + CYGWIN*) cygwin=true ;; + MINGW*) mingw=true;; + Darwin*) darwin=true + # + # Look for the Apple JDKs first to preserve the existing behaviour, and then look + # for the new JDKs provided by Oracle. + # + if [ -z "$JAVA_HOME" ] && [ -L /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK ] ; then + # + # Apple JDKs + # + export JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home + fi + + if [ -z "$JAVA_HOME" ] && [ -L /System/Library/Java/JavaVirtualMachines/CurrentJDK ] ; then + # + # Apple JDKs + # + export JAVA_HOME=/System/Library/Java/JavaVirtualMachines/CurrentJDK/Contents/Home + fi + + if [ -z "$JAVA_HOME" ] && [ -L "/Library/Java/JavaVirtualMachines/CurrentJDK" ] ; then + # + # Oracle JDKs + # + export JAVA_HOME=/Library/Java/JavaVirtualMachines/CurrentJDK/Contents/Home + fi + + if [ -z "$JAVA_HOME" ] && [ -x "/usr/libexec/java_home" ]; then + # + # Apple JDKs + # + export JAVA_HOME=`/usr/libexec/java_home` + fi + ;; +esac + +if [ -z "$JAVA_HOME" ] ; then + if [ -r /etc/gentoo-release ] ; then + JAVA_HOME=`java-config --jre-home` + fi +fi + +JAVA_HOME=$JAVA8_HOME + +if [ -z "$M2_HOME" ] ; then + ## resolve links - $0 may be a link to maven's home + PRG="$0" + + # need this for relative symlinks + while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG="`dirname "$PRG"`/$link" + fi + done + + saveddir=`pwd` + + M2_HOME=`dirname "$PRG"`/.. + + # make it fully qualified + M2_HOME=`cd "$M2_HOME" && pwd` + + cd "$saveddir" + # echo Using m2 at $M2_HOME +fi + +# For Cygwin, ensure paths are in UNIX format before anything is touched +if $cygwin ; then + [ -n "$M2_HOME" ] && + M2_HOME=`cygpath --unix "$M2_HOME"` + [ -n "$JAVA_HOME" ] && + JAVA_HOME=`cygpath --unix "$JAVA_HOME"` + [ -n "$CLASSPATH" ] && + CLASSPATH=`cygpath --path --unix "$CLASSPATH"` +fi + +# For Migwn, ensure paths are in UNIX format before anything is touched +if $mingw ; then + [ -n "$M2_HOME" ] && + M2_HOME="`(cd "$M2_HOME"; pwd)`" + [ -n "$JAVA_HOME" ] && + JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`" + # TODO classpath? +fi + +if [ -z "$JAVA_HOME" ]; then + javaExecutable="`which javac`" + if [ -n "$javaExecutable" ] && ! [ "`expr \"$javaExecutable\" : '\([^ ]*\)'`" = "no" ]; then + # readlink(1) is not available as standard on Solaris 10. + readLink=`which readlink` + if [ ! `expr "$readLink" : '\([^ ]*\)'` = "no" ]; then + if $darwin ; then + javaHome="`dirname \"$javaExecutable\"`" + javaExecutable="`cd \"$javaHome\" && pwd -P`/javac" + else + javaExecutable="`readlink -f \"$javaExecutable\"`" + fi + javaHome="`dirname \"$javaExecutable\"`" + javaHome=`expr "$javaHome" : '\(.*\)/bin'` + JAVA_HOME="$javaHome" + export JAVA_HOME + fi + fi +fi + +if [ -z "$JAVACMD" ] ; then + if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + else + JAVACMD="`which java`" + fi +fi + +if [ ! -x "$JAVACMD" ] ; then + echo "Error: JAVA_HOME is not defined correctly." >&2 + echo " We cannot execute $JAVACMD" >&2 + exit 1 +fi + +if [ -z "$JAVA_HOME" ] ; then + echo "Warning: JAVA_HOME environment variable is not set." +fi + +CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher + +# traverses directory structure from process work directory to filesystem root +# first directory with .mvn subdirectory is considered project base directory +find_maven_basedir() { + local basedir=$(pwd) + local wdir=$(pwd) + while [ "$wdir" != '/' ] ; do + if [ -d "$wdir"/.mvn ] ; then + basedir=$wdir + break + fi + wdir=$(cd "$wdir/.."; pwd) + done + echo "${basedir}" +} + +# concatenates all lines of a file +concat_lines() { + if [ -f "$1" ]; then + echo "$(tr -s '\n' ' ' < "$1")" + fi +} + +export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-$(find_maven_basedir)} +MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS" + +# For Cygwin, switch paths to Windows format before running java +if $cygwin; then + [ -n "$M2_HOME" ] && + M2_HOME=`cygpath --path --windows "$M2_HOME"` + [ -n "$JAVA_HOME" ] && + JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"` + [ -n "$CLASSPATH" ] && + CLASSPATH=`cygpath --path --windows "$CLASSPATH"` + [ -n "$MAVEN_PROJECTBASEDIR" ] && + MAVEN_PROJECTBASEDIR=`cygpath --path --windows "$MAVEN_PROJECTBASEDIR"` +fi + +# Provide a "standardized" way to retrieve the CLI args that will +# work with both Windows and non-Windows executions. +MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $@" +export MAVEN_CMD_LINE_ARGS + +WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +# avoid using MAVEN_CMD_LINE_ARGS below since that would loose parameter escaping in $@ +exec "$JAVACMD" \ + $MAVEN_OPTS \ + -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \ + "-Dmaven.home=${M2_HOME}" "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \ + ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@" \ No newline at end of file diff --git a/mw.cmd b/mw.cmd new file mode 100755 index 0000000..633ce11 --- /dev/null +++ b/mw.cmd @@ -0,0 +1,115 @@ +@REM ---------------------------------------------------------------------------- +@REM Licensed to the Apache Software Foundation (ASF) under one +@REM or more contributor license agreements. See the NOTICE file +@REM distributed with this work for additional information +@REM regarding copyright ownership. The ASF licenses this file +@REM to you under the Apache License, Version 2.0 (the +@REM "License"); you may not use this file except in compliance +@REM with the License. You may obtain a copy of the License at +@REM +@REM http://www.apache.org/licenses/LICENSE-2.0 +@REM +@REM Unless required by applicable law or agreed to in writing, +@REM software distributed under the License is distributed on an +@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +@REM KIND, either express or implied. See the License for the +@REM specific language governing permissions and limitations +@REM under the License. +@REM ---------------------------------------------------------------------------- + +@REM ---------------------------------------------------------------------------- +@REM Maven2 Start Up Batch script +@REM +@REM Required ENV vars: +@REM JAVA_HOME - location of a JDK home dir +@REM +@REM Optional ENV vars +@REM M2_HOME - location of maven2's installed home dir +@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands +@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a key stroke before ending +@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven +@REM e.g. to debug Maven itself, use +@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files +@REM ---------------------------------------------------------------------------- +@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on' +@echo off +@REM enable echoing my setting MAVEN_BATCH_ECHO to 'on' +@if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO% +@REM set %HOME% to equivalent of $HOME +if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%") +@REM Execute a user defined script before this one +if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre +@REM check for pre script, once with legacy .bat ending and once with .cmd ending +if exist "%HOME%\mavenrc_pre.bat" call "%HOME%\mavenrc_pre.bat" +if exist "%HOME%\mavenrc_pre.cmd" call "%HOME%\mavenrc_pre.cmd" +:skipRcPre +@setlocal +set ERROR_CODE=0 +@REM To isolate internal variables from possible post scripts, we use another setlocal +@setlocal +@REM ==== START VALIDATION ==== +if not "%JAVA_HOME%" == "" goto OkJHome +echo. +echo Error: JAVA_HOME not found in your environment. >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error +:OkJHome +if exist "%JAVA_HOME%\bin\java.exe" goto init +echo. +echo Error: JAVA_HOME is set to an invalid directory. >&2 +echo JAVA_HOME = "%JAVA_HOME%" >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error +@REM ==== END VALIDATION ==== +:init +set MAVEN_CMD_LINE_ARGS=%MAVEN_CONFIG% %* +@REM Find the project base dir, i.e. the directory that contains the folder ".mvn". +@REM Fallback to current working directory if not found. +set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR% +IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir +set EXEC_DIR=%CD% +set WDIR=%EXEC_DIR% +:findBaseDir +IF EXIST "%WDIR%"\.mvn goto baseDirFound +cd .. +IF "%WDIR%"=="%CD%" goto baseDirNotFound +set WDIR=%CD% +goto findBaseDir +:baseDirFound +set MAVEN_PROJECTBASEDIR=%WDIR% +cd "%EXEC_DIR%" +goto endDetectBaseDir +:baseDirNotFound +set MAVEN_PROJECTBASEDIR=%EXEC_DIR% +cd "%EXEC_DIR%" +:endDetectBaseDir +IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig +@setlocal EnableExtensions EnableDelayedExpansion +for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a +@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS% +:endReadAdditionalConfig +SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe" +set WRAPPER_JAR=""%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar"" +set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain +# avoid using MAVEN_CMD_LINE_ARGS below since that would loose parameter escaping in %* +%MAVEN_JAVA_EXE% %JVM_CONFIG_MAVEN_PROPS% %MAVEN_OPTS% %MAVEN_DEBUG_OPTS% -classpath %WRAPPER_JAR% "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %* +if ERRORLEVEL 1 goto error +goto end +:error +set ERROR_CODE=1 +:end +@endlocal & set ERROR_CODE=%ERROR_CODE% +if not "%MAVEN_SKIP_RC%" == "" goto skipRcPost +@REM check for post script, once with legacy .bat ending and once with .cmd ending +if exist "%HOME%\mavenrc_post.bat" call "%HOME%\mavenrc_post.bat" +if exist "%HOME%\mavenrc_post.cmd" call "%HOME%\mavenrc_post.cmd" +:skipRcPost +@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on' +if "%MAVEN_BATCH_PAUSE%" == "on" pause +if "%MAVEN_TERMINATE_CMD%" == "on" exit %ERROR_CODE% +exit /B %ERROR_CODE% \ No newline at end of file diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..95484b1 --- /dev/null +++ b/pom.xml @@ -0,0 +1,122 @@ + + + 4.0.0 + + info.novatec + cbdg-maven-plugin + 1.0-SNAPSHOT + maven-plugin + + A Maven Plugin for CBDG + http://maven.apache.org + + + UTF-8 + 1.8.10 + 3.9.0 + 3.7.1 + 5.9.2 + + + + + org.jetbrains.kotlin + kotlin-stdlib + ${kotlin.version} + + + org.apache.maven + maven-plugin-api + ${maven.version} + provided + + + org.apache.maven + maven-core + ${maven.version} + provided + + + org.apache.maven.plugin-tools + maven-plugin-annotations + ${maven.plugin-tools.version} + provided + + + org.freemarker + freemarker + 2.3.32 + + + info.novatec + camunda-bpmn-documentation-generator + 2.0-SNAPSHOT + + + org.jetbrains.kotlin + kotlin-test-junit + ${kotlin.version} + test + + + org.junit.jupiter + junit-jupiter-api + ${junit.version} + test + + + org.junit.jupiter + junit-jupiter-engine + ${junit.version} + test + + + org.apache.maven + maven-compat + ${maven.version} + test + + + org.apache.maven.plugin-testing + maven-plugin-testing-harness + 3.3.0 + test + + + + + src/main/kotlin + src/test/kotlin + + + org.jetbrains.kotlin + kotlin-maven-plugin + ${kotlin.version} + + + compile + compile + + compile + + + + test-compile + test-compile + + test-compile + + + + + + org.apache.maven.plugins + maven-plugin-plugin + ${maven.plugin-tools.version} + + + + + diff --git a/src/main/kotlin/info/novatec/cbdg/plugin/GenerateMojo.kt b/src/main/kotlin/info/novatec/cbdg/plugin/GenerateMojo.kt new file mode 100644 index 0000000..d97de2b --- /dev/null +++ b/src/main/kotlin/info/novatec/cbdg/plugin/GenerateMojo.kt @@ -0,0 +1,80 @@ +package info.novatec.cbdg.plugin + +import info.novatec.cbdg.FreeMarkerService +import info.novatec.docu.parser.main.BpmnParser +import org.apache.maven.plugin.AbstractMojo +import org.apache.maven.plugins.annotations.Mojo +import org.apache.maven.plugins.annotations.Parameter +import java.io.File +import java.io.FileNotFoundException +import java.io.FileOutputStream +import java.nio.file.Files +import java.nio.file.StandardCopyOption +import kotlin.io.path.Path +import kotlin.io.path.createDirectories +import kotlin.io.path.exists + +/** + * Mojo - Class for cbdg-plugin. Calls by Maven-command 'mvn cbdg:generate'. + */ +@Mojo(name = "generate") +class GenerateMojo : AbstractMojo() { + + /** + * Default usage is the templates/default.ftl from Jar-File. + * To use it, it will be created in Build-Dir of the target project the empty file default.ftl + * and fill it with the stream of templates/default.ftl from Jar-File + */ + @Parameter(property = "templateFile", defaultValue = "\${project.build.directory}/classes/templates/default.ftl") + lateinit var templateFile: File + + /** + * Directory with bpmn-files. Default is '{project.basedir}/src/main/resources/bpmn' + */ + @Parameter(property = "camundaBpmnDir", defaultValue = "\${project.basedir}/src/main/resources/bpmn") + lateinit var camundaBpmnDir: File + + /** + * Target-directory fot generated content. Default is '{project.build.directory}/cbdg/html' + */ + @Parameter(property = "resultOutputDir", defaultValue = "\${project.build.directory}/cbdg/html") + lateinit var resultOutputDir: File + + /** + * Directory with the images of bpmn-files. Default is '{project.basedir}/src/main/resources/images' + */ + @Parameter(property = "bpmnDiagramImageDir", defaultValue = "\${project.basedir}/src/main/resources/images") + var bpmnDiagramImageDir: File? = null + + override fun execute() { + if (templateFile.name.equals("default.ftl")) { + FileOutputStream(templateFile, false).use { javaClass.classLoader.getResourceAsStream("templates/default.ftl") + ?.transferTo(it) ?: throw FileNotFoundException("templates/default.ftl don't exist.")} + } + + camundaBpmnDir.listFiles()?.forEach { + log.info("Generating documentation for file ${it.absolutePath}") + log.info("Using template ${templateFile.absolutePath}") + + val imageSrcPath = Path("${bpmnDiagramImageDir?.absolutePath}/${it.nameWithoutExtension}.png") + val imageTargetPath = Path("${resultOutputDir.absolutePath}/images/${it.nameWithoutExtension}.png") + imageTargetPath.parent.createDirectories() + if (imageSrcPath.exists()) { + Files.copy(imageSrcPath, imageTargetPath, StandardCopyOption.REPLACE_EXISTING) + } + + val bpmnObject = BpmnParser.parseBpmnFile(it, "${it.nameWithoutExtension}.png") + FreeMarkerService.writeTemplate( + bpmnObject, + templateFile.name, + "${resultOutputDir.absolutePath}/${it.nameWithoutExtension}.html" + ) { + setDirectoryForTemplateLoading(templateFile.parentFile) + } + log.info("Output report into path ${resultOutputDir.absolutePath}") + } ?: throw FileNotFoundException("${camundaBpmnDir.absolutePath} don't exist.") + resultOutputDir.listFiles()?.forEach { + log.info("Output: " + it.absolutePath) + } ?: throw FileNotFoundException("${resultOutputDir.absolutePath} don't exist.") + } +} diff --git a/src/test/kotlin/info/novatec/cbdg/plugin/GenerateMojoTest.kt b/src/test/kotlin/info/novatec/cbdg/plugin/GenerateMojoTest.kt new file mode 100644 index 0000000..26388a8 --- /dev/null +++ b/src/test/kotlin/info/novatec/cbdg/plugin/GenerateMojoTest.kt @@ -0,0 +1,25 @@ +package info.novatec.cbdg.plugin + +import org.apache.maven.plugin.testing.AbstractMojoTestCase +import org.junit.jupiter.api.Test +import java.io.File + +class GenerateMojoTest : AbstractMojoTestCase() { + + private val testPom = "src/test/resources/pom.xml" + + @Test + fun `test Generate with Non-Default parameters`() { + super.setUp() + val testPomFile: File = getTestFile(testPom) + assertNotNull(testPomFile) + assertTrue(testPomFile.exists()) + + val myMojo = lookupMojo("generate", testPomFile) + assertNotNull(myMojo) + myMojo.execute() + + assertNotNull(File("build/test-results/cbdg/html/TestDiagram.html")) + assertNotNull(File("build/test-results/cbdg/html/TestDiagramWithoutImage.html")) + } +} diff --git a/src/test/resources/bpmn/TestDiagram.bpmn b/src/test/resources/bpmn/TestDiagram.bpmn new file mode 100644 index 0000000..8b399ee --- /dev/null +++ b/src/test/resources/bpmn/TestDiagram.bpmn @@ -0,0 +1,335 @@ + + + + Hier steht eine Dokumentation + + Start des Prozesses + Flow_0mp6cca + + + Flow_1sfmmhq + Flow_0yb16gj + + + + Ende des Prozesses + NoSequenceFlow + + + + Flow_0yb16gj + NoSequenceFlow + YesSequenceFlow + + + ${false} + + + YesSequenceFlow + Flow_12ovz2t + + + ${true} + + + + Flow_0mp6cca + Flow_1a42jd0 + Flow_09ptqu0 + Flow_1b6ee3r + Flow_1sfmmhq + + + + + Start Event Message + Flow_1a42jd0 + + + + Start Event Timer + Flow_09ptqu0 + + + + + Start Event Conditional + Flow_1b6ee3r + + true + + + + + Start Event Signal + Flow_0ifyc4k + + + + End Event Message + N2SequenceFlow + + + + End Event Escalation + N3SequenceFlow + + + + End Event Error + N4SequenceFlow + + + + End Event Compensation + N5SequenceFlow + + + + End Event Signal + N6SequenceFlow + + + + End Event Terminate + Flow_1fl1sio + + + + Flow_12ovz2t + N3SequenceFlow + N4SequenceFlow + N5SequenceFlow + N6SequenceFlow + N2SequenceFlow + + + ${true} + + + ${true} + + + ${true} + + + ${true} + + + ${true} + + + This is the documentation for the CallActivity "Call Activity 2" + Flow_1rcdta1 + Flow_1fl1sio + + + This is the documentation for the CallActivity "Call Activity 1" + Flow_0ifyc4k + Flow_1rcdta1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/test/resources/bpmn/TestDiagramWithoutImage.bpmn b/src/test/resources/bpmn/TestDiagramWithoutImage.bpmn new file mode 100644 index 0000000..8b399ee --- /dev/null +++ b/src/test/resources/bpmn/TestDiagramWithoutImage.bpmn @@ -0,0 +1,335 @@ + + + + Hier steht eine Dokumentation + + Start des Prozesses + Flow_0mp6cca + + + Flow_1sfmmhq + Flow_0yb16gj + + + + Ende des Prozesses + NoSequenceFlow + + + + Flow_0yb16gj + NoSequenceFlow + YesSequenceFlow + + + ${false} + + + YesSequenceFlow + Flow_12ovz2t + + + ${true} + + + + Flow_0mp6cca + Flow_1a42jd0 + Flow_09ptqu0 + Flow_1b6ee3r + Flow_1sfmmhq + + + + + Start Event Message + Flow_1a42jd0 + + + + Start Event Timer + Flow_09ptqu0 + + + + + Start Event Conditional + Flow_1b6ee3r + + true + + + + + Start Event Signal + Flow_0ifyc4k + + + + End Event Message + N2SequenceFlow + + + + End Event Escalation + N3SequenceFlow + + + + End Event Error + N4SequenceFlow + + + + End Event Compensation + N5SequenceFlow + + + + End Event Signal + N6SequenceFlow + + + + End Event Terminate + Flow_1fl1sio + + + + Flow_12ovz2t + N3SequenceFlow + N4SequenceFlow + N5SequenceFlow + N6SequenceFlow + N2SequenceFlow + + + ${true} + + + ${true} + + + ${true} + + + ${true} + + + ${true} + + + This is the documentation for the CallActivity "Call Activity 2" + Flow_1rcdta1 + Flow_1fl1sio + + + This is the documentation for the CallActivity "Call Activity 1" + Flow_0ifyc4k + Flow_1rcdta1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/test/resources/images/TestDiagram.png b/src/test/resources/images/TestDiagram.png new file mode 100644 index 0000000..fbd0123 Binary files /dev/null and b/src/test/resources/images/TestDiagram.png differ diff --git a/src/test/resources/pom.xml b/src/test/resources/pom.xml new file mode 100644 index 0000000..4241573 --- /dev/null +++ b/src/test/resources/pom.xml @@ -0,0 +1,28 @@ + + + + 4.0.0 + + info.novatec + cbdg-maven-plugin + 1.0-SNAPSHOT + + cbdg-maven-plugin + + + + + info.novatec + cbdg-maven-plugin + 1.0-SNAPSHOT + + src/test/resources/templates/test.ftl + src/test/resources/bpmn + build/test-results/cbdg/html + src/test/resources/images + + + + + diff --git a/src/test/resources/templates/test.ftl b/src/test/resources/templates/test.ftl new file mode 100644 index 0000000..0a3400e --- /dev/null +++ b/src/test/resources/templates/test.ftl @@ -0,0 +1,51 @@ + + + + ${bpmn.name} + + +

${bpmn.name}

+

Version: ${bpmn.version}

+

Documentation: ${bpmn.documentation}

+
<#if bpmn.image??>
+ + + + + + + + + <#list bpmn.elements as item> + + + + + + + + +
IDNameVersionDocumentationType
${item.id}${item.name}${item.version}${item.documentation}${item.type}
+

Tasks

+ + + + + + + + <#list bpmn.tasks as item> + + + + + + + +
IDNameVersionDocumentation
${item.id}${item.name}${item.version}${item.documentation}
+ + \ No newline at end of file