Third-party dependencies
Dependency management in ODF project
Adding new dependencies to an ODF project is as simple as adding new dependencies to any other Maven project. If you are not familiar with Maven it might be helpful to read Introduction to the Dependency Mechanism guide in the first place.
However, while working with ODF, you need to keep in mind the following:
- ODF BCB has a parent pom and pre-built dependencies section. Therefore, it already has some dependencies. We do not recommend to override any of these dependencies.
- 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.
With that said, it is quite important to know which dependencies (and their versions) are already present in our project. In the majority of 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, Maven Dependency Plugin can be used.
For the ODF project created from the archetype, we can simply run the mvn dependency:list command which will show all the dependencies that the project uses.
mvn dependency:list output result 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.
A complete list of these dependencies can be found 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
Dependencies consistency
To ensure that our ODF project is solid in terms of dependencies, we can simply run a Bot Task from Studio.
In case of any inconsistent dependencies, Studio will print 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, you should keep in mind that Control Tower does not provide any dependencies consistency verification of your project. Instead, it will first load dependencies from the execution environment (BEP Worker) and therefore will ignore any of project-related duplicates.
To illustrate how dependency management works in practice, let's imagine that we are developing a TransactionSupplier that should be able to parallel some time-consuming operation. For doing that, we 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 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 be able to use org.awaitility:awaitility:4.0.1, first we need to check that it is not already in our project (how to do that is described in the guide above). Then, modify our 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 our 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 our solution works, we can simply run it in Studio and observe 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] -------------------------------------------