Git Product home page Git Product logo

openl-tablets's Introduction

Build Maven Central Commit activity

DEMO Nightly Build DEMO WebSite

Easy Business Rules

OpenL Tablets targets the infamous gap between business requirements (rules and policies) and software implementation.

Designed to be straightforward and intuitive for business people, OpenL Tablets made its rules representation impressively close to documents usually created by business(it intends business requirements etc).

Users can focus on logic as all data, syntax and typing errors are checked while they write. Convenient tools help to ensure rules integrity while further using.

One-click deployment of rules as efficient, scalable and standardized services for SOA-based integration makes business logic simple to embed in application.

For Java developers, OpenL Tablets provides many rich usage scenarios in which all rules and business data are exposed through reflection-like API or wrapped as Java class.

All of OpenL Tablets is open sourced under LGPL license.

Visit our website

How to build

Requirements:

  • JDK 11
  • Maven 3.9.4
  • Docker 24.0.4
  • Docker compose 1.29.2
  • 512 MiB RAM free
  • 2 GiB Disk space free

Build Maven artifacts:

mvn - full build with tests

Estimated build time: ~30 minutes (with all tests)

mvn -Dquick -DnoPerf -T1C - rapid building with less amount of the tests

It is possible to use the following settings:

-DnoPerf - to run tests without extreme memory limitation

-DnoDocker - to skip dockerized tests

-Dquick - to skip heavy or not important tests

-DskipTests - to skip all tests

Artifacts:

  • WebStudio - STUDIO/org.openl.rules.webstudio/target/webapp.war
  • RuleService WS - WSFrontend/org.openl.rules.ruleservice.ws/target/webapp.war
  • DEMO App - DEMO/target/openl-tablets-demo.zip

Build Docker images:

docker-compose build

openl-tablets's People

Contributors

agradus avatar andy-clapson avatar birukeugene avatar dependabot[bot] avatar dhulevich avatar dmitry-astraukh avatar dnadvikova avatar dnadvikova-eis avatar eisaramashko avatar eisdastraukh avatar eistw avatar ekosolapova avatar epoyasok avatar hubbitus avatar izubarev avatar kosolapovauser1 avatar laureli-design avatar lubovasinka avatar mkamalov avatar raveenadeshmane avatar sanail avatar valera7979 avatar vpikus avatar yauheni-kramarenka avatar yurkom avatar zserhei avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

openl-tablets's Issues

Generating a static rules Java class (not a wrapper)

Hi all,
is there a possibility to let openl generate some Java classes containing the actual implementation of the business rules specified in Excel?
E.g.

C1 C2 RET1
A B R
1 1 2
1 2 3

Resulting in a Java Class containing
public int someRule (int a, int b) {
if (a == 1 && b == 1) { return 2;}
if (a == 1 && b == 2) { return 3;}
}
so that one could check the resulting rules at compilation time?

network requests for the rules engine

Hi, is it possible to make any network request for the rules-engine, such as an REST endpoint or others, where we can fetch back the results on input values? If so, where can I read documentation about it?

Thanks!

EPBDS-11984 Vulnerability in xmlsec-1.5.7 CVE-2021-40690

Hi, please see https://nvd.nist.gov/vuln/detail/CVE-2021-40690

mvn  "-Dincludes=org.apache.santuario:xmlsec" dependency:tree

[INFO] org.openl.rules:org.openl.rules.webstudio:war:5.25.1-SNAPSHOT
[INFO] \- org.openl.rules:org.openl.security.saml:jar:5.25.1-SNAPSHOT:compile
[INFO]    \- org.opensaml:xmltooling:jar:1.4.4:compile
[INFO]       \- org.apache.santuario:xmlsec:jar:1.5.7:compile

The issue is fixed in version 2.2.3 of xmlsec, however org.opensaml:xmltooling:jar:1.4.4 is the latest since 2015, you may want to consider moving away from this project.

This is applicable only for the webstudio module

Lexical Error with ternary operator and abs value

When doing an expression like this, in web studio

TestValue = -100
NewValue = $TestValue == null ? 0: |-$TestValue|

We get the error
Lexical error at line 1, column 27. Encountered: "-" (45), after : "|"

This was working at least on 5.22.7.

Publishing webservices throws exception (Method com/mysql/jdbc/PreparedStatement.setBinaryStream(ILjava/io/InputStream;)V is abstract)

After moving to 5.19.5.1 i'm getting this error. I went through the webstudio installation wizard, configured the production repository to be a jdbc mysql connection, configured multi-user with jdbc mysql aswell and created the template project 1.

After clicking on deploy, i get this error (did I miss something to configure?):

Also what looks a bit suspiscous to me: Load configuration from 'jar:file:/opt/apache-tomcat-8.0.36/webapps/webstudio/WEB-INF/lib/org.openl.rules.repository-5.19.5.1.jar!/openl-db-repository.properties don't know whether this is useful or not.

