Activiti is a light-weight workflow and Business Process Management (BPM) Platform targeted at business people, developers and system admins. Its core is a super-fast and rock-solid BPMN 2 process engine for Java. It's open-source and distributed under the Apache license. Activiti runs in any Java application, on a server, on a cluster or in the cloud. It integrates perfectly with Spring, it is extremely lightweight and based on simple concepts.

Overview

Activiti

Join Us in Gitter CI Codacy Badge ASL 2.0 CLA security status stability status licensing status

Homepage: http://activiti.org

Activiti is a light-weight workflow and Business Process Management (BPM) Platform targeted at business people, developers and system admins. Its core is a super-fast and rock-solid BPMN 2 process engine for Java. It's open-source and distributed under the Apache license. Activiti runs in any Java application, on a server, on a cluster or in the cloud. It integrates perfectly with Spring, it is extremely lightweight and based on simple concepts.

NOTE: We moved to the master branch all the content of the development branch that we were using to design and code the next major version of the project. If you want to contribute with version 6.x please look at the 6.x branch.

If you want to read more about our Repositories structure you can read our GitBook.

Configuring IntelliJ

  • Force language level 11, to fail-fast when (accidentally) using features available only in newer Java versions.

    • Open menu File, menu item Project Structure
    • Click list item Modules, for each module, tab Sources, combobox Language level should be automatically set to 11 ...
  • Avoid that changes in some resources are ignored in the next run/debug (and you are forced to use mvn)

    • Open menu File, menu item Settings or menu IntelliJ IDEA, menu item Preferences... if on a Mac
    • Click tree item Compiler, textfield Resource patterns: change to !?*.java (remove other content)
  • Avoid a StackOverflowError when building

    • Open menu File, menu item Settings or menu IntelliJ IDEA, menu item Preferences... if on a Mac
    • Click tree item Compiler, tree item Java Compiler, textfield Additional command line parameters
    • Add -J-Xss1024k
  • Recommended code style: use the Google Java Style Guide with editorconfig

    • Download the IntelliJ code style xml from: [https://google.github.io/styleguide/intellij-java-google-style.xml]
    • Open menu File, menu item Settings or menu IntelliJ IDEA, menu item Preferences... if on a Mac
    • Click tree item Code Style, click cogwheel and select Import scheme, then IntelliJ code style xml
    • Browse where you downloaded the xml and open it. Check that GoogleStyle is the active scheme.
      • Note: IntelliJ IDEA doesn't format your code automatically. You have to press Ctrl+Alt+L keyboard combination to trigger auto formatting when coding is done.
    • There's an .editorconfig what has definition for indents, file encoding, line endings.
    • If you disable it, you need to set the file encoding and number of spaces correctly manually.
    • Eclipse code style xml: [https://google.github.io/styleguide/eclipse-java-google-style.xml]
    • Eclipse needs editorconfig-eclipse plugin in order to support EditorConfig files.
  • Set manually the correct file encoding (UTF-8 except for properties files) and end-of-line characters (unix):

    • Open menu File, menu item Settings or menu IntelliJ IDEA, menu item Preferences... if on a Mac
    • Click tree item Code Style, tree item General
      • Combobox Line separator (for new files): Unix
    • Click tree item File Encodings
      • Combobox IDE Encoding: UTF-8
      • Combobox Default encoding for properties files: ISO-8859-1
        • Note: normal i18n properties files must be in ISO-8859-1 as specified by the java ResourceBundle contract.
  • Set manually the correct number of spaces when pressing tab:

    • Open menu File, menu item Settings or menu IntelliJ IDEA, menu item Preferences... if on a Mac
    • Click tree item Code Style, tree item General
    • Click tab Java
      • Checkbox Use tab character: off
      • Textfield Tab size: 4
      • Textfield Indent: 4
      • Textfield Continuation indent: 8
    • Open tab XML
      • Checkbox Use tab character: off
      • Textfield Tab size: 2
      • Textfield Indent: 2
      • Textfield Continuation indent: 4
  • Set the correct file headers (do not include @author or a meaningless javadoc):

    • Open menu File, menu item Settings or menu IntelliJ IDEA, menu item Preferences... if on a Mac
    • Click tree item File templates, tab Includes, list item File Header
    • Remove the line @author Your Name.
      • We do not accept @author lines in source files, see FAQ below.
    • Remove the entire javadoc as automatically templated data is meaningless.
  • Set the correct license header

    • Open menu File, menu item Settings or menu IntelliJ IDEA, menu item Preferences... if on a Mac
    • Click tree item Copyright, tree item Copyright profiles
    • Click tree item Copyright
      • Combobox Default project copyright: Alfresco Software

FAQ

  • Why do you not accept @author lines in your source code?
    • Because the author tags in the java files are a maintenance nightmare

      • A large percentage is wrong, incomplete or inaccurate.
      • Most of the time, it only contains the original author. Many files are completely refactored/expanded by other authors.
      • Git is accurate, that is the canonical source to find the correct author.
    • Because the author tags promote code ownership, which is bad in the long run.

      • If people work on a piece they perceive as being owned by someone else, they tend to:
        • only fix what they are assigned to fix, instead of everything that's broken
        • discard responsibility if that code doesn't work properly
        • be scared of stepping on the feet of the owner.
    • Credit to the authors is given:

Development commands

Add License header

To format files with the required license:

mvn license:format

Checkstyle

To check if your code style respect all the rules:

mvn checkstyle:check -DskipCheckstyle=false

Site

To generate the maven site:

mvn clean site site:stage

the site will be generated at: target/staging/index.html

CI/CD

Running on GitHub Actions, requires the following secrets to be set:

Name Description
NEXUS_USERNAME Internal Maven repository username
NEXUS_PASSWORD Internal Maven repository password
GITHUB_TOKEN GitHub token
Comments
  • activiti 7 + jhipster user authorization

    activiti 7 + jhipster user authorization

    Hi.

    I created microservice with jhipster. I added to it activiti 7.0.0.Beta1. My microservices are configured to use jhipster UAA. I added a small endpoint to create process instance:

        @Timed
        @GetMapping("/start")
        public ResponseEntity<ProcessInstance> start() throws URISyntaxException {
            Offer offer = new Offer();
            StartProcessPayload payload = ProcessPayloadBuilder
                    .start()
                    .withProcessDefinitionKey(PROCESS_NAME)
                    .withProcessInstanceName("New offer")
                    .withVariable("offer", offer)
                    .build();
            ProcessInstance instance = processRuntime.start(payload);
            return ResponseEntity.created(new URI("/api/process/start/" + instance.getId()))
                    .headers(HeaderUtil.createEntityCreationAlert(PROCESS_NAME, instance.getId()))
                    .body(instance);
        }
    

    And it works perfectly. :) But when I try to expose list of current users task in this way:

        @GetMapping("/get-my-tasks")
        @Timed
        public ResponseEntity<List<Task>> getAllMyTasks(Pageable pageable) {
            log.debug("REST request to get a page of my tasks");
    
            org.activiti.runtime.api.query.Pageable.of(new Long(pageable.getOffset()).intValue(), pageable.getPageNumber());
            Page<Task> page = taskRuntime.tasks(
                    org.activiti.runtime.api.query.Pageable.of(new Long(pageable.getOffset()).intValue(), pageable.getPageNumber())
            );
    
            HttpHeaders headers = ActivitiPaginationUtil.generatePaginationHttpHeaders(page, "/api/tasks/get-my-tasks");
            return new ResponseEntity<>(page.getContent(), headers, HttpStatus.OK);
        }
    
    

    I get exception:

    org.springframework.security.core.userdetails.UsernameNotFoundException: admin
            at org.springframework.security.provisioning.InMemoryUserDetailsManager.loadUserByUsername(InMemoryUserDetailsManager.java:146)
            at org.activiti.spring.identity.ActivitiUserGroupManagerImpl.getUserGroups(ActivitiUserGroupManagerImpl.java:23)
            at org.activiti.runtime.api.impl.TaskRuntimeImpl.tasks(TaskRuntimeImpl.java:103)
            at org.activiti.runtime.api.impl.TaskRuntimeImpl$$FastClassBySpringCGLIB$$cb179e94.invoke(<generated>)
            at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)
            at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:746)
            at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)
            at org.springframework.security.access.intercept.aopalliance.MethodSecurityInterceptor.invoke(MethodSecurityInterceptor.java:69)
            at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:185)
            at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:688)
            at org.activiti.runtime.api.impl.TaskRuntimeImpl$$EnhancerBySpringCGLIB$$eed2ae67.tasks(<generated>)
            at com.bpm.micro.web.rest.TasksResource.getAllMyTasks(TasksResource.java:45)
            at com.bpm.micro.web.rest.TasksResource$$FastClassBySpringCGLIB$$3b2950c2.invoke(<generated>)
            at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)
            at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:746)
            at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)
            at org.springframework.aop.aspectj.MethodInvocationProceedingJoinPoint.proceed(MethodInvocationProceedingJoinPoint.java:88)
            at com.bpm.micro.aop.logging.LoggingAspect.logAround(LoggingAspect.java:85)
            at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
            at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
            at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
            at java.base/java.lang.reflect.Method.invoke(Method.java:564)
            at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethodWithGivenArgs(AbstractAspectJAdvice.java:644)
            at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethod(AbstractAspectJAdvice.java:633)
            at org.springframework.aop.aspectj.AspectJAroundAdvice.invoke(AspectJAroundAdvice.java:70)
            at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:185)
            at org.springframework.aop.aspectj.AspectJAfterThrowingAdvice.invoke(AspectJAfterThrowingAdvice.java:62)
            at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:185)
            at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:92)
            at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:185)
            at com.ryantenney.metrics.spring.TimedMethodInterceptor.invoke(TimedMethodInterceptor.java:48)
            at com.ryantenney.metrics.spring.TimedMethodInterceptor.invoke(TimedMethodInterceptor.java:34)
            at com.ryantenney.metrics.spring.AbstractMetricMethodInterceptor.invoke(AbstractMetricMethodInterceptor.java:59)
            at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:185)
            at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:688)
            at com.bpm.micro.web.rest.TasksResource$$EnhancerBySpringCGLIB$$4b05f146.getAllMyTasks(<generated>)
            at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
            at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
            at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
            at java.base/java.lang.reflect.Method.invoke(Method.java:564)
            at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:209)
            at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:136)
            at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:102)
            at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:877)
            at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:783)
            at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
            at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:991)
            at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:925)
            at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:974)
            at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:866)
            at javax.servlet.http.HttpServlet.service(HttpServlet.java:687)
            at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:851)
            at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
            at io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:74)
            at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:129)
            at com.codahale.metrics.servlet.AbstractInstrumentedFilter.doFilter(AbstractInstrumentedFilter.java:111)
            at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
            at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
            at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:96)
            at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
            at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
            at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
            at org.springframework.boot.actuate.web.trace.servlet.HttpTraceFilter.doFilterInternal(HttpTraceFilter.java:90)
            at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
            at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
            at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
            at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:320)
            at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:127)
            at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:91)
            at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
            at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:119)
            at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
            at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:137)
            at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
            at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:111)
            at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
            at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:170)
            at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
            at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63)
            at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
            at org.springframework.security.oauth2.provider.authentication.OAuth2AuthenticationProcessingFilter.doFilter(OAuth2AuthenticationProcessingFilter.java:176)
            at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
            at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:116)
            at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
            at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:66)
            at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
            at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
            at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:105)
            at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
            at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:56)
            at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
            at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
            at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:215)
            at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:178)
            at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:357)
            at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:270)
            at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
            at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
            at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99)
            at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
            at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
            at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
            at org.springframework.web.filter.HttpPutFormContentFilter.doFilterInternal(HttpPutFormContentFilter.java:109)
            at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
            at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
            at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
            at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:93)
            at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
            at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
            at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
            at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.filterAndRecordMetrics(WebMvcMetricsFilter.java:155)
            at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.filterAndRecordMetrics(WebMvcMetricsFilter.java:123)
            at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.doFilterInternal(WebMvcMetricsFilter.java:108)
            at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
            at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
            at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
            at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:200)
            at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
            at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
            at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
            at io.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:84)
            at io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62)
            at io.undertow.servlet.handlers.ServletChain$1.handleRequest(ServletChain.java:64)
            at io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)
            at io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:132)
            at io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57)
            at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
            at io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46)
            at io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64)
            at io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:60)
            at io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:77)
            at io.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43)
            at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
            at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
            at io.undertow.servlet.handlers.SessionRestoringHandler.handleRequest(SessionRestoringHandler.java:119)
            at io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:292)
            at io.undertow.servlet.handlers.ServletInitialHandler.access$100(ServletInitialHandler.java:81)
            at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:138)
            at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:135)
            at io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:48)
            at io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43)
            at io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:272)
            at io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:81)
            at io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:104)
            at io.undertow.server.Connectors.executeRootHandler(Connectors.java:336)
            at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:830)
            at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1135)
            at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
            at java.base/java.lang.Thread.run(Thread.java:844)
    

    For me seams that spring-boot inject InMemoryUserDetailsManager but i dont know why. Should I send this issue to jhipster team or it is activiti problem ?

    Also when I change my code a little bit:

        @Timed
        @GetMapping("/start")
        public ResponseEntity<ProcessInstance> start() throws URISyntaxException {
            Offer offer = new Offer();
            StartProcessPayload payload = ProcessPayloadBuilder
                    .start()
                    .withProcessDefinitionKey(PROCESS_NAME)
                    .withProcessInstanceName("New offer")
                    .withVariable("offer", offer)
                    .withVariable("owner", SecurityUtils.getCurrentUserLogin().get())
                    .build();
            ProcessInstance instance = processRuntime.start(payload);
            return ResponseEntity.created(new URI("/api/process/start/" + instance.getId()))
                    .headers(HeaderUtil.createEntityCreationAlert(PROCESS_NAME, instance.getId()))
                    .body(instance);
        }
    

    In the database I will have owner variable set to correct user login.

    EDIT: Ok, I figured it up. But this is only for my POC so it is not a solution:

    @Configuration
    public class ActivitiUserDetailsConfiguration {
    
        private final Logger log = LoggerFactory.getLogger(ActivitiUserDetailsConfiguration.class);
    
        @Bean
        public UserDetailsService myUserDetailsService() {
    
            InMemoryUserDetailsManager inMemoryUserDetailsManager = new InMemoryUserDetailsManager();
    
            List<SimpleGrantedAuthority> authorities = new ArrayList();
            authorities.add(new SimpleGrantedAuthority("ROLE_ADMIN"));
            authorities.add(new SimpleGrantedAuthority("ROLE_USER"));
            authorities.add(new SimpleGrantedAuthority("ROLE_ACTIVITI_USER"));
    
            inMemoryUserDetailsManager.createUser(new User("admin", passwordEncoder().encode("admin"), authorities));
    
            return inMemoryUserDetailsManager;
        }
    
        @Bean
        public PasswordEncoder passwordEncoder() {
            return new BCryptPasswordEncoder();
        }
    }
    
    community-contribution priority5 
    opened by mkawczynski07 21
  • Nullpointer exception in AsyncExecutor when running concurrent tasks for a process that has all tasks async

    Nullpointer exception in AsyncExecutor when running concurrent tasks for a process that has all tasks async

    We have a process with 14+ async tasks that are mutually inclusive (need to run one after the other)

    The reason for async is to be be able to get a processInstanceId returned when starting the run.

    But as we start to run this process with multiple hits, we start seeing the following error :

    java.lang.NullPointerException: null at org.activiti.engine.impl.persistence.entity.JobEntityManagerImpl.delete(JobEntityManagerImpl.java:151) ~[activiti-engine-6.0.0.jar:6.0.0] at org.activiti.engine.impl.persistence.entity.JobEntityManagerImpl.delete(JobEntityManagerImpl.java:35) ~[activiti-engine-6.0.0.jar:6.0.0] at org.activiti.engine.impl.persistence.entity.AbstractEntityManager.delete(AbstractEntityManager.java:87) ~[activiti-engine-6.0.0.jar:6.0.0] at org.activiti.engine.impl.persistence.entity.JobEntityManagerImpl.delete(JobEntityManagerImpl.java:137) ~[activiti-engine-6.0.0.jar:6.0.0] at org.activiti.engine.impl.persistence.entity.JobEntityManagerImpl.delete(JobEntityManagerImpl.java:35) ~[activiti-engine-6.0.0.jar:6.0.0] at org.activiti.engine.impl.persistence.entity.AbstractEntityManager.delete(AbstractEntityManager.java:82) ~[activiti-engine-6.0.0.jar:6.0.0] at org.activiti.engine.impl.asyncexecutor.DefaultJobManager.unacquire(DefaultJobManager.java:230) ~[activiti-engine-6.0.0.jar:6.0.0] at org.activiti.engine.impl.asyncexecutor.ExecuteAsyncRunnable$3.execute(ExecuteAsyncRunnable.java:169) ~[activiti-engine-6.0.0.jar:6.0.0] at org.activiti.engine.impl.asyncexecutor.ExecuteAsyncRunnable$3.execute(ExecuteAsyncRunnable.java:167) ~[activiti-engine-6.0.0.jar:6.0.0] at org.activiti.engine.impl.interceptor.CommandInvoker$1.run(CommandInvoker.java:37) ~[activiti-engine-6.0.0.jar:6.0.0] at org.activiti.engine.impl.interceptor.CommandInvoker.executeOperation(CommandInvoker.java:78) ~[activiti-engine-6.0.0.jar:6.0.0] at org.activiti.engine.impl.interceptor.CommandInvoker.executeOperations(CommandInvoker.java:57) ~[activiti-engine-6.0.0.jar:6.0.0] at org.activiti.engine.impl.interceptor.CommandInvoker.execute(CommandInvoker.java:42) ~[activiti-engine-6.0.0.jar:6.0.0] at org.activiti.engine.impl.interceptor.TransactionContextInterceptor.execute(TransactionContextInterceptor.java:48) ~[activiti-engine-6.0.0.jar:6.0.0] at org.activiti.engine.impl.interceptor.CommandContextInterceptor.execute(CommandContextInterceptor.java:63) ~[activiti-engine-6.0.0.jar:6.0.0] at org.activiti.spring.SpringTransactionInterceptor$1.doInTransaction(SpringTransactionInterceptor.java:47) [activiti-spring-6.0.0.jar:6.0.0] at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:133) [spring-tx-4.3.7.RELEASE.jar:4.3.7.RELEASE] at org.activiti.spring.SpringTransactionInterceptor.execute(SpringTransactionInterceptor.java:45) [activiti-spring-6.0.0.jar:6.0.0] at org.activiti.engine.impl.interceptor.LogInterceptor.execute(LogInterceptor.java:29) [activiti-engine-6.0.0.jar:6.0.0] at org.activiti.engine.impl.cfg.CommandExecutorImpl.execute(CommandExecutorImpl.java:44) [activiti-engine-6.0.0.jar:6.0.0] at org.activiti.engine.impl.cfg.CommandExecutorImpl.execute(CommandExecutorImpl.java:39) [activiti-engine-6.0.0.jar:6.0.0] at org.activiti.engine.impl.asyncexecutor.ExecuteAsyncRunnable.unacquireJob(ExecuteAsyncRunnable.java:167) [activiti-engine-6.0.0.jar:6.0.0] at org.activiti.engine.impl.asyncexecutor.ExecuteAsyncRunnable.lockJobIfNeeded(ExecuteAsyncRunnable.java:154) [activiti-engine-6.0.0.jar:6.0.0] at org.activiti.engine.impl.asyncexecutor.ExecuteAsyncRunnable.run(ExecuteAsyncRunnable.java:72) [activiti-engine-6.0.0.jar:6.0.0] at java.lang.Thread.run(Thread.java:745) [na:1.8.0_73]

    Exception in thread "SimpleAsyncTaskExecutor-172" java.lang.NullPointerException at org.activiti.engine.impl.persistence.entity.JobEntityManagerImpl.delete(JobEntityManagerImpl.java:151) at org.activiti.engine.impl.persistence.entity.JobEntityManagerImpl.delete(JobEntityManagerImpl.java:35) at org.activiti.engine.impl.persistence.entity.AbstractEntityManager.delete(AbstractEntityManager.java:87) at org.activiti.engine.impl.persistence.entity.JobEntityManagerImpl.delete(JobEntityManagerImpl.java:137) at org.activiti.engine.impl.persistence.entity.JobEntityManagerImpl.delete(JobEntityManagerImpl.java:35) at org.activiti.engine.impl.persistence.entity.AbstractEntityManager.delete(AbstractEntityManager.java:82) at org.activiti.engine.impl.asyncexecutor.DefaultJobManager.unacquire(DefaultJobManager.java:230) at org.activiti.engine.impl.asyncexecutor.ExecuteAsyncRunnable$3.execute(ExecuteAsyncRunnable.java:169) at org.activiti.engine.impl.asyncexecutor.ExecuteAsyncRunnable$3.execute(ExecuteAsyncRunnable.java:167) at org.activiti.engine.impl.interceptor.CommandInvoker$1.run(CommandInvoker.java:37) at org.activiti.engine.impl.interceptor.CommandInvoker.executeOperation(CommandInvoker.java:78) at org.activiti.engine.impl.interceptor.CommandInvoker.executeOperations(CommandInvoker.java:57) at org.activiti.engine.impl.interceptor.CommandInvoker.execute(CommandInvoker.java:42) at org.activiti.engine.impl.interceptor.TransactionContextInterceptor.execute(TransactionContextInterceptor.java:48) at org.activiti.engine.impl.interceptor.CommandContextInterceptor.execute(CommandContextInterceptor.java:63) at org.activiti.spring.SpringTransactionInterceptor$1.doInTransaction(SpringTransactionInterceptor.java:47) at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:133) at org.activiti.spring.SpringTransactionInterceptor.execute(SpringTransactionInterceptor.java:45) at org.activiti.engine.impl.interceptor.LogInterceptor.execute(LogInterceptor.java:29) at org.activiti.engine.impl.cfg.CommandExecutorImpl.execute(CommandExecutorImpl.java:44) at org.activiti.engine.impl.cfg.CommandExecutorImpl.execute(CommandExecutorImpl.java:39) at org.activiti.engine.impl.asyncexecutor.ExecuteAsyncRunnable.unacquireJob(ExecuteAsyncRunnable.java:167) at org.activiti.engine.impl.asyncexecutor.ExecuteAsyncRunnable.lockJobIfNeeded(ExecuteAsyncRunnable.java:154) at org.activiti.engine.impl.asyncexecutor.ExecuteAsyncRunnable.run(ExecuteAsyncRunnable.java:72) at java.lang.Thread.run(Thread.java:745)

    bug 
    opened by harshvardhanv 21
  • 5.17 + PG9.4 deployment PSQLException (order by  order by RES.ID_ asc )

    5.17 + PG9.4 deployment PSQLException (order by order by RES.ID_ asc )

    org.apache.ibatis.exceptions.PersistenceException:

    Error querying database. Cause: org.postgresql.util.PSQLException: ERROR: syntax error at or near "order"

    位置:113

    The error may exist in org/activiti/db/mapping/entity/ProcessDefinition.xml

    The error may involve org.activiti.engine.impl.persistence.entity.ProcessDefinitionEntity.selectProcessDefinitionsByQueryCriteria-Inline

    The error occurred while setting parameters

    SQL: select RES.* from ACT_RE_PROCDEF RES WHERE RES.DEPLOYMENT_ID_ = ? order by order by RES.ID_ asc LIMIT ? OFFSET ?

    Cause: org.postgresql.util.PSQLException: ERROR: syntax error at or near "order"

    opened by dongcb678 20
  • Fix signal events throw/catch race conditions in process instance scope

    Fix signal events throw/catch race conditions in process instance scope

    Currently, throw/catch signal event handling in Activiti engine causes race conditions behavior to occur when throw/catch signals are used to synchronize parallel activities in the same process instance scope.

    For example, after a parallel gateway, due to various task execution timings or non-deterministic execution path by Activiti engine, a signal on one path is emitted before subscribers on parallel paths can subscribe to it, causing subscribers to block and wait indefinitely:

    image

    To fix this problem, the PR introduces throw signal event registration in the process instance session execution context. This will allow subscribers to receive events at any time after the signal has been published, so the execution can proceed if the signal has been registered in the current session or, has already been recorded in the historic activity instance audit log in the previous sessions.

    Global events handling stays the same as before, i.e. non-deterministic, because it requires global persistent event registration/cleanup mechanism in the command execution session to properly synchronize between parallel process instances for each tenant.

    See test cases in Activiti Engine module for details: SignalEventSessionManagerTest.java

    image

    image

    image

    image

    image

    image

    bug 
    opened by igdianov 19
  • Redundant Keycloak Realm Api call to resolve user groups in Rb, Query and Audit

    Redundant Keycloak Realm Api call to resolve user groups in Rb, Query and Audit

    Query service uses Keycloak realm to resolve user groups via Rest for every task list request using https://github.com/Activiti/activiti-cloud-service-common/blob/448c871049dcececd7df279c4613e32966f3f22f/activiti-cloud-services-common-identity-keycloak/src/main/java/org/activiti/cloud/services/identity/keycloak/KeycloakUserGroupManager.java#L87 .

    Because JWT access token does not contain the list of effective user groups:

    {
      "jti": "bcd08573-d4d5-4ad8-8c65-8913e9388ec5",
      "exp": 1558536769,
      "nbf": 0,
      "iat": 1558536469,
      "iss": "http://activiti-cloud-gateway.staging.35.223.143.26.nip.io/auth/realms/activiti",
      "aud": "activiti",
      "sub": "784ca026-cfaa-422c-88e8-b7565515ff71",
      "typ": "Bearer",
      "azp": "activiti",
      "auth_time": 0,
      "session_state": "2fd790dd-c27e-46fb-a7de-d99f2e152ad5",
      "acr": "1",
      "allowed-origins": [
        "*"
      ],
      "realm_access": {
        "roles": [
          "offline_access",
          "ACTIVITI_USER",
          "uma_authorization"
        ]
      },
      "resource_access": {
        "account": {
          "roles": [
            "manage-account",
            "manage-account-links",
            "view-profile"
          ]
        }
      },
      "scope": "email profile",
      "email_verified": false,
      "name": "h r",
      "preferred_username": "hruser",
      "given_name": "h",
      "family_name": "r",
      "email": "[email protected]"
    }
    

    It is not optimal to do that for every request, because it is slow and impacts overall response time when calling Rest Apis.

    Another problem is that Keycloak Admin client is instantiating RestEasy Http Client with default connection pool of maximum 10 connections:

    https://github.com/keycloak/keycloak/blob/da85cff53b239250fa880e086b2721ba41a9a1e8/integration/admin-client/src/main/java/org/keycloak/admin/client/Keycloak.java#L72

    This configuration creates ThreadPoolExecutor with limited number threads in the pool which will cause blocking with more than 10 concurrent requests:;

    image

    This is likely the reason of a connection timeout when Task Controller tries to connect to Keycloak to extract realm data to get user roles.

    To solve this problem we can use Keycloak User Groups mapper to inject the list of user groups into extra claims inside JWT token below.

    opened by igdianov 18
  • Signal chain does not work

    Signal chain does not work

    Must what works?

    1. start SIGNALS_CHAIN process
    2. trigger trigger message
    3. process done

    Actually process waits for ev2

    image

    ActivitiSignalsChainFeatureTest.testSignalsChain.bpmn.zip

    Reason, agenda&commandInvokers walks throught process bypassing wide. And when ev2 fired, ev2 catchEvent not exists yet.

    There is some strange with flow.

    In one process that pattern works fine. In second does not works. In that test also does not works with exclusiveGateway added.

    question feedback-required 
    opened by ghost 18
  • does activiti support resume process instance?

    does activiti support resume process instance?

    FYI. I have create a simple process definition like this: 2016-09-22 11 38 48

    And then I start a process instance of this process definition, but for some reason the upper service tasked failed and cause the entire JVM process exit, I want to know how I can resume this process instance execution when I restart the program, is there any API for me to do this? Also if I can resume this process instance execution, where this process instance will start execute? from the failed activity? @jbarrez @tijsrademakers really hope to get your help, thanks very much :)

    opened by adohe-zz 18
  • Job does not exist anymore and will not be executed

    Job does not exist anymore and will not be executed

    I have a problem use ParallelGateway in Activiti 6.0. i try various combinations by async = true/false and exclusive = true/false for ServiceTask , but my process still wait(block), and I found some debug log:

    o.a.e.i.c.ExecuteAsyncJobCmd Job does not exist anymore and will not be executed. It has most likely been deleted as part of another concurrent part of the process instance.

    but i found the job record in ACT_RU_JOB table, it looks like one thread insert the job record , other thread read the job record in the same times. how could I fix that ?

    Thanks & Regards

    opened by irwinsun 17
  •   We suspect that it was an error when the process parsed the XML file

    We suspect that it was an error when the process parsed the XML file

    Our process runs normally within four or five days after the service is started, but there will be an end of the interruption after four or five days on the line, and no reason can be found.We suspect that it was an error when the process parsed the XML file mytaskaction_hsipreview gongxun5.txt

    opened by wxp20032003 17
  • Activiti Designer Plugin for Eclipse Update Site is no more available

    Activiti Designer Plugin for Eclipse Update Site is no more available

    I tried to get Activiti from this update site https://www.activiti.org/designer/update/ but it is no more available, then i tried to download the zip file from here http://www.activiti.org/designer/archived/activiti-designer-5.18.0.zip and also i got a negative result "Page not found" can anyone give me the new updatesite if it exists? thanks.

    opened by achemek 17
  • Invalid OSGi manifest in 'activiti-engine-5.13.jar'

    Invalid OSGi manifest in 'activiti-engine-5.13.jar'

    Apparently the MANIFEST.MF in the 5.13 release version of 'activiti-engine' is technically invalid; incorrect, and should not pass even the initial parsing stage. The present mechanism for build validation likely contains a less strict facility for manifest parsing -- as the manifest contains a wildcard-like entry, "org.activiti.osgi*" which should not be present.

    Incidentally, I discovered this as Eclipse Virgo choked on activiti-engine-5.13.jar when I dropped it into 'repository/usr'. The activiti-engine-5.13.jar file was just one of 42 total dependency files I was deploying; all others imported correctly. Some snippets of the log are shown below, along with a shell command which identifies the offending line number within the manifest.

    org.eclipse.virgo.util.osgi.manifest.parse.BundleManifestParseException: Error parsing bundle manifest header 
    HP014E:[col 4,175]: Expected a semicolon or comma but found '*'
    
     .. org.activiti.engine.test.mock;version="[5.13,5.14)",org.activiti.osgi*;resolution:=optional,org.apache.commons.lang;version="[2.4,3)" ..
    
    $ unzip -c activiti-engine-5.13.jar META-INF/MANIFEST.MF | grep -n "org.activiti.osgi"
    376: .test.mock;version="[5.13,5.14)",org.activiti.osgi*;resolution:=optio
    
    • Notice the entry, "org.activiti.osgi*"

    The jar file was pulled via Maven, from http://maven.alfresco.com/nexus/content/repositories/activiti

            <dependency>
                <groupId>org.activiti</groupId>
                <artifactId>activiti-engine</artifactId>
                <version>5.13</version>
            </dependency>
    

    Also found a verify similar issue (which was since fixed) for Jersey; https://java.net/jira/browse/JERSEY-1426 .

    Meanwhile, can anyone suggest a workaround? I know I could manually fix the manifest, but not sure just what to replace this entry with.

    opened by beattidp 17
  • build(deps): bump Alfresco/alfresco-build-tools from 1.21.0 to 1.29.0

    build(deps): bump Alfresco/alfresco-build-tools from 1.21.0 to 1.29.0

    Bumps Alfresco/alfresco-build-tools from 1.21.0 to 1.29.0.

    Release notes

    Sourced from Alfresco/alfresco-build-tools's releases.

    v1.29.0

    What's Changed

    Full Changelog: https://github.com/Alfresco/alfresco-build-tools/compare/v1.28.0...v1.29.0

    v1.28.0

    What's Changed

    Full Changelog: https://github.com/Alfresco/alfresco-build-tools/compare/v1.27.0...v1.28.0

    v1.27.0

    What's Changed

    Full Changelog: https://github.com/Alfresco/alfresco-build-tools/compare/v1.26.0...v1.27.0

    v1.26.0

    What's Changed

    Full Changelog: https://github.com/Alfresco/alfresco-build-tools/compare/v1.25.0...v1.26.0

    v1.25.0

    What's Changed

    New Contributors

    Full Changelog: https://github.com/Alfresco/alfresco-build-tools/compare/v1.24.2...v1.25.0

    v1.24.2

    What's Changed

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies github_actions 
    opened by dependabot[bot] 0
  • Update Connectors documentation

    Update Connectors documentation

    Update the documentation on Developer's Guide (https://github.com/Activiti/activiti-7-developers-guide) for the changes made in https://github.com/Activiti/Activiti/issues/4196.

    documentation 
    opened by jsokolowskii 0
  • Create an audit event when the deployed application has been rolled back

    Create an audit event when the deployed application has been rolled back

    When the runtime bundle starts it creates an audit event to monitor that it is started. If it is started after a rollback we need to produce a different event to highlight what happened.

    opened by jesty 0
  • Automatically closing and releasing Nexus Staging repository

    Automatically closing and releasing Nexus Staging repository

    Automate the actions of closing and releasing the Nexus staging repository using the provided REST APIs.

    • Close:
    POST /service/local/staging/bulk/close
    {
      "data": {
        "description": "Closing $VERSION",
        "stagedRepositoryIds": [
          "$STAGING_REPOSITORY_ID"
        ]
      }
    }
    
    • Release:
    POST /service/local/staging/bulk/promote
    {
      "data": {
        "autoDropAfterRelease": true,
        "description": "Releasing $VERSION",
        "stagedRepositoryIds": [
          "$STAGING_REPOSITORY_ID"
        ]
      }
    }
    
    opened by erdemedeiros 0
  • build(deps): bump actions/setup-java from 3.6.0 to 3.9.0

    build(deps): bump actions/setup-java from 3.6.0 to 3.9.0

    Bumps actions/setup-java from 3.6.0 to 3.9.0.

    Release notes

    Sourced from actions/setup-java's releases.

    v3.9.0

    In scope of this release we add support for .java-version file (actions/setup-java#426). For more information about its usage please refer to the documentation.

        steps:
          - uses: actions/checkout@v3
          - name: Setup java
            uses: actions/setup-java@v3
            with:
              distribution: '<distribution>'
              java-version-file: .java-version
          - run: java HelloWorldApp.java
    

    v3.8.0

    In scope of this release we added logic to pass the token input through on GHES for Microsoft Build of OpenJDK (actions/setup-java#395) and updated minimatch dependency.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies github_actions 
    opened by dependabot[bot] 0
Releases(7.8.0-rc.32)
  • 7.8.0-rc.32(Jan 4, 2023)

  • 7.8.0-rc.31(Jan 4, 2023)

  • 7.8.0-rc.30(Jan 3, 2023)

  • 7.8.0-rc.29(Jan 3, 2023)

  • 7.8.0-rc.28(Jan 3, 2023)

  • 7.8.0-rc.27(Jan 3, 2023)

  • 7.8.0-alpha.5(Jan 3, 2023)

  • 7.8.0-alpha.4(Jan 3, 2023)

  • 7.8.0-alpha.3(Jan 3, 2023)

  • 7.8.0-rc.26(Dec 29, 2022)

  • 7.8.0-rc.25(Dec 29, 2022)

  • 7.8.0-rc.24(Dec 29, 2022)

  • 7.8.0-rc.23(Dec 29, 2022)

  • 7.8.0-rc.22(Dec 29, 2022)

  • 7.8.0-rc.21(Dec 28, 2022)

  • 7.8.0-alpha.2(Dec 28, 2022)

  • 7.8.0-rc.20(Dec 27, 2022)

  • 7.8.0-rc.19(Dec 27, 2022)

  • 7.8.0-rc.18(Dec 27, 2022)

  • 7.8.0-rc.17(Dec 23, 2022)

  • 7.8.0-rc.16(Dec 22, 2022)

  • 7.8.0-rc.15(Dec 22, 2022)

  • 7.8.0-rc.14(Dec 22, 2022)

  • 7.8.0-rc.13(Dec 21, 2022)

  • 7.8.0-rc.12(Dec 21, 2022)

  • 7.8.0-rc.11(Dec 21, 2022)

  • 7.8.0-rc.10(Dec 21, 2022)

  • 7.8.0-alpha.1(Dec 21, 2022)

  • 7.7.0(Dec 16, 2022)

    What's Changed

    • Add candidate starter json mappings by @balsarori in https://github.com/Activiti/Activiti/pull/4127
    • Minor rename candidateStarters property name by @balsarori in https://github.com/Activiti/Activiti/pull/4132
    • build(deps): bump Alfresco/alfresco-build-tools from 1.18.0 to 1.20.0 by @dependabot in https://github.com/Activiti/Activiti/pull/4136
    • build(deps): bump Alfresco/alfresco-build-tools from 1.20.0 to 1.20.1 by @dependabot in https://github.com/Activiti/Activiti/pull/4140
    • Review gh actions workflows by @atchertchian in https://github.com/Activiti/Activiti/pull/4138
    • build(deps): bump actions/setup-java from 3.4.1 to 3.6.0 by @dependabot in https://github.com/Activiti/Activiti/pull/4117
    • build(deps): bump Alfresco/alfresco-build-tools from 1.20.1 to 1.20.3 by @dependabot in https://github.com/Activiti/Activiti/pull/4141
    • build(deps): bump Alfresco/alfresco-build-tools from 1.20.3 to 1.21.0 by @dependabot in https://github.com/Activiti/Activiti/pull/4144
    • Added PROCESS_DELETED event by @LorenzoDiGiuseppe in https://github.com/Activiti/Activiti/pull/4143
    • publish candidate starter added events after startup by @balsarori in https://github.com/Activiti/Activiti/pull/4135
    • #4134 - publish candidate starters events only when enabled by @balsarori in https://github.com/Activiti/Activiti/pull/4161
    • Activiti/Activiti#4162 Update to Spring Boot 2.7.6 by @scaccia in https://github.com/Activiti/Activiti/pull/4164

    New Contributors

    • @LorenzoDiGiuseppe made their first contribution in https://github.com/Activiti/Activiti/pull/4143
    • @scaccia made their first contribution in https://github.com/Activiti/Activiti/pull/4164

    Full Changelog: https://github.com/Activiti/Activiti/compare/7.6.1...7.7.0

    Source code(tar.gz)
    Source code(zip)
  • 7.7.0-rc.76(Dec 15, 2022)

Flexible framework for workflow and decision automation with BPMN and DMN. Integration with Spring, Spring Boot, CDI.

Camunda Platform - The open source BPMN platform Camunda Platform is a flexible framework for workflow and process automation. It's core is a native B

Camunda BPM 3k Dec 30, 2022
A compact and highly efficient workflow and Business Process Management (BPM) platform for developers, system admins and business users.

Flowable (V6) Maven Central: Docker Images: License: Homepage: https://www.flowable.org/ flowable / flowəb(ə)l / a compact and highly efficient workfl

Flowable 6k Jan 7, 2023
Ninja is a full stack web framework for Java. Rock solid, fast and super productive.

_______ .___ _______ ____. _____ \ \ | |\ \ | | / _ \ / | \| |/ | \ | |/ /_\ \ / | \

Ninja Web Framework 1.9k Jan 5, 2023
Apache Cayenne is an open source persistence framework licensed under the Apache License

Apache Cayenne is an open source persistence framework licensed under the Apache License, providing object-relational mapping (ORM) and remoting services.

The Apache Software Foundation 284 Dec 31, 2022
Tribal Trouble GNU 2 Tribal Trouble - Tribal Trouble is a realtime strategy game released by Oddlabs in 2004. In 2014 the source was released under GPL2 license. License: GNU 2, .

Tribal Trouble Tribal Trouble is a realtime strategy game released by Oddlabs in 2004. In 2014 the source was released under GPL2 license, and can be

Sune Hagen Nielsen 147 Dec 8, 2022
An XMPP server licensed under the Open Source Apache License.

Openfire About Openfire is a real time collaboration (RTC) server licensed under the Open Source Apache License. It uses the only widely adopted open

Ignite Realtime 2.6k Jan 3, 2023
a Business Process Management (BPM) Suite

Quick Links Homepage: http://jbpm.org/ Business Applications: https://start.jbpm.org/ Documentation: https://docs.jboss.org/jbpm/release/latestFinal/j

KIE (Drools, OptaPlanner and jBPM) 1.4k Jan 2, 2023
Flexible framework for workflow and decision automation with BPMN and DMN. Integration with Spring, Spring Boot, CDI.

Camunda Platform - The open source BPMN platform Camunda Platform is a flexible framework for workflow and process automation. It's core is a native B

Camunda BPM 3k Dec 30, 2022
A fast, light and cloud native OAuth 2.0 authorization microservices based on light-4j

A fast, light weight and cloud native OAuth 2.0 Server based on microservices architecture built on top of light-4j and light-rest-4j frameworks. Stac

null 291 Dec 17, 2022
uniVocity-parsers is a suite of extremely fast and reliable parsers for Java. It provides a consistent interface for handling different file formats, and a solid framework for the development of new parsers.

Welcome to univocity-parsers univocity-parsers is a collection of extremely fast and reliable parsers for Java. It provides a consistent interface for

univocity 874 Dec 15, 2022
Business Application Platform - no-code/low-code platform to build business applications

Orienteer What is Orienteer Orienteer is Business Application Platform: Easy creation of business applications Extendable to fit your needs Dynamic da

Orienteer 189 Dec 6, 2022
Payara Server is an open source middleware platform that supports reliable and secure deployments of Java EE (Jakarta EE) and MicroProfile applications in any environment: on premise, in the cloud or hybrid.

Payara Platform Community Edition Create. Innovate. Elevate. Payara Platform Community Edition features open source server runtimes for development pr

Payara Foundation 847 Dec 27, 2022
A simple Plugin to allow server admins and user with Permissions to change fast and easy thier own Gamemode

A simple Plugin to allow server admins and user with Permissions to change fast and easy thier own Gamemode

Qubik Studios 1 Jan 17, 2022
Rivr is a lightweight open-source dialogue engine enabling Java developers to easily create enterprise-grade VoiceXML applications.

Overview Rivr is a lightweight open-source dialogue engine enabling Java developers to easily create enterprise-grade VoiceXML applications. Read our

Nu Echo Inc. 57 Jun 27, 2022