Third-party dependencies
important
The new class-loading approach introduced in IA Cloud v10.1.7 enables the isolation between BCB classes and application ones. If BCB classes use a library packaged together with the BCB, the BCB class loader loads the library classes from the BCB even if the Worker app contains the library as well. For ODF, a new Archetype is introduced with the -PF4J postfix in its name. Now, ODF provides two Archetypes: for the old class-loading approach and the new one.
Dependency management in ODF project
Adding new dependencies to an ODF project is as simple as in any other Maven project. If you are not familiar with Maven, you can find helpful the Introduction to the Dependency Mechanism guide.
However, while working with ODF, keep in mind the following:
- An ODF BCB has a parent
pomand a pre-built dependencies section. Therefore, it already includes certain dependencies. It is recommended NOT to override any of those. - The execution environment (BEP Worker) has its own dependencies available on the Java classpath during execution. The user-specified dependencies must not conflict with environment dependencies.
That said, it is quite important to know which dependencies (and their versions) are already present in your project. In most cases, if you intend to add a new dependency to a project, it might be already there.
Project dependencies
To display the list of all dependencies for a Maven project, use Maven Dependency Plugin.
For an ODF project created from an Archetype, run the mvn dependency:list command, which displays all the dependencies that the project uses.
mvn dependency:list output for ODF project created from archetype
[INFO] --- maven-dependency-plugin:2.8:list (default-cli) @ example-project-bcb ---
[INFO]
[INFO] The following files have been resolved:
[INFO] org.codehaus.groovy:groovy:jar:2.5.1:provided
[INFO] net.sourceforge.htmlunit:neko-htmlunit:jar:2.27:provided
[INFO] net.jcip:jcip-annotations:jar:1.0:provided
[INFO] javax.cache:cache-api:jar:1.1.0:provided
[INFO] com.google.protobuf:protobuf-java:jar:2.5.0:provided
[INFO] net.bytebuddy:byte-buddy-agent:jar:1.9.10:test
[INFO] com.xing.qa.selenium.grid:selenium-api:jar:1.0:provided
[INFO] com.googlecode.juniversalchardet:juniversalchardet:jar:1.0.3:provided
[INFO] commons-beanutils:commons-beanutils:jar:1.9.3:provided
[INFO] com.workfusion.mfw:ui-manipulator:jar:10.1.0.0:provided
[INFO] cglib:cglib:jar:2.2.2:provided
[INFO] com.fasterxml.jackson.core:jackson-databind:jar:2.9.8:provided
[INFO] org.codehaus.groovy:groovy-sql:jar:2.5.1:provided
[INFO] org.apache.commons:commons-math3:jar:3.3:provided
[INFO] com.workfusion.mfw:jvm-ui-agent:jar:10.1.0.0:provided
[INFO] org.apache.httpcomponents:httpmime:jar:4.5.6:provided
[INFO] io.github.openfeign:feign-jackson:jar:10.0.1:provided
[INFO] com.sun.mail:javax.mail:jar:1.6.1:provided
[INFO] org.seleniumhq.selenium:htmlunit-driver:jar:2.29.3:provided
[INFO] asm:asm:jar:3.3.1:provided
[INFO] commons-logging:commons-logging:jar:1.1.1:provided
[INFO] org.codehaus.groovy:groovy-groovysh:jar:2.5.1:provided
[INFO] com.workfusion:rpa-selenium-api:jar:10.1.0.0:provided
[INFO] dom4j:dom4j:jar:1.6.1:provided
[INFO] net.sf.opencsv:opencsv:jar:2.0:provided
[INFO] org.apache.commons:commons-csv:jar:1.6:provided
[INFO] org.htmlparser:htmllexer:jar:2.1:provided
[INFO] com.sun:tools:jar:1.6:system
[INFO] net.sourceforge.saxon:saxon:jar:dom:9.1.0.8:provided
[INFO] com.workfusion.mfw:recorder-flow-model:jar:9.3.0.1:provided
[INFO] commons-lang:commons-lang:jar:2.6:provided
[INFO] org.apache.tika:tika-parsers:jar:1.14:provided
[INFO] org.apache.commons:commons-exec:jar:1.3:provided
[INFO] org.codehaus.groovy:groovy-testng:jar:2.5.1:provided
[INFO] net.arnx:jsonic:jar:1.2.7:provided
[INFO] org.mockito:mockito-core:jar:3.0.0:test
[INFO] net.sourceforge.findbugs:annotations:jar:1.3.2:provided
[INFO] com.cybozu.labs:langdetect:jar:1.1-20120112:provided
[INFO] joda-time:joda-time:jar:2.9.9:provided
[INFO] org.iban4j:iban4j:jar:3.1.0:provided
[INFO] org.apache.cxf:cxf-core:jar:3.0.3:provided
[INFO] org.jsoup:jsoup:jar:1.11.3:provided
[INFO] com.workfusion:rpa-selenium-remote-driver:jar:10.1.0.0:provided
[INFO] org.codehaus.groovy:groovy-console:jar:2.5.1:provided
[INFO] com.workfusion:rpa-api:jar:10.1.0.4:provided
[INFO] com.thoughtworks.qdox:qdox:jar:1.12.1:provided
[INFO] net.bytebuddy:byte-buddy:jar:1.9.10:provided
[INFO] com.workfusion.mfw:desktop-ui-lib:jar:native:10.1.0.0:provided
[INFO] com.amazonaws:aws-java-sdk-s3:jar:1.11.271:provided
[INFO] org.apache.commons:commons-email:jar:1.5:provided
[INFO] net.minidev:json-smart:jar:2.3:provided
[INFO] org.apache.httpcomponents:httpcore:jar:4.4.10:provided
[INFO] info.picocli:picocli:jar:3.2.0:provided
[INFO] commons-net:commons-net:jar:3.3:provided
[INFO] org.apache.commons:commons-lang3:jar:3.7:provided
[INFO] net.sourceforge.htmlunit:htmlunit:jar:2.29:provided
[INFO] javax.validation:validation-api:jar:2.0.1.Final:provided
[INFO] org.springframework:spring-web:jar:5.0.8.RELEASE:provided
[INFO] jline:jline:jar:2.14.6:provided
[INFO] org.eclipse.jetty.websocket:websocket-common:jar:9.4.9.v20180320:provided
[INFO] com.rometools:rome-utils:jar:1.5.1:provided
[INFO] com.workfusion:rpa-selenium-chrome-driver:jar:10.1.0.0:provided
[INFO] com.nimbusds:nimbus-jose-jwt:jar:5.1:provided
[INFO] org.codehaus.groovy:groovy-docgenerator:jar:2.5.1:provided
[INFO] org.ow2.asm:asm:jar:5.0.4:provided
[INFO] com.hazelcast:hazelcast-zookeeper:jar:3.6.3:provided
[INFO] com.amazonaws:jmespath-java:jar:1.11.271:provided
[INFO] net.sourceforge.htmlunit:htmlunit-core-js:jar:2.27:provided
[INFO] com.codeborne:phantomjsdriver:jar:1.4.0:provided
[INFO] com.fasterxml.jackson.core:jackson-annotations:jar:2.9.0:provided
[INFO] javax.ws.rs:javax.ws.rs-api:jar:2.0.1:provided
[INFO] org.apache.ant:ant-launcher:jar:1.9.6:provided
[INFO] org.codehaus.groovy:groovy-jmx:jar:2.5.1:provided
[INFO] org.eclipse.jetty:jetty-util:jar:9.4.9.v20180320:provided
[INFO] com.zaxxer:HikariCP:jar:2.7.9:provided
[INFO] com.hazelcast:hazelcast-spring:jar:3.9.4:provided
[INFO] commons-codec:commons-codec:jar:1.11:provided
[INFO] org.eclipse.jetty:jetty-http:jar:9.4.9.v20180320:provided
[INFO] org.codehaus.groovy:groovy-dateutil:jar:2.5.1:provided
[INFO] com.fasterxml.jackson.core:jackson-core:jar:2.9.8:provided
[INFO] com.github.stephenc.jcip:jcip-annotations:jar:1.0-1:provided
[INFO] org.eclipse.jetty.websocket:websocket-client:jar:9.4.9.v20180320:provided
[INFO] com.amazonaws:aws-java-sdk-core:jar:1.11.271:provided
[INFO] com.google.code.findbugs:jsr305:jar:3.0.2:provided
[INFO] org.apache.pdfbox:pdfbox:jar:2.0.3:provided
[INFO] de.l3s.boilerpipe:boilerpipe:jar:1.1.0:provided
[INFO] com.google.guava:guava:jar:21.0:provided
[INFO] net.sf.flexjson:flexjson:jar:3.3:provided
[INFO] org.codehaus.groovy:groovy-nio:jar:2.5.1:provided
[INFO] org.mockito:mockito-junit-jupiter:jar:3.0.0:test
[INFO] org.seleniumhq.selenium:jetty-repacked:jar:9.4.5.v20170502:provided
[INFO] nl.garvelink.oss:iban:jar:1.3.0:provided
[INFO] org.fusesource.jansi:jansi:jar:1.14:provided
[INFO] org.apache.ant:ant-junit:jar:1.9.9:provided
[INFO] org.json:json:jar:20150729-1.7:provided
[INFO] commons-cli:commons-cli:jar:1.2:provided
[INFO] org.reflections:reflections:jar:0.9.8:provided
[INFO] org.apache.cxf:cxf-rt-transports-http:jar:3.0.3:provided
[INFO] org.ccil.cowan.tagsoup:tagsoup:jar:1.2.1:provided
[INFO] net.java.dev.jna:jna-platform:jar:4.5.2:provided
[INFO] org.apache.xmlbeans:xmlbeans:jar:2.6.0:provided
[INFO] org.htmlparser:htmlparser:jar:2.1:provided
[INFO] org.codehaus.groovy:groovy-jsr223:jar:2.5.1:provided
[INFO] commons-collections:commons-collections:jar:3.2.2:provided
[INFO] org.freemarker:freemarker:jar:2.3.28:provided
[INFO] org.slf4j:slf4j-api:jar:1.7.25:provided
[INFO] org.apache.httpcomponents:httpclient:jar:4.5.6:provided
[INFO] org.codehaus.groovy:groovy-json:jar:2.5.1:provided
[INFO] xpp3:xpp3:jar:1.1.4c:provided
[INFO] commons-httpclient:commons-httpclient:jar:3.1:provided
[INFO] com.workfusion.mfw:jvm-connector:jar:10.1.0.0:provided
[INFO] com.workfusion:rpa-selenium-edge-driver:jar:10.1.0.0:provided
[INFO] com.workfusion:recorder-playback:jar:6.4.0:provided
[INFO] org.w3c.css:sac:jar:1.3:provided
[INFO] com.workfusion:rpa-selenium-server:jar:10.1.0.0:provided
[INFO] commons-validator:commons-validator:jar:1.6:provided
[INFO] com.auth0:java-jwt:jar:3.7.0:provided
[INFO] net.sourceforge.saxon:saxon:jar:9.1.0.8:provided
[INFO] org.reflections:reflections-maven:jar:0.9.8:provided
[INFO] com.workfusion:rpa-selenium-ie-driver:jar:10.1.0.0:provided
[INFO] com.workfusion:rpa-selenium-leg-rc:jar:10.1.0.0:provided
[INFO] org.bouncycastle:bcpkix-jdk15on:jar:1.54:provided
[INFO] org.objenesis:objenesis:jar:2.6:test
[INFO] org.apache.commons:commons-text:jar:1.6:provided
[INFO] com.googlecode.json-simple:json-simple:jar:1.1.1:provided
[INFO] org.apache.ws.xmlschema:xmlschema-core:jar:2.1.0:provided
[INFO] commons-digester:commons-digester:jar:2.1:provided
[INFO] org.apache.ant:ant:jar:1.9.6:provided
[INFO] javax.annotation:javax.annotation-api:jar:1.3.2:provided
[INFO] ch.qos.logback:logback-classic:jar:1.2.3:provided
[INFO] org.codehaus.groovy:groovy-cli-commons:jar:2.5.1:provided
[INFO] com.hazelcast:hazelcast-client:jar:3.9.4:provided
[INFO] org.apache.ant:ant-antlr:jar:1.9.9:provided
[INFO] com.google.code.gson:gson:jar:2.8.5:provided
[INFO] com.rometools:rome:jar:1.5.1:provided
[INFO] xalan:serializer:jar:2.7.2:provided
[INFO] org.apache.commons:commons-compress:jar:1.12:provided
[INFO] org.apache.pdfbox:pdfbox-tools:jar:2.0.3:provided
[INFO] org.apache.opennlp:opennlp-tools:jar:1.6.0:provided
[INFO] com.workfusion:rpa-selenium-safari-driver:jar:10.1.0.0:provided
[INFO] xalan:xalan:jar:2.7.2:provided
[INFO] org.apache.tika:tika-core:jar:1.14:provided
[INFO] com.wcohen:second-string:jar:20120620:provided
[INFO] org.eclipse.jetty:jetty-client:jar:9.4.9.v20180320:provided
[INFO] org.eclipse.jetty.websocket:websocket-api:jar:9.4.9.v20180320:provided
[INFO] org.apache.cxf:cxf-rt-rs-client:jar:3.0.3:provided
[INFO] com.thoughtworks.xstream:xstream:jar:1.4.10:provided
[INFO] org.logback-extensions:logback-ext-spring:jar:0.1.5:provided
[INFO] org.jdom:jdom2:jar:2.0.6:provided
[INFO] com.workfusion:rpa-desktop:jar:10.1.0.4:provided
[INFO] org.apache.poi:poi-ooxml-schemas:jar:3.17:provided
[INFO] com.workfusion.mfw:desktop-ui-model:jar:10.1.0.0:provided
[INFO] org.hamcrest:hamcrest:jar:2.1:compile
[INFO] org.bytedeco.javacpp-presets:opencv:jar:windows-x86:4.0.1-1.4.4:provided
[INFO] org.bouncycastle:bcprov-jdk15on:jar:1.55:provided
[INFO] org.yaml:snakeyaml:jar:1.19:provided
[INFO] javax.activation:activation:jar:1.1:provided
[INFO] com.workfusion.util:jwt:jar:1.0.6:provided
[INFO] ch.qos.logback:logback-core:jar:1.2.3:provided
[INFO] org.apache.commons:commons-collections4:jar:4.1:provided
[INFO] com.workfusion.mfw:surfacer:jar:10.1.0.0:provided
[INFO] org.jfrog.maven.annomojo:maven-plugin-anno:jar:1.4.1:provided
[INFO] org.bytedeco.javacpp-presets:opencv:jar:4.0.1-1.4.4:provided
[INFO] org.apache.commons:commons-digester3:jar:3.2:provided
[INFO] org.codehaus.groovy:groovy-all:pom:2.5.1:provided
[INFO] com.workfusion.spa.bot:automl-services-client-bot:jar:10.1.0.7:provided
[INFO] com.jayway.jsonpath:json-path:jar:2.4.0:provided
[INFO] com.workfusion:rpa-selenium-firefox-driver:jar:10.1.0.0:provided
[INFO] org.apache.pdfbox:pdfbox-debugger:jar:2.0.3:provided
[INFO] com.hazelcast:hazelcast:jar:3.9.4:provided
[INFO] org.apache.poi:poi-ooxml:jar:3.17:provided
[INFO] org.codehaus.groovy:groovy-swing:jar:2.5.1:provided
[INFO] org.mozilla:rhino:jar:1.7.7.1:provided
[INFO] com.workfusion.odf:odf-core:jar:10.1.0.4:compile
[INFO] io.github.openfeign:feign-core:jar:10.0.1:provided
[INFO] net.minidev:accessors-smart:jar:1.2:provided
[INFO] com.amazonaws:aws-java-sdk-kms:jar:1.11.271:provided
[INFO] com.workfusion.webharvest:workfusion-webharvest-core:jar:1.6.0:provided
[INFO] org.slf4j:slf4j-ext:jar:1.7.25:provided
[INFO] org.bytedeco.javacpp-presets:opencv:jar:windows-x86_64:4.0.1-1.4.4:provided
[INFO] commons-io:commons-io:jar:2.6:provided
[INFO] org.springframework:spring-jcl:jar:5.0.8.RELEASE:provided
[INFO] org.springframework:spring-beans:jar:5.0.8.RELEASE:provided
[INFO] org.eclipse.jetty:jetty-xml:jar:9.4.9.v20180320:provided
[INFO] net.sourceforge.htmlcleaner:htmlcleaner:jar:2.16:provided
[INFO] net.sourceforge.cssparser:cssparser:jar:0.9.23:provided
[INFO] org.apache.pdfbox:fontbox:jar:2.0.3:provided
[INFO] com.github.virtuald:curvesapi:jar:1.04:provided
[INFO] org.apache.cxf:cxf-rt-frontend-jaxrs:jar:3.0.3:provided
[INFO] com.workfusion.mfw:desktop-ui-bridge:jar:10.1.0.0:provided
[INFO] org.springframework:spring-core:jar:5.0.8.RELEASE:provided
[INFO] org.codelibs:jhighlight:jar:1.0.2:provided
[INFO] org.beanshell:bsh:jar:2.0b5:provided
[INFO] org.codehaus.groovy:groovy-groovydoc:jar:2.5.1:provided
[INFO] org.hamcrest:hamcrest-core:jar:1.3:provided
[INFO] org.codehaus.woodstox:woodstox-core-asl:jar:4.4.1:provided
[INFO] com.workfusion:rpa-selenium-java:jar:10.1.0.0:provided
[INFO] org.bytedeco:javacpp:jar:1.4.4:provided
[INFO] ca.juliusdavies:not-yet-commons-ssl:jar:0.3.9:provided
[INFO] org.mvel:mvel2:jar:2.1.3.Final:provided
[INFO] io.swagger:swagger-annotations:jar:1.5.14:provided
[INFO] org.bouncycastle:bcmail-jdk15on:jar:1.54:provided
[INFO] wss4j:wss4j:jar:1.5.1:provided
[INFO] org.apache.pdfbox:jempbox:jar:1.8.12:provided
[INFO] com.workfusion:rpa-selenium-opera-driver:jar:10.1.0.0:provided
[INFO] com.workfusion:recorder-custom-script-action:jar:0.0.3:provided
[INFO] commons-pool:commons-pool:jar:1.6:provided
[INFO] net.java.dev.jna:jna:jar:4.5.2:provided
[INFO] org.codehaus.groovy:groovy-templates:jar:2.5.1:provided
[INFO] org.codehaus.groovy:groovy-ant:jar:2.5.1:provided
[INFO] org.codehaus.groovy:groovy-test:jar:2.5.1:provided
[INFO] org.codehaus.woodstox:stax2-api:jar:3.1.4:provided
[INFO] org.codehaus.groovy:groovy-macro:jar:2.5.1:provided
[INFO] junit:junit:jar:4.12:test
[INFO] org.tallison:jmatio:jar:1.2:provided
[INFO] org.eclipse.jetty:jetty-io:jar:9.4.9.v20180320:provided
[INFO] com.fasterxml.jackson.dataformat:jackson-dataformat-cbor:jar:2.9.8:provided
[INFO] software.amazon.ion:ion-java:jar:1.0.2:provided
[INFO] com.workfusion.spa.bot:bot-execution-core:jar:10.1.0.7:provided
[INFO] org.codehaus.groovy:groovy-datetime:jar:2.5.1:provided
[INFO] com.workfusion:rpa-selenium-support:jar:10.1.0.0:provided
[INFO] org.apache.poi:poi:jar:3.15:provided
[INFO] com.workfusion:bot-task-api:jar:0.0.4:provided
[INFO] org.codehaus.groovy:groovy-cli-picocli:jar:2.5.1:provided
[INFO] org.codehaus.groovy:groovy-servlet:jar:2.5.1:provided
[INFO] org.codehaus.groovy:groovy-xml:jar:2.5.1:provided
BEP Worker dependencies
The execution environment (BEP Worker) has its own dependencies available on the Java classpath during execution.
You can find the complete list of these dependencies in the dependencies.list file inside worker-app.jar:
- RPA installation:
C:\RPA\worker\worker-app.jar\BOOT-INF\classes\dependencies.list - IACD installation:
C:\IACD\RPA\worker\worker-app.jar\BOOT-INF\classes\dependencies.list
dependencies.list sample
The following files have been resolved:
org.codehaus.groovy:groovy:jar:2.5.1
net.sourceforge.htmlunit:neko-htmlunit:jar:2.27
net.jcip:jcip-annotations:jar:1.0
net.logstash.logback:logstash-logback-encoder:jar:5.3
javax.cache:cache-api:jar:1.1.0
org.skyscreamer:jsonassert:jar:1.5.0
com.google.protobuf:protobuf-java:jar:2.5.0
com.xing.qa.selenium.grid:selenium-api:jar:1.0
com.googlecode.juniversalchardet:juniversalchardet:jar:1.0.3
commons-beanutils:commons-beanutils:jar:1.9.3
com.workfusion.mfw:ui-manipulator:jar:10.1.0.0
org.apache.tomcat.embed:tomcat-embed-el:jar:8.5.32
cglib:cglib:jar:2.2.2
com.fasterxml.jackson.core:jackson-databind:jar:2.9.8
org.codehaus.groovy:groovy-sql:jar:2.5.1
org.springframework.cloud:spring-cloud-starter-zookeeper:jar:2.0.0.RELEASE
org.apache.commons:commons-math3:jar:3.3
com.workfusion.mfw:jvm-ui-agent:jar:10.1.0.0
org.apache.httpcomponents:httpmime:jar:4.5.6
com.fasterxml:classmate:jar:1.3.4
io.github.openfeign:feign-jackson:jar:10.0.1
com.sun.mail:javax.mail:jar:1.6.1
org.seleniumhq.selenium:htmlunit-driver:jar:2.29.3
asm:asm:jar:3.3.1
commons-logging:commons-logging:jar:1.1.1
org.codehaus.groovy:groovy-groovysh:jar:2.5.1
com.workfusion:rpa-selenium-api:jar:10.1.0.0
dom4j:dom4j:jar:1.6.1
net.sf.opencsv:opencsv:jar:2.0
org.apache.commons:commons-csv:jar:1.6
org.springframework.boot:spring-boot-starter-amqp:jar:2.0.4.RELEASE
org.htmlparser:htmllexer:jar:2.1
com.sun:tools:jar:1.6
net.sourceforge.saxon:saxon:jar:dom:9.1.0.8
com.workfusion.mfw:recorder-flow-model:jar:9.3.0.1
commons-lang:commons-lang:jar:2.6
org.apache.tika:tika-parsers:jar:1.14
org.apache.commons:commons-exec:jar:1.3
org.codehaus.groovy:groovy-testng:jar:2.5.1
net.arnx:jsonic:jar:1.2.7
net.sourceforge.findbugs:annotations:jar:1.3.2
com.cybozu.labs:langdetect:jar:1.1-20120112
org.springframework.boot:spring-boot-starter-actuator:jar:2.0.4.RELEASE
joda-time:joda-time:jar:2.9.9
org.iban4j:iban4j:jar:3.1.0
org.apache.cxf:cxf-core:jar:3.0.3
org.jsoup:jsoup:jar:1.11.3
com.workfusion:rpa-selenium-remote-driver:jar:10.1.0.0
org.codehaus.groovy:groovy-console:jar:2.5.1
com.workfusion:rpa-api:jar:10.1.0.4
com.thoughtworks.qdox:qdox:jar:1.12.1
com.workfusion.mfw:desktop-ui-lib:jar:native:10.1.0.0
org.powermock:powermock-reflect:jar:2.0.0-beta.5
com.fasterxml.jackson.datatype:jackson-datatype-jdk8:jar:2.9.8
com.amazonaws:aws-java-sdk-s3:jar:1.11.271
org.apache.commons:commons-email:jar:1.5
org.springframework.cloud:spring-cloud-zookeeper-config:jar:2.0.0.RELEASE
net.minidev:json-smart:jar:2.3
log4j:log4j:jar:1.2.17
org.apache.curator:curator-framework:jar:2.13.0
org.apache.httpcomponents:httpcore:jar:4.4.10
info.picocli:picocli:jar:3.2.0
org.springframework.retry:spring-retry:jar:1.2.2.RELEASE
org.springframework.boot:spring-boot:jar:2.0.4.RELEASE
commons-net:commons-net:jar:3.3
org.apache.commons:commons-lang3:jar:3.7
org.springframework:spring-messaging:jar:5.0.8.RELEASE
net.sourceforge.htmlunit:htmlunit:jar:2.29
javax.validation:validation-api:jar:2.0.1.Final
org.springframework:spring-web:jar:5.0.8.RELEASE
com.workfusion.secretmanagement:workfusion-secret-management:jar:1.1.0.7
jline:jline:jar:2.14.6
org.eclipse.jetty.websocket:websocket-common:jar:9.4.9.v20180320
com.rometools:rome-utils:jar:1.5.1
com.workfusion:rpa-selenium-chrome-driver:jar:10.1.0.0
com.nimbusds:nimbus-jose-jwt:jar:5.1
org.codehaus.groovy:groovy-docgenerator:jar:2.5.1
org.ow2.asm:asm:jar:5.0.4
com.hazelcast:hazelcast-zookeeper:jar:3.6.3
com.amazonaws:jmespath-java:jar:1.11.271
net.sourceforge.htmlunit:htmlunit-core-js:jar:2.27
com.squareup.okio:okio:jar:1.14.0
com.codeborne:phantomjsdriver:jar:1.4.0
com.fasterxml.jackson.core:jackson-annotations:jar:2.9.0
org.codehaus.jackson:jackson-mapper-asl:jar:1.9.13
org.powermock:powermock-core:jar:2.0.0-beta.5
javax.ws.rs:javax.ws.rs-api:jar:2.0.1
com.workfusion.spa.core:execution-worker:jar:10.1.0.6
org.apache.ant:ant-launcher:jar:1.9.6
org.codehaus.groovy:groovy-jmx:jar:2.5.1
org.eclipse.jetty:jetty-util:jar:9.4.9.v20180320
org.hibernate.validator:hibernate-validator:jar:6.0.11.Final
io.micrometer:micrometer-core:jar:1.0.6
com.zaxxer:HikariCP:jar:2.7.9
com.hazelcast:hazelcast-spring:jar:3.9.4
io.github.openfeign:feign-gson:jar:10.0.1
commons-codec:commons-codec:jar:1.11
org.eclipse.jetty:jetty-http:jar:9.4.9.v20180320
com.fasterxml.jackson.core:jackson-core:jar:2.9.8
com.workfusion.util:jwt:jar:1.0.5
com.github.stephenc.jcip:jcip-annotations:jar:1.0-1
org.eclipse.jetty.websocket:websocket-client:jar:9.4.9.v20180320
com.amazonaws:aws-java-sdk-core:jar:1.11.271
com.google.code.findbugs:jsr305:jar:3.0.2
org.apache.pdfbox:pdfbox:jar:2.0.3
de.l3s.boilerpipe:boilerpipe:jar:1.1.0
com.google.guava:guava:jar:21.0
net.sf.flexjson:flexjson:jar:3.3
org.codehaus.groovy:groovy-nio:jar:2.5.1
org.javassist:javassist:jar:3.22.0-GA
org.apache.tomcat.embed:tomcat-embed-core:jar:8.5.32
org.seleniumhq.selenium:jetty-repacked:jar:9.4.5.v20170502
org.springframework.boot:spring-boot-actuator:jar:2.0.4.RELEASE
nl.garvelink.oss:iban:jar:1.3.0
org.fusesource.jansi:jansi:jar:1.14
org.springframework:spring-tx:jar:5.0.8.RELEASE
net.bytebuddy:byte-buddy-agent:jar:1.7.11
org.json:json:jar:20150729-1.7
org.reflections:reflections:jar:0.9.8
org.apache.cxf:cxf-rt-transports-http:jar:3.0.3
commons-cli:commons-cli:jar:1.2
org.springframework.boot:spring-boot-starter:jar:2.0.4.RELEASE
org.ccil.cowan.tagsoup:tagsoup:jar:1.2.1
net.java.dev.jna:jna-platform:jar:4.5.2
org.apache.xmlbeans:xmlbeans:jar:2.6.0
org.htmlparser:htmlparser:jar:2.1
org.codehaus.groovy:groovy-jsr223:jar:2.5.1
com.fasterxml.jackson.datatype:jackson-datatype-jsr310:jar:2.9.8
commons-collections:commons-collections:jar:3.2.2
com.microsoft.sqlserver:mssql-jdbc:jar:7.0.0.jre8
org.freemarker:freemarker:jar:2.3.28
org.slf4j:slf4j-api:jar:1.7.25
org.apache.httpcomponents:httpclient:jar:4.5.6
org.springframework:spring-webmvc:jar:5.0.8.RELEASE
com.workfusion.spa.core:execution-api:jar:10.1.0.6
org.codehaus.groovy:groovy-json:jar:2.5.1
xpp3:xpp3:jar:1.1.4c
commons-httpclient:commons-httpclient:jar:3.1
com.workfusion.mfw:jvm-connector:jar:10.1.0.0
com.workfusion:rpa-selenium-edge-driver:jar:10.1.0.0
io.netty:netty:jar:3.7.0.Final
com.workfusion:recorder-playback:jar:6.4.0
com.fasterxml.jackson.module:jackson-module-parameter-names:jar:2.9.8
org.w3c.css:sac:jar:1.3
org.springframework.boot:spring-boot-actuator-autoconfigure:jar:2.0.4.RELEASE
com.workfusion:rpa-selenium-server:jar:10.1.0.0
commons-validator:commons-validator:jar:1.6
net.sourceforge.saxon:saxon:jar:9.1.0.8
org.reflections:reflections-maven:jar:0.9.8
com.workfusion:rpa-selenium-ie-driver:jar:10.1.0.0
com.cedarsoftware:json-io:jar:4.10.0
com.workfusion:rpa-selenium-leg-rc:jar:10.1.0.0
org.bouncycastle:bcpkix-jdk15on:jar:1.54
org.objenesis:objenesis:jar:2.6
org.apache.commons:commons-text:jar:1.6
com.googlecode.json-simple:json-simple:jar:1.1.1
org.apache.zookeeper:zookeeper:jar:3.4.8
org.apache.ws.xmlschema:xmlschema-core:jar:2.1.0
commons-digester:commons-digester:jar:2.1
org.apache.logging.log4j:log4j-api:jar:2.10.0
javax.annotation:javax.annotation-api:jar:1.3.2
org.springframework:spring-context:jar:5.0.8.RELEASE
org.apache.ant:ant:jar:1.9.6
ch.qos.logback:logback-classic:jar:1.2.3
org.hdrhistogram:HdrHistogram:jar:2.1.10
org.springframework.amqp:spring-amqp:jar:2.0.5.RELEASE
org.jboss.logging:jboss-logging:jar:3.3.2.Final
org.codehaus.groovy:groovy-cli-commons:jar:2.5.1
com.hazelcast:hazelcast-client:jar:3.9.4
com.google.code.gson:gson:jar:2.8.5
com.rometools:rome:jar:1.5.1
com.rabbitmq:amqp-client:jar:5.1.2
xalan:serializer:jar:2.7.2
org.apache.commons:commons-compress:jar:1.12
org.apache.pdfbox:pdfbox-tools:jar:2.0.3
org.apache.opennlp:opennlp-tools:jar:1.6.0
com.workfusion:rpa-selenium-safari-driver:jar:10.1.0.0
xalan:xalan:jar:2.7.2
org.apache.tika:tika-core:jar:1.14
org.codehaus.jackson:jackson-core-asl:jar:1.9.13
com.wcohen:second-string:jar:20120620
org.eclipse.jetty:jetty-client:jar:9.4.9.v20180320
org.eclipse.jetty.websocket:websocket-api:jar:9.4.9.v20180320
org.apache.cxf:cxf-rt-rs-client:jar:3.0.3
com.squareup.okhttp3:okhttp:jar:3.11.0
org.springframework.boot:spring-boot-starter-logging:jar:2.0.4.RELEASE
com.thoughtworks.xstream:xstream:jar:1.4.10
org.logback-extensions:logback-ext-spring:jar:0.1.5
org.jdom:jdom2:jar:2.0.6
com.workfusion:rpa-desktop:jar:10.1.0.4
org.powermock:powermock-api-mockito2:jar:2.0.0-beta.5
com.workfusion.mfw:desktop-ui-model:jar:10.1.0.0
org.bytedeco.javacpp-presets:opencv:jar:windows-x86:4.0.1-1.4.4
org.bouncycastle:bcprov-jdk15on:jar:1.55
org.yaml:snakeyaml:jar:1.19
javax.activation:activation:jar:1.1
ch.qos.logback:logback-core:jar:1.2.3
org.springframework.cloud:spring-cloud-commons:jar:2.0.0.RELEASE
org.apache.commons:commons-collections4:jar:4.1
com.workfusion.mfw:surfacer:jar:10.1.0.0
org.jfrog.maven.annomojo:maven-plugin-anno:jar:1.4.1
org.bytedeco.javacpp-presets:opencv:jar:4.0.1-1.4.4
org.apache.commons:commons-digester3:jar:3.2
com.workfusion.spa.bot:automl-services-client-bot:jar:10.1.0.7
com.jayway.jsonpath:json-path:jar:2.4.0
com.workfusion:rpa-selenium-firefox-driver:jar:10.1.0.0
org.apache.pdfbox:pdfbox-debugger:jar:2.0.3
org.springframework.security:spring-security-crypto:jar:5.0.7.RELEASE
com.hazelcast:hazelcast:jar:3.9.4
org.springframework.boot:spring-boot-starter-json:jar:2.0.4.RELEASE
org.codehaus.groovy:groovy-swing:jar:2.5.1
org.slf4j:jul-to-slf4j:jar:1.7.25
org.springframework:spring-aop:jar:5.0.8.RELEASE
org.apache.tomcat.embed:tomcat-embed-websocket:jar:8.5.32
org.mozilla:rhino:jar:1.7.7.1
io.github.openfeign:feign-core:jar:10.0.1
net.minidev:accessors-smart:jar:1.2
org.springframework:spring-expression:jar:5.0.8.RELEASE
com.amazonaws:aws-java-sdk-kms:jar:1.11.271
com.workfusion.webharvest:workfusion-webharvest-core:jar:1.6.0
org.slf4j:slf4j-ext:jar:1.7.25
org.bytedeco.javacpp-presets:opencv:jar:windows-x86_64:4.0.1-1.4.4
commons-io:commons-io:jar:2.6
org.springframework:spring-jcl:jar:5.0.8.RELEASE
org.springframework:spring-beans:jar:5.0.8.RELEASE
org.eclipse.jetty:jetty-xml:jar:9.4.9.v20180320
net.sourceforge.htmlcleaner:htmlcleaner:jar:2.16
net.sourceforge.cssparser:cssparser:jar:0.9.23
org.apache.pdfbox:fontbox:jar:2.0.3
org.apache.poi:poi-ooxml-schemas:jar:3.15
com.github.virtuald:curvesapi:jar:1.04
com.auth0:java-jwt:jar:3.1.0
org.apache.cxf:cxf-rt-frontend-jaxrs:jar:3.0.3
com.workfusion.mfw:desktop-ui-bridge:jar:10.1.0.0
org.springframework:spring-core:jar:5.0.8.RELEASE
org.codelibs:jhighlight:jar:1.0.2
org.beanshell:bsh:jar:2.0b5
org.codehaus.groovy:groovy-groovydoc:jar:2.5.1
org.hamcrest:hamcrest-core:jar:1.3
org.springframework.cloud:spring-cloud-zookeeper-core:jar:2.0.0.RELEASE
org.codehaus.woodstox:woodstox-core-asl:jar:4.4.1
org.springframework.boot:spring-boot-autoconfigure:jar:2.0.4.RELEASE
org.apache.curator:curator-recipes:jar:2.13.0
org.springframework.boot:spring-boot-starter-web:jar:2.0.4.RELEASE
com.workfusion:rpa-selenium-java:jar:10.1.0.0
org.bytedeco:javacpp:jar:1.4.4
org.apache.curator:curator-x-discovery:jar:2.13.0
org.powermock:powermock-api-support:jar:2.0.0-beta.5
ca.juliusdavies:not-yet-commons-ssl:jar:0.3.9
org.apache.curator:curator-client:jar:2.13.0
org.mvel:mvel2:jar:2.1.3.Final
io.swagger:swagger-annotations:jar:1.5.14
org.bouncycastle:bcmail-jdk15on:jar:1.54
wss4j:wss4j:jar:1.5.1
org.apache.pdfbox:jempbox:jar:1.8.12
net.bytebuddy:byte-buddy:jar:1.7.11
org.apache.poi:poi-ooxml:jar:3.15
org.springframework.cloud:spring-cloud-context:jar:2.0.0.RELEASE
com.workfusion:rpa-selenium-opera-driver:jar:10.1.0.0
com.workfusion.spa.core:execution-metrics:jar:10.1.0.6
com.workfusion.util:health-check-common:jar:1.0.9
com.workfusion:recorder-custom-script-action:jar:0.0.3
commons-pool:commons-pool:jar:1.6
org.springframework.cloud:spring-cloud-starter-zookeeper-config:jar:2.0.0.RELEASE
com.workfusion.spa.core:execution-amqp:jar:10.1.0.6
net.java.dev.jna:jna:jar:4.5.2
org.codehaus.groovy:groovy-templates:jar:2.5.1
org.springframework.boot:spring-boot-starter-tomcat:jar:2.0.4.RELEASE
org.codehaus.groovy:groovy-ant:jar:2.5.1
org.codehaus.groovy:groovy-test:jar:2.5.1
org.codehaus.woodstox:stax2-api:jar:3.1.4
org.springframework.amqp:spring-rabbit:jar:2.0.5.RELEASE
junit:junit:jar:4.12
org.codehaus.groovy:groovy-macro:jar:2.5.1
org.springframework.vault:spring-vault-core:jar:1.1.1.RELEASE
org.tallison:jmatio:jar:1.2
org.latencyutils:LatencyUtils:jar:2.0.3
org.eclipse.jetty:jetty-io:jar:9.4.9.v20180320
org.mockito:mockito-core:jar:2.23.0
com.fasterxml.jackson.dataformat:jackson-dataformat-cbor:jar:2.9.8
software.amazon.ion:ion-java:jar:1.0.2
com.vaadin.external.google:android-json:jar:0.0.20131108.vaadin1
com.workfusion.spa.bot:bot-execution-core:jar:10.1.0.7
org.codehaus.groovy:groovy-datetime:jar:2.5.1
com.workfusion:rpa-selenium-support:jar:10.1.0.0
org.apache.poi:poi:jar:3.15
org.apache.logging.log4j:log4j-to-slf4j:jar:2.10.0
com.workfusion:bot-task-api:jar:0.0.4
org.codehaus.groovy:groovy-cli-picocli:jar:2.5.1
org.codehaus.groovy:groovy-servlet:jar:2.5.1
org.codehaus.groovy:groovy-xml:jar:2.5.1
Dependency consistency
To ensure your ODF project is solid in terms of dependencies, run a Bot Task from Studio.
In case of any inconsistent dependencies, Studio prints an error in the console. Below, you can see an example of the error that occurs when you are trying to add org.jsoup:jsoup, which is already on the Worker classpath.
Error sample
16:58:55 [ERROR] com.workfusion.worker.ct.executors.WebharvestExecutorService - Error during executing Webharvest task
com.workfusion.worker.ct.webharvest.DependencyDuplicationException: [org.jsoup:jsoup] are already exist on worker classpath, remove it from external dependencies.
at com.workfusion.worker.ct.webharvest.StudioBotConfigBundleClasspathPreProcessor.process(StudioBotConfigBundleClasspathPreProcessor.java:59) ~[classes!/:10.1.0.2]
at com.workfusion.worker.ct.executors.WebharvestExecutorService.lambda$execute$0(WebharvestExecutorService.java:61) ~[classes!/:10.1.0.2]
at java.util.ArrayList.forEach(ArrayList.java:1249) ~[na:1.8.0_92]
at com.workfusion.worker.ct.executors.WebharvestExecutorService.execute(WebharvestExecutorService.java:61) ~[classes!/:10.1.0.2]
at com.workfusion.spa.core.execution.worker.router.TaskProcessor.executeTask(TaskProcessor.java:98) [execution-worker-10.1.0.6.jar!/:na]
at com.workfusion.spa.core.execution.worker.router.TaskProcessor.processTask(TaskProcessor.java:66) [execution-worker-10.1.0.6.jar!/:na]
at com.workfusion.spa.core.execution.worker.router.BaseMessageProcessor.processTask(BaseMessageProcessor.java:138) [execution-worker-10.1.0.6.jar!/:na]
at com.workfusion.spa.core.execution.worker.router.BaseMessageProcessor.onMessage(BaseMessageProcessor.java:80) [execution-worker-10.1.0.6.jar!/:na]
at org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer.doInvokeListener(AbstractMessageListenerContainer.java:1457) ~[spring-rabbit-2.0.5.RELEASE.jar!/:2.0.5.RELEASE]
at org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer.actualInvokeListener(AbstractMessageListenerContainer.java:1348) ~[spring-rabbit-2.0.5.RELEASE.jar!/:2.0.5.RELEASE]
at org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer.invokeListener(AbstractMessageListenerContainer.java:1324) ~[spring-rabbit-2.0.5.RELEASE.jar!/:2.0.5.RELEASE]
at org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer.executeListener(AbstractMessageListenerContainer.java:1303) ~[spring-rabbit-2.0.5.RELEASE.jar!/:2.0.5.RELEASE]
at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer.doReceiveAndExecute(SimpleMessageListenerContainer.java:817) ~[spring-rabbit-2.0.5.RELEASE.jar!/:2.0.5.RELEASE]
at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer.receiveAndExecute(SimpleMessageListenerContainer.java:801) ~[spring-rabbit-2.0.5.RELEASE.jar!/:2.0.5.RELEASE]
at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer.access$700(SimpleMessageListenerContainer.java:77) ~[spring-rabbit-2.0.5.RELEASE.jar!/:2.0.5.RELEASE]
at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer$AsyncMessageProcessingConsumer.run(SimpleMessageListenerContainer.java:1042) ~[spring-rabbit-2.0.5.RELEASE.jar!/:2.0.5.RELEASE]
at java.lang.Thread.run(Thread.java:745) ~[na:1.8.0_92]
16:58:55 [ERROR] -------------------------------------------
16:58:55 [ERROR] EXECUTION FAILED
16:58:55 [ERROR] [org.jsoup:jsoup] are already exist on worker classpath, remove it from external dependencies.
16:58:55 [ERROR] -------------------------------------------
However, keep in mind that Control Tower does not provide any dependency consistency verification for your project. Instead, it first loads dependencies from the execution environment (BEP Worker) and, therefore, ignores any project-related duplicates.
To illustrate how dependency management works in practice, let's imagine that you are developing TransactionSupplier that should be able to run several time-consuming operations in parallel. For that, you decided to use the org.awaitility:awaitility:4.0.1 library.
note
Mind this is just an example. CountDownLatch could do the same job without adding any dependencies.
AwaitilityExample.java
public class AwaitilityExample implements TransactionSupplier {
private final ExecutorService executor = Executors.newCachedThreadPool();
private final Logger logger;
@Inject
public AwaitilityExample(Logger logger) {
this.logger = logger;
}
@Override
public Collection<Transaction> get() {
List<Transaction> transactions = new CopyOnWriteArrayList<>();
for (int i = 0; i < 10; i++) {
executor.execute(new TransactionSupplier(transactions, logger));
}
logger.debug("Waiting for transactions to be ready");
Awaitility.await().until(() -> transactions.size() == 10);
logger.debug("Returning {} transactions", transactions.size());
return transactions;
}
private static final class TransactionSupplier implements Runnable {
private final List<Transaction> transactions;
private final Logger logger;
private TransactionSupplier(List<Transaction> transactions, Logger logger) {
this.transactions = transactions;
this.logger = logger;
}
@Override
public void run() {
Transaction transaction = new Transaction();
String uuid = uuid();
transaction.setId(uuid);
transaction.setDocs(Collections.singletonList(createDocument()));
performTimeConsumingOperation();
logger.debug("Transaction {} created", uuid);
transactions.add(transaction);
}
private Document createDocument() {
Document document = new Document();
document.setId(uuid());
document.setName("Example Document");
document.setTextLink("Example Link");
return document;
}
private String uuid() {
return UUID.randomUUID().toString();
}
/**
* Emulates a time-consuming operation
*/
private void performTimeConsumingOperation() {
int waitTimeMs = new Random().nextInt(2_000) + 1_000;
try {
Thread.sleep(waitTimeMs);
} catch (InterruptedException e) {
throw new IllegalStateException(e);
}
}
}
}
To use org.awaitility:awaitility:4.0.1, first check that it is not in the project already. For instructions, refer to the guide above. Then, modify the BCB's pom.xml. Mind that the <build> section is omitted for clarity.
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<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 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<artifactId>example-project</artifactId>
<groupId>com.workfusion.odf</groupId>
<version>0.0.1</version>
</parent>
<artifactId>example-project-bcb</artifactId>
<packaging>jar</packaging>
<name>example-project - RPA/BCB</name>
<dependencies>
<dependency>
<groupId>com.workfusion.spa.bot</groupId>
<artifactId>bot-execution-core</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.workfusion.odf</groupId>
<artifactId>odf-core</artifactId>
</dependency>
<dependency>
<groupId>org.awaitility</groupId>
<artifactId>awaitility</artifactId>
<version>4.0.1</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-junit-jupiter</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
</project>
And here is your Bot Task.
AwaitilityExample.xml
<?xml version="1.0" encoding="UTF-8"?>
<config xmlns="http://web-harvest.sourceforge.net/schema/1.0/config" scriptlang="groovy">
<script></script>
<export include-original-data="false">
<multi-column list="${result}" split-results="true">
<put-to-column-getter name="_sys_transaction_id" property="transaction_id"/>
</multi-column>
</export>
</config>
To test that your solution works, run it in Studio and review the result in the console:
14:12:54 [DEBUG] com.workfusion.worker.ct.executors.WebharvestExecutorService - Register event appender in execution logger
14:12:54 [INFO] org.webharvest.definition.XmlParser - XML parsed in 10ms.
14:12:54 [INFO] org.webharvest.runtime.Scraper - ScriptProcessor starts processing...
14:12:55 [DEBUG] org.webharvest.runtime.ConfigExecutionLogger - Waiting for transations to be ready
14:12:57 [DEBUG] org.webharvest.runtime.ConfigExecutionLogger - Transaction 0d60e79b-b0fc-422d-ad93-72bf962717e8 created
14:12:57 [DEBUG] org.webharvest.runtime.ConfigExecutionLogger - Transaction 4b1f1f08-6b24-416c-9c44-11ce3aff3e4c created
14:12:57 [DEBUG] org.webharvest.runtime.ConfigExecutionLogger - Transaction ef86cc68-48af-4531-967b-092756622e2d created
14:12:57 [DEBUG] org.webharvest.runtime.ConfigExecutionLogger - Transaction 7282425a-781b-4a0e-94a0-8d81cf13f1b5 created
14:12:57 [DEBUG] org.webharvest.runtime.ConfigExecutionLogger - Transaction c0358964-c01b-4f75-a467-4958fe9fe511 created
14:12:57 [DEBUG] org.webharvest.runtime.ConfigExecutionLogger - Transaction 30004870-3950-4e1e-8a9c-e732d6b4ddfd created
14:12:57 [DEBUG] org.webharvest.runtime.ConfigExecutionLogger - Transaction 7b554e91-8fe7-4799-a34b-da5638462408 created
14:12:58 [DEBUG] org.webharvest.runtime.ConfigExecutionLogger - Transaction bbcdf77d-749e-434d-897a-82f35a8fab04 created
14:12:58 [DEBUG] org.webharvest.runtime.ConfigExecutionLogger - Transaction 02dbf4a9-4682-458a-8de2-38149dc64e3b created
14:12:58 [DEBUG] org.webharvest.runtime.ConfigExecutionLogger - Transaction 8ffb759f-6c16-4447-aa8b-1c916a0563c0 created
14:12:58 [DEBUG] org.webharvest.runtime.ConfigExecutionLogger - Returning 10 transactions
14:12:58 [INFO] org.webharvest.runtime.Scraper - Configuration executed in 4637ms.
14:12:59 [INFO] -------------------------------------------
14:12:59 [INFO] EXECUTION SUCCEEDED
14:12:59 [INFO] -------------------------------------------