06:43:20.031  INFO [http-nio-8080-exec-5] [org.openl.rules.repository.db.Settings]: Load configuration from 'jar:file:/opt/apache-tomcat-8.0.36/webapps/webstudio/WEB-INF/lib/org.openl.rules.repository-5.19.5.1.jar!/openl-db-repository.properties'.
--
  | 06:43:20.031  INFO [http-nio-8080-exec-5] [org.openl.rules.repository.db.Settings]: Load configuration from 'jar:file:/opt/apache-tomcat-8.0.36/webapps/webstudio/WEB-INF/lib/org.openl.rules.repository-5.19.5.1.jar!/openl-db-repository-mysql.properties'.
  | 06:43:20.032  INFO [http-nio-8080-exec-5] [org.openl.rules.repository.db.Settings]: File '/openl-db-repository-ext.properties' is not found.
  | 05-Sep-2017 06:43:20.072 WARNING [http-nio-8080-exec-5] com.sun.faces.lifecycle.InvokeApplicationPhase.execute #{smartRedeployController.redeploy}: java.lang.AbstractMethodError: Method com/mysql/jdbc/PreparedStatement.setBinaryStream(ILjava/io/InputStream;)V is abstract
  | javax.faces.FacesException: #{smartRedeployController.redeploy}: java.lang.AbstractMethodError: Method com/mysql/jdbc/PreparedStatement.setBinaryStream(ILjava/io/InputStream;)V is abstract
  | at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:117)
  | at javax.faces.component.UICommand.broadcast(UICommand.java:315)
  | at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:786)
  | at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1251)
  | at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)
  | at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
  | at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
  | at javax.faces.webapp.FacesServlet.service(FacesServlet.java:593)
  | at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:292)
  | at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
  | at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
  | at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
  | at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
  | at org.openl.rules.webstudio.filter.ThreadLocalFilter.doFilter(ThreadLocalFilter.java:31)
  | at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
  | at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
  | at org.openl.rules.webstudio.filter.SessionTimeoutFilter.doFilter(SessionTimeoutFilter.java:54)
  | at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
  | at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
  | at org.openl.rules.webstudio.filter.WebResourceFilter.doFilter(WebResourceFilter.java:70)
  | at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
  | at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
  | at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
  | at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
  | at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
  | at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
  | at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330)
  | at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:110)
  | at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
  | at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:118)
  | at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:84)
  | at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
  | at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113)
  | at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
  | at org.springframework.security.web.authentication.rememberme.RememberMeAuthenticationFilter.doFilter(RememberMeAuthenticationFilter.java:146)
  | at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
  | at org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilter(BasicAuthenticationFilter.java:150)
  | at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
  | at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:199)
  | at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
  | at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:87)
  | at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
  | at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:192)
  | at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:160)
  | at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:344)
  | at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:261)
  | at org.openl.rules.webstudio.filter.SecurityFilter.doFilter(SecurityFilter.java:24)
  | at org.openl.rules.webstudio.filter.ReloadableDelegatingFilter.doFilter(ReloadableDelegatingFilter.java:124)
  | at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
  | at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
  | at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212)
  | at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
  | at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141)
  | at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
  | at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)
  | at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
  | at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:528)
  | at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1099)
  | at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:670)
  | at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1520)
  | at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1476)
  | at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
  | at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
  | at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
  | at java.lang.Thread.run(Thread.java:745)
  | Caused by: javax.faces.el.EvaluationException: java.lang.AbstractMethodError: Method com/mysql/jdbc/PreparedStatement.setBinaryStream(ILjava/io/InputStream;)V is abstract
  | at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:101)
  | at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:101)
  | ... 64 more
  | Caused by: java.lang.AbstractMethodError: Method com/mysql/jdbc/PreparedStatement.setBinaryStream(ILjava/io/InputStream;)V is abstract
  | at com.mysql.jdbc.PreparedStatement.setBinaryStream(PreparedStatement.java)
  | at org.openl.rules.repository.db.DBRepository.insertFile(DBRepository.java:503)
  | at org.openl.rules.repository.db.DBRepository.save(DBRepository.java:100)
  | at org.openl.rules.webstudio.web.repository.DeploymentManager.deploy(DeploymentManager.java:80)
  | at org.openl.rules.webstudio.web.repository.SmartRedeployController.redeploy(SmartRedeployController.java:278)
  | at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  | at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
  | at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
  | at java.lang.reflect.Method.invoke(Method.java:498)
  | at org.apache.el.parser.AstValue.invoke(AstValue.java:247)
  | at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:267)
  | at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105)
  | at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:87)
  | ... 65 more
  |  
  | 06:43:20.082 ERROR [http-nio-8080-exec-5] [org.openl.rules.webstudio.filter.ReloadableDelegatingFilter]: java.lang.AbstractMethodError: Method com/mysql/jdbc/PreparedStatement.setBinaryStream(ILjava/io/InputStream;)V is abstract
  | javax.servlet.ServletException: java.lang.AbstractMethodError: Method com/mysql/jdbc/PreparedStatement.setBinaryStream(ILjava/io/InputStream;)V is abstract
  | at javax.faces.webapp.FacesServlet.service(FacesServlet.java:606)
  | at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:292)
  | at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
  | at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
  | at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
  | at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
  | at org.openl.rules.webstudio.filter.ThreadLocalFilter.doFilter(ThreadLocalFilter.java:31)
  | at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
  | at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
  | at org.openl.rules.webstudio.filter.SessionTimeoutFilter.doFilter(SessionTimeoutFilter.java:54)
  | at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
  | at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
  | at org.openl.rules.webstudio.filter.WebResourceFilter.doFilter(WebResourceFilter.java:70)
  | at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
  | at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
  | at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
  | at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
  | at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
  | at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
  | at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330)
  | at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:110)
  | at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
  | at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:118)
  | at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:84)
  | at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
  | at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113)
  | at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
  | at org.springframework.security.web.authentication.rememberme.RememberMeAuthenticationFilter.doFilter(RememberMeAuthenticationFilter.java:146)
  | at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
  | at org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilter(BasicAuthenticationFilter.java:150)
  | at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
  | at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:199)
  | at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
  | at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:87)
  | at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
  | at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:192)
  | at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:160)
  | at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:344)
  | at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:261)
  | at org.openl.rules.webstudio.filter.SecurityFilter.doFilter(SecurityFilter.java:24)
  | at org.openl.rules.webstudio.filter.ReloadableDelegatingFilter.doFilter(ReloadableDelegatingFilter.java:124)
  | at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
  | at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
  | at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212)
  | at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
  | at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141)
  | at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
  | at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)
  | at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
  | at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:528)
  | at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1099)
  | at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:670)
  | at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1520)
  | at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1476)
  | at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
  | at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
  | at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
  | at java.lang.Thread.run(Thread.java:745)

EPBDS-12270 WS | CXF - Enable GZIP support by default

Hi, we currently enable GZIP request support manually in CXF config.
Would it be possible to make it the default? This is a non breaking change.

    <bean id="GZIPInInterceptor" class="org.apache.cxf.transport.common.gzip.GZIPInInterceptor"/>
    <cxf:bus>
        <cxf:inInterceptors>
            <ref bean="GZIPInInterceptor"/>
        </cxf:inInterceptors>
    </cxf:bus>

Hugo

Tests failed for openl-maven-plugin module

Hi guys,
I tried to build master branch source code and the build stopped at openl-maven-plugin. This is the error:

[INFO] Building: openl-compilation-big-tableparts\pom.xml
[INFO] run post-build script verify.groovy
[INFO]   The post-build script returned false.
[INFO]           openl-compilation-big-tableparts\pom.xml ......... FAILED (5.9 s)
[INFO] Building: openl-compilation-error-in-sources\pom.xml
[INFO]           openl-compilation-error-in-sources\pom.xml ....... SUCCESS (5.0 s)
[INFO] Building: openl-compilation-error-in-tests\pom.xml
[INFO]           openl-compilation-error-in-tests\pom.xml ......... SUCCESS (5.1 s)
[INFO] Building: openl-custom-properties-file-name-processor\pom.xml
[INFO]   The build exited with code 1. See C:\Users\kiennguyen\IdeaProjects\POC\openl-tablets-master\Util\openl-maven-plugin\target\its\openl-custom-properties-file-name-processor\build.log for details.
[INFO]           openl-custom-properties-file-name-processor\pom.xml FAILED (5.0 s)
[INFO] Building: openl-data-in-dependent-module\pom.xml
[INFO]   The build exited with code 1. See C:\Users\kiennguyen\IdeaProjects\POC\openl-tablets-master\Util\openl-maven-plugin\target\its\openl-data-in-dependent-module\build.log for details.
[INFO]           openl-data-in-dependent-module\pom.xml ........... FAILED (5.1 s)
[INFO] Building: openl-empty\pom.xml
[INFO]           openl-empty\pom.xml .............................. SUCCESS (6.0 s)
[INFO] Building: openl-external-parameters\pom.xml
[INFO]   The build exited with code 1. See C:\Users\kiennguyen\IdeaProjects\POC\openl-tablets-master\Util\openl-maven-plugin\target\its\openl-external-parameters\build.log for details.
[INFO]           openl-external-parameters\pom.xml ................ FAILED (7.1 s)
[INFO] Building: openl-gen-datatypes\pom.xml
[INFO] run post-build script verify.groovy
[INFO]   The post-build script returned false.
[INFO]           openl-gen-datatypes\pom.xml ...................... FAILED (5.1 s)
[INFO] Building: openl-lib-threshold-default\pom.xml
[INFO] run post-build script verify.groovy
[INFO]           openl-lib-threshold-default\pom.xml .............. SUCCESS (5.0 s)
[INFO] Building: openl-lib-threshold-increased\pom.xml
[INFO]   The build exited with code 1. See C:\Users\kiennguyen\IdeaProjects\POC\openl-tablets-master\Util\openl-maven-plugin\target\its\openl-lib-threshold-increased\build.log for details.
[INFO]           openl-lib-threshold-increased\pom.xml ............ FAILED (5.0 s)
[INFO] Building: openl-maven-plugin-transitive-dependencies\pom.xml
[INFO] run post-build script verify.groovy
[INFO]   The post-build script returned false.
[INFO]           openl-maven-plugin-transitive-dependencies\pom.xml FAILED (7.1 s)
[INFO] Building: openl-mixed-datatypes\pom.xml
[INFO] run post-build script verify.groovy
[INFO]   The post-build script returned false.
[INFO]           openl-mixed-datatypes\pom.xml .................... FAILED (5.1 s)
[INFO] Building: openl-multimodule\pom.xml
[INFO] run post-build script verify.groovy
[INFO]   The post-build script returned false.
[INFO]           openl-multimodule\pom.xml ........................ FAILED (6.1 s)
[INFO] Building: openl-multiple-deployment\pom.xml
[INFO] run post-build script verify.groovy
[INFO]   The post-build script returned false.
[INFO]           openl-multiple-deployment\pom.xml ................ FAILED (5.1 s)
[INFO] Building: openl-recompile-without-clean\pom.xml
[INFO] run post-build script verify.groovy
[INFO]   The post-build script returned false.
[INFO]           openl-recompile-without-clean\pom.xml ............ FAILED (5.1 s)
[INFO] Building: openl-simple-multimodule\pom.xml
[INFO]   The build exited with code 1. See C:\Users\kiennguyen\IdeaProjects\POC\openl-tablets-master\Util\openl-maven-plugin\target\its\openl-simple-multimodule\build.log for details.
[INFO]           openl-simple-multimodule\pom.xml ................. FAILED (5.0 s)
[INFO] Building: openl-test-user-error\pom.xml
[INFO] run post-build script verify.groovy
[INFO]   The post-build script returned false.
[INFO]           openl-test-user-error\pom.xml .................... FAILED (5.1 s)
[INFO] Building: openl-testedmethod-has-two-candidates\pom.xml
[INFO] run post-build script verify.groovy
[INFO]   The post-build script returned false.
[INFO]           openl-testedmethod-has-two-candidates\pom.xml .... FAILED (5.0 s)
[INFO] Building: openl-tests-big-testsuite\pom.xml
[INFO] run post-build script verify.groovy
[INFO]   The post-build script returned false.
[INFO]           openl-tests-big-testsuite\pom.xml ................ FAILED (7.1 s)
[INFO] Building: openl-tests-failure\pom.xml
[INFO] run post-build script verify.groovy
[INFO]   The post-build script returned false.
[INFO]           openl-tests-failure\pom.xml ...................... FAILED (4.1 s)
[INFO] Building: openl-tests-separated\pom.xml
[INFO] run post-build script verify.groovy
[INFO]   The post-build script returned false.
[INFO]           openl-tests-separated\pom.xml .................... FAILED (5.1 s)
[INFO] -------------------------------------------------
[INFO] Build Summary:
[INFO]   Passed: 4, Failed: 17, Errors: 0, Skipped: 0
[INFO] -------------------------------------------------
[ERROR] The following builds failed:
[ERROR] *  openl-compilation-big-tableparts\pom.xml
[ERROR] *  openl-custom-properties-file-name-processor\pom.xml
[ERROR] *  openl-data-in-dependent-module\pom.xml
[ERROR] *  openl-external-parameters\pom.xml
[ERROR] *  openl-gen-datatypes\pom.xml
[ERROR] *  openl-lib-threshold-increased\pom.xml
[ERROR] *  openl-maven-plugin-transitive-dependencies\pom.xml
[ERROR] *  openl-mixed-datatypes\pom.xml
[ERROR] *  openl-multimodule\pom.xml
[ERROR] *  openl-multiple-deployment\pom.xml
[ERROR] *  openl-recompile-without-clean\pom.xml
[ERROR] *  openl-simple-multimodule\pom.xml
[ERROR] *  openl-test-user-error\pom.xml
[ERROR] *  openl-testedmethod-has-two-candidates\pom.xml
[ERROR] *  openl-tests-big-testsuite\pom.xml
[ERROR] *  openl-tests-failure\pom.xml
[ERROR] *  openl-tests-separated\pom.xml
[INFO] -------------------------------------------------
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 02:10 min
[INFO] Finished at: 2019-07-03T15:44:56+08:00
[INFO] Final Memory: 46M/631M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-invoker-plugin:3.2.0:run (default) on project openl-maven-plugin: 17 builds failed. See console output above for details. -> [Help 1]
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException

Process finished with exit code 1

Should I ignore the test?

[WebStudio] Permissions per projects

Hi folks,

I would like to suggest or even work on a feature to restrict/allow users to edit/view rules.
For example, figure out a company that has departments using the same Open L Web Studio, and this company wants to make sure that users from a department can't change a rule in another department project.

I wasn't managed to find a way to do it, do you know how to do it in this current version? If no, what do think about this feature?

Cheers,

Add fuzzy search functionality to decision table

There is a use case in which the fuzzy search functionality can come in handy. Let's say I have a list of names ["Stephen Wilkson", "John Pierre", ...] , and want to do fuzzy search against the list with the input "Stephen Kilsman wilkson", the rule can return the matching name and the score Matched With: {[{'Stephen Kilsman wilkson'}]} Score: 0.6666666666666666. And we can have 2nd decision table to decide what to do if the score is higher or lower than a threshold.

Exclude method - does not update swagger.json

Using version 5.21.0, in multi-module mode, adding a new Excluded Method in a module excludes the method from the RESTful service as expected, but remains in the swagger.json and .yaml files until the service is restarted.

Setup Connection Pool Size for rules webservice

I need to limit the amonut of jdbc connections my deployed rules web service is creating. Which property would help me set that.. Currently I am just specifying

production-repository.factory = org.openl.rules.repository.db.JdbcDBRepositoryFactory production-repository.uri = ${RULES_DB_URI} production-repository.login = ${RULES_DB_USER} production-repository.password = ${RULES_DB_PASSWORD}

Externalize LDAP search filter

The current Spring Security LDAP implementation works when the LDAP properties samAccountName and userPrincipalName are identical, though in cases where these differ, the userPrincipalName={0} search filter prevents an account from being located.

Would you consider externalizing the search string, or at least part, so that this can be adjusted as needed?

Thank you!

Saving LFS managed files in GitHub can fail if use URL without .git suffix.

If you work with Git repository stored in GitHub, please use URL with .git suffix:
Correct: https://github.com/openl-tablets/your-repo-name.git
Incorrect: https://github.com/openl-tablets/your-repo-name

Although, native git can work with both URLs, jgit with LFS plugin can't work with second case (at the time of writing). It's because jgit doesn't create required for second case section in .git/config file:
[lfs "https://github.com/openl-tablets/your-repo-name.git/info/lfs"]
during repository cloning.

Multiple webservices do not share openl home nicely

Multiple webservices sharing the same .openl home directory delete one another's /rules-deploy files.

The following is shown in the rulesservice.log:

[org.openl.rules.ruleservice.loader.LocalTemporaryDeploymentsStorage]: Local temporary folder for downloading deployments has been cleared.

This reveals that on startup, one engine will delete another's files.

To test, run two engines, both using the same .openl directory. Restart each, and notice one shows errors in its logs such as

WARN [localhost-startStop-1] [org.openl.source.impl.URLSourceCodeModule]: Failed to open connection for URL "file:/C:/.openl/rules-deploy/Project_v33/Project/ViewProgress.xlsx" java.io.FileNotFoundException: C:\.openl\rules-deploy\Project_v33\Project\ViewProgress.xlsx (The system cannot find the file specified)

Eureka support

We are using the rules engine as a REST service within a microservice architecture - while this isn't a Spring Boot app, are there any plans to enable it to allow OpenL Tablets to register with a Eureka Discovery server?

Deploy incorrectly displays "This project revision is already deployed" when multiple deployment repos are configured

Testing at the demo site from version 5.21.6 to 5.21.9, I'm able to duplicate the local issue that the revision of a project deployed to one repo shows that the same revision is deployed to all. This is not the case when reviewing the actual deployment's revision in the DB.

To duplicate:

  • Create a second repo on the demo site
  • Deploy any project for the first time to the first repo.
  • Select the second repo, and find the message "This project revision is already deployed" is listed.

If you set up SQL repos it's easy to verify what revision was last deployed in the repo.

EPBDS-12255 Webstudio | SAML & Loadbalancer: Migrating from Valve to Filter

Hi,

Version 5.24.X, in the installation PDF (page 34), the paragraph regarding deployment behind a load balancer refers to the Tomcat RemoteIpValve.
This Valve is not well maintained by the Apache Project, and its homologue filter has a lot more features, such as support for
X-Forwarded-Host.

In scenarios where the Host (rather than the IP) is modified by the proxy, the RemoteIpValve simply won't cut it.

Could you please consider updating the procedure toward using the Filter?
I.e. Add the filter to the web-inf/web.xml.

We wasted a bit of time on this, I guess this can be useful for others.

Thank you.

Reference:
https://github.com/apache/tomcat/blob/9.0.x/java/org/apache/catalina/filters/RemoteIpFilter.java
https://github.com/apache/tomcat/blob/9.0.x/java/org/apache/catalina/valves/RemoteIpValve.java

Java Bean for Datatype *.java are not generated

Hi,

I use the maven plugin 5.25.2. What should I do that Java Bean for Datatype are generated in target\generated-sources\openl? On older version I found them in that folder. I find just the *.class files in target\classes.

Thanks

Incorrect Postgres types infer

17:02:28,638 [catalina-ui-exec-4] INFO  (org.openl.rules.repository.factories.DBRepositoryFactory.java:340) - Determine SQL types
17:02:28,723 [catalina-ui-exec-4] INFO  (org.openl.rules.repository.factories.DBRepositoryFactory.java:385) - Determined SQL types ('null', 'name(0)', 'null', 'int8')
17:02:28,723 [catalina-ui-exec-4] INFO  (org.openl.rules.repository.factories.DBRepositoryFactory.java:398) - Used SQL types ('name(0)', 'BLOB', 'int8')
17:02:28,724 [catalina-ui-exec-4] INFO  (org.openl.rules.repository.factories.DBRepositoryFactory.java:327) - The following SQL script being used [ CREATE TABLE OPENL_JCR_CACHE (ID name(0) NOT NULL, DATA BLOB, TIMESTAMP int8, PRIMARY KEY (ID)) ]
17:02:28,725 [catalina-ui-exec-4] WARN  (org.openl.rules.repository.factories.DBRepositoryFactory.java:333) - SQLException occurs while checking the table OPENL_JCR_CACHE
org.postgresql.util.PSQLException: ОШИБКА: у типа "name" не может быть модификаторов
  Позиция: 34

EPBDS-12442 Docker image, user ID not constant between releases

Hi, we noticed that the user id changed from 1000 to 999 between 5.24.9 and 5.24.10.
It is not the first time we notice this behavior between docker releases.

This can be explained because the openl user is added without specifying the uid.

RUN useradd -r -m -U -s /usr/sbin/nologin openl

Would it be possible to set a permanent user ID we could stick with across releases? We need it in the Kubernetes security context where we cannot rely on the user "label".

Also, we noticed that the OPENL_HOME env. variable does not match the openl user home (/openl vs /home/openl). I don't know if it's by design or not.

Property file has to be writable and can no longer be provisioned directly by config maps

Hi we are using K8s config map to provision properties with Helm.
Since the latest change, the Webstudio refuses to load them because it can't override the file.

Config maps are always readonly.

While I understand the intention of doing some house cleaning for those of have a mutable architecture, it certainly ain't working nicely for those in the "immutable club".

I can workaround the issue with an init script and copy the file before the app starts, but it would be nice if the Migrator would not attempt to override the file we provide.

My suggestions would be to only attempt to override the property file when required. In addition, log warnings for each property that is outdated or missing to provide verbose.

Reference
STUDIO/org.openl.rules.webstudio/src/org/openl/rules/webstudio/Migrator.java

try {
	DynamicPropertySource settings = DynamicPropertySource.get();
	settings.save(props);
	settings.reloadIfModified();
} catch (IOException e) {
	LOG.error("Migration of properties failed.", e);
}

https://github.com/openl-tablets/openl-tablets/commit/82ce39287471bf3a16b8c7046ad533515b2521d3

EPBDS-12273 WS | Provide a way to toggle CXF stats on/off

Hi, we currently enable CXF stats manually in CXF config. This includes counters and the JMX mbean.
Would it be possible to make that config part of the OpenL app, while providing a toggle (e.g. spring profile/conditonnal)?
This is a non breaking change.

     <bean id="CounterRepository" class="org.apache.cxf.management.counters.CounterRepository">
        <property name="bus" ref="cxf"/>
    </bean>

    <bean id="org.apache.cxf.management.InstrumentationManager"
          class="org.apache.cxf.management.jmx.InstrumentationManagerImpl" init-method="init">
        <property name="bus" ref="cxf"/>
        <property name="enabled" value="true"/>
        <property name="usePlatformMBeanServer" value="true"/>
    </bean>

Hugo

WS | Enable CXF logging

Hi, we currently overlay the config of CXF to enable logging of CXF errors to help monitor the service and set alerts.
Would it be possible to make the CXF config part of the project by default, while providing a toggle ? This is a non breaking change.

The config is as follow

    <bean id="loggingEventSender" class="org.apache.cxf.ext.logging.slf4j.Slf4jVerboseEventSender">
        <property name="loggingLevel" value="INFO"/>
    </bean>

    <bean id="requestResponseLoggingFeature" class="org.apache.cxf.ext.logging.LoggingFeature">
        <property name="sender" ref="loggingEventSender"/>
        <property name="prettyLogging" value="true"/>
        <property name="logBinary" value="false"/>
        <property name="logMultipart" value="false"/>
        <property name="verbose" value="true"/>
    </bean>

    <!-- Enable me with CXF >3.3.7, https://github.com/apache/cxf/blob/feature/CXF-8099_mask_sensitive_logging_elements/rt/features/logging/src/main/java/org/apache/cxf/ext/logging/LoggingFeature.java  -->
    <bean id="setSensitiveHeaders" class="org.springframework.beans.factory.config.MethodInvokingBean">
        <property name="targetObject" ref="requestResponseLoggingFeature"/>
        <property name="targetMethod" value="addSensitiveProtocolHeaderNames"/>
        <property name="arguments">
            <list>
                <set value-type="java.lang.String">
                    <value>Authorization</value>
                </set>
            </list>
        </property>
    </bean>

    <cxf:bus>
        <cxf:features>
            <ref bean="requestResponseLoggingFeature"/>
        </cxf:features>
    </cxf:bus>
<!-- log4j2.xml -->
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
   <!--...-->
    <loggers>
      <!--...-->
        <logger name="org.apache.cxf" level="INFO">
            <!-- explicitly disabling REQ/Response payload logging by default for security. Only faults will be logged.-->
            <ContextMapFilter onMatch="DENY" onMismatch="ACCEPT" operator="or">
                <KeyValuePair key="Type" value="REQ_IN"/>
                <KeyValuePair key="Type" value="RESP_IN"/>
                <KeyValuePair key="Type" value="REQ_OUT"/>
                <KeyValuePair key="Type" value="RESP_OUT"/>
            </ContextMapFilter>
        </logger>
        <!--...-->
    </loggers>
    <!--...-->
</configuration>

Configure webstudio / webservice for continuous deployment

I'm wondering if it is possible to preconfigure the webstudio and webservices applications, so that they can be just deployed on a tomcat (mostly this will even be a docker machine), so that one can skip the webstudio installation wizard steps?

Also i'm interested whether it is possible deploy a project as a webservice directly, without having to touch the webstudio.

With this one could have a cont. deployment of current installation incl. the rules, which makes life easier.

Note: i saw that you're deploying to travis with building via maven, which is not the thing i want...

thanks

project build failed failed

Hi all,

I run mvn clean verify then i got failed , anything i missed on that

[INFO] --- maven-invoker-plugin:3.1.0:run (default) @ openl-maven-plugin ---
[INFO] Building: openl-compilation-big-tableparts\pom.xml
[INFO] run post-build script verify.groovy
[INFO] openl-compilation-big-tableparts\pom.xml ......... FAILED (3.5 s)
[INFO] The post-build script returned false.
[INFO] Building: openl-compilation-error-in-sources\pom.xml
[INFO] openl-compilation-error-in-sources\pom.xml ....... SUCCESS (3.0 s)
[INFO] Building: openl-compilation-error-in-tests\pom.xml
[INFO] openl-compilation-error-in-tests\pom.xml ......... SUCCESS (3.0 s)
[INFO] Building: openl-custom-properties-file-name-processor\pom.xml
[INFO] openl-custom-properties-file-name-processor\pom.xml FAILED (3.0 s)
[INFO] The build exited with code 1. See C:\Users\Quang\Downloads\openl-tablets-master\Util\openl-maven-pl
ugin\target\its\openl-custom-properties-file-name-processor\build.log for details.
[INFO] Building: openl-data-in-dependent-module\pom.xml
[INFO] openl-data-in-dependent-module\pom.xml ........... FAILED (3.0 s)
[INFO] The build exited with code 1. See C:\Users\Quang\Downloads\openl-tablets-master\Util\openl-maven-pl
ugin\target\its\openl-data-in-dependent-module\build.log for details.
[INFO] Building: openl-empty\pom.xml
[INFO] openl-empty\pom.xml .............................. SUCCESS (3.0 s)
[INFO] Building: openl-external-parameters\pom.xml
[INFO] openl-external-parameters\pom.xml ................ FAILED (3.0 s)
[INFO] The build exited with code 1. See C:\Users\Quang\Downloads\openl-tablets-master\Util\openl-maven-pl
ugin\target\its\openl-external-parameters\build.log for details.
[INFO] Building: openl-gen-datatypes\pom.xml
[INFO] run post-build script verify.groovy
[INFO] openl-gen-datatypes\pom.xml ...................... FAILED (3.0 s)
[INFO] The post-build script returned false.
[INFO] Building: openl-lib-threshold-default\pom.xml
[INFO] run post-build script verify.groovy
[INFO] openl-lib-threshold-default\pom.xml .............. SUCCESS (3.0 s)
[INFO] Building: openl-lib-threshold-increased\pom.xml
[INFO] openl-lib-threshold-increased\pom.xml ............ FAILED (3.0 s)
[INFO] The build exited with code 1. See C:\Users\Quang\Downloads\openl-tablets-master\Util\openl-maven-pl
ugin\target\its\openl-lib-threshold-increased\build.log for details.
[INFO] Building: openl-mixed-datatypes\pom.xml
[INFO] run post-build script verify.groovy
[INFO] openl-mixed-datatypes\pom.xml .................... FAILED (3.1 s)
[INFO] The post-build script returned false.
[INFO] Building: openl-multimodule\pom.xml
[INFO] run post-build script verify.groovy
[INFO] openl-multimodule\pom.xml ........................ FAILED (3.0 s)
[INFO] The post-build script returned false.
[INFO] Building: openl-recompile-without-clean\pom.xml
[INFO] run post-build script verify.groovy
[INFO] openl-recompile-without-clean\pom.xml ............ FAILED (3.0 s)
[INFO] The post-build script returned false.
[INFO] Building: openl-simple-multimodule\pom.xml
[INFO] openl-simple-multimodule\pom.xml ................. FAILED (3.0 s)
[INFO] The build exited with code 1. See C:\Users\Quang\Downloads\openl-tablets-master\Util\openl-maven-pl
ugin\target\its\openl-simple-multimodule\build.log for details.
[INFO] Building: openl-test-user-error\pom.xml
[INFO] run post-build script verify.groovy
[INFO] openl-test-user-error\pom.xml .................... FAILED (3.0 s)
[INFO] The post-build script returned false.
[INFO] Building: openl-testedmethod-has-two-candidates\pom.xml
[INFO] run post-build script verify.groovy
[INFO] openl-testedmethod-has-two-candidates\pom.xml .... FAILED (3.0 s)
[INFO] The post-build script returned false.
[INFO] Building: openl-tests-big-testsuite\pom.xml
[INFO] run post-build script verify.groovy
[INFO] openl-tests-big-testsuite\pom.xml ................ FAILED (3.0 s)
[INFO] The post-build script returned false.
[INFO] Building: openl-tests-failure\pom.xml
[INFO] run post-build script verify.groovy
[INFO] openl-tests-failure\pom.xml ...................... FAILED (3.1 s)
[INFO] The post-build script returned false.
[INFO] Building: openl-tests-separated\pom.xml
[INFO] run post-build script verify.groovy
[INFO] openl-tests-separated\pom.xml .................... FAILED (3.0 s)
[INFO] The post-build script returned false.
[INFO] -------------------------------------------------
[INFO] Build Summary:
[INFO] Passed: 4, Failed: 15, Errors: 0, Skipped: 0

Contribution guidelines

Hi guys,
Is there any contribution guidelines? I want to upgrade Spring framework to version 5.

Thanks

Build is not packaging the git repository dependencies

The Maven build is not packaging the git repository dependency into the webservice.war, hence I am not able to set production-repository.factory=org.openl.rules.repository.git.GitRepository.

I opened #25, which I believe will fix this issue. Please let me know if you need more details.

EPBDS-13311 Docker distro | Bundle with opentelemetry instrumentation agent

Hi, we would like to have opentelemetry packaged with the docker image so that we could enable observability for the Openl WS component.

https://github.com/open-telemetry/opentelemetry-java-instrumentation/blob/main/docs/supported-libraries.md
It will add spans to CXF and Kafka automatically, and enable devops to define where to export/forward metrics and spans.

This is compatible with most (if not all) APM solution of the market including open solutions such as Jaeger.

The feature should remain optional, maybe use an env. variable to condition if the agent should be attached to the JVM or not.
The agent itself uses its own set of env. variable that are well documented.

This would be a step forward in the micro-service ecosystem.

https://github.com/open-telemetry/opentelemetry-java-instrumentation

Fix docker vulnerabilities in tomcat layer

Hi,

Using "openltablets/ws:5.23.5", the from clause (tomcat:9.0.30-jdk11) pulls a total of 15 vulnerabilities marked as high. "tomcat:9.0.30-jdk11
Using "9.0-jdk11-openjdk-slim" (equivalent to tomcat:9.0.37-jdk11-openjdk-slim) has 0 vulnerabilities.

My suggestion is to update the docker files respectively for the WS and Webstudio and change the "From" clause to "9.0-jdk11-openjdk-slim".
This would ensure that:

  • We ingest minor fixes (non breaking changes) for Tomcat such as vulnerability fix (the same way it is currently done for jdk11) every time we pull.
  • Remove unnecessary dependencies such as perl, python, curl that are not required for the openlproject by using the "slim" tag.

Additionally, running a scan in the build pipeline (such as aquasec/trivy) would provide some level of awareness.

Active Directory problem to set up

Hi, i'm trying to install webstudio 5.21.4 with tomcat 7 and jdk8.
Except, in the Active Directory configuration part, I have this issue:

13:54:01.815 INFO [http-bio-8080-exec-6] [org.springframework.security.ldap.SpringSecurityLdapTemplate]: Ignoring PartialResultException

How resolv this issue?

How clould I run TBasic Table in java project?

Hi, I have used openl tablet rules engine to filter data. it's ok in WebStudio, but when running the java application, it fails binding the method defined in excel TBasic table. Please provide a solution to this. The error is like:
Snipaste_2021-06-16_17-37-28

and the java code is like:
code

and the content of TBasic Table is like:
messageTest.xlsx

Looking forward to your reply,thank you!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.