GithubHelp home page GithubHelp logo

holunda-io / camunda-bpm-cloud Goto Github PK

View Code? Open in Web Editor NEW
20.0 20.0 0.0 60.68 MB

Discontinued, look for camunda-bpm-taskpool

Home Page: https://github.com/holunda-io/camunda-bpm-taskpool

License: Apache License 2.0

Java 90.70% Shell 7.53% Dockerfile 1.77%
axon camunda cloud microservice rabbitmq

camunda-bpm-cloud's Introduction

holunda-io

Organizational Metrics

github-metrics.svg

camunda-bpm-cloud's People

Stargazers

 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

camunda-bpm-cloud's Issues

error on task list maven build

[INFO] 
[INFO] Running "postcss:dist" (postcss) task
[ERROR] Container#eachAtRule is deprecated. Use Container#walkAtRules instead.
[ERROR] Container#eachRule is deprecated. Use Container#walkRules instead.
[ERROR] Container#eachDecl is deprecated. Use Container#walkDecls instead.
[INFO] >> 1 processed stylesheet created.
[INFO] 

seems to work anyway ...

use mysql as axon-eventstore

currently, axon uses an h2 in memory eventstore, so when we restart the workloadservice, we can not recreate the query-view from an existing eventstream, all tasks are lost.

use mysql (current db) as event store.

Complete with variables

  • minimal form
  • send variables with complete request
  • store variables on task in eventservice

simple-process: NoSuchMethodError when completing a task in cloud-tasklist

branch: workload-service-axon

2017-03-31 15:20:15.746  ERROR 1 --- [o-auto-1-exec-7] c.b.s.b.s.r.CamundaJerseyResourceConfig] : Allocate exception for servlet org.camunda.bpm.spring.boot.starter.rest.CamundaJerseyResourceConfig

java.lang.NoSuchMethodError: javax.ws.rs.core.Application.getProperties()Ljava/util/Map;
at org.glassfish.jersey.server.ApplicationHandler.<init>(ApplicationHandler.java:331) ~[jersey-server-2.23.2.jar!/:na]
at org.glassfish.jersey.servlet.WebComponent.<init>(WebComponent.java:392) ~[jersey-container-servlet-core-2.23.2.jar!/:na]
at org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:177) ~[jersey-container-servlet-core-2.23.2.jar!/:na]
...

refactor maven modules

  • use groupId org.camunda.bpm.extension.cloud - all extensions with all submodules otherwise are on the same level in repo
  • use short names for module dirs (discovery-service instead of camunda-bpm-cloud-discovery-service) - easier on the eyes when browsing through the project

use spring-cloud bom dependency-management

We should use the Brixton bom

 <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-dependencies</artifactId>
        <version>${spring-cloud.version}</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>

instead of manual netflix deps

 <dependencies>
      <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-netflix</artifactId>
        <version>1.1.0.RELEASE</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
    </dependencies>

split workloadservice in query and command

currently, we have the command and the query component inside the one workloadservice microservice. We should split them into

  • workload-command-service
  • workload-query-service

Motivation

  • clean separation of concerns according to CQRS/ES architecture
  • scalability: we can decide to run multiple read or multiple write nodes depending on load

let broadcaster publish to rabbitmq instead of rest

when the process engine uses broadcaster to notify the workloadservice via rest and the workloadservice is not available, the message can not be sent. This leads to either: lost tasks or roll back of the process instance.

We should use messaging (via rabbitmq) instead, so we can configure a persistant queue that can be processes by the workloadservice once it is back up.

allow random port for eventservice

I tried to set the port of eventservice to "0" in bootstrap.yaml. Result: processes can not publish there task-create event anymore.

I am reverting, but we should consider this as an extension.

Trivial process throws exception "task supervisor rejected the task"

2016-06-30 16:25:30.220 ERROR 1 --- [ver-bootstrap-0] c.netflix.discovery.TimedSupervisorTask  : task supervisor rejected the task

java.util.concurrent.RejectedExecutionException: Task java.util.concurrent.FutureTask@3323acbd rejected from java.util.concurrent.ThreadPoolExecutor@3de454a9[Terminated, pool size = 0, active threads = 0, queued tasks = 0, completed tasks = 0]
    at java.util.concurrent.ThreadPoolExecutor$AbortPolicy.rejectedExecution(ThreadPoolExecutor.java:2047) ~[na:1.8.0_92]
    at java.util.concurrent.ThreadPoolExecutor.reject(ThreadPoolExecutor.java:823) [na:1.8.0_92]
    at java.util.concurrent.ThreadPoolExecutor.execute(ThreadPoolExecutor.java:1369) [na:1.8.0_92]
    at java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:112) ~[na:1.8.0_92]
    at com.netflix.discovery.TimedSupervisorTask.run(TimedSupervisorTask.java:62) ~[eureka-client-1.4.6.jar!/:1.4.6]
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [na:1.8.0_92]
    at java.util.concurrent.FutureTask.run(FutureTask.java:266) [na:1.8.0_92]
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180) [na:1.8.0_92]
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293) [na:1.8.0_92]
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_92]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_92]
    at java.lang.Thread.run(Thread.java:745) [na:1.8.0_92]

seems to be related to spring-dev-tools (unconfirmed)

remove dockerFiles in favor of plugin configuration

our hard coded DockerFiles are unflexible because artifact name and version is included.
If we would do a release, we would have to edit all files. and its the same file over and over again.

the maven plugin allow to set the DockerFile instructions as part of the plugi.-config. And yes: we can use maven-properties there!

clean up pom

  • spring boot 1.3.5
  • camunda 7.5.0
  • remove unsed dep/dep-mgt
  • disable camunda ee

fix travis npm build

we are getting an error building the cloud-tasklist:

Done. Phantomjs binary available at /home/travis/build/holisticon/camunda-bpm-cloud/examples/cloud-tasklist/node_modules/karma-phantomjs-launcher/node_modules/phantomjs-prebuilt/lib/phantom/bin/phantomjs
npm ERR! peerinvalid The package grunt does not satisfy its siblings' peerDependencies requirements!
npm ERR! peerinvalid Peer [email protected] wants grunt@>=0.4.2
npm ERR! peerinvalid Peer [email protected] wants grunt@~0.4.1
npm ERR! peerinvalid Peer [email protected] wants grunt@>= 0.4.5
npm ERR! peerinvalid Peer [email protected] wants grunt@>= 0.4.5
npm ERR! peerinvalid Peer [email protected] wants grunt@>=0.4.0
npm ERR! peerinvalid Peer [email protected] wants grunt@>=0.4.1
npm ERR! peerinvalid Peer [email protected] wants grunt@>=0.4.0
npm ERR! peerinvalid Peer [email protected] wants grunt@>=0.4.5
npm ERR! peerinvalid Peer [email protected] wants grunt@~0.4.0
npm ERR! peerinvalid Peer [email protected] wants grunt@>=0.4.0
npm ERR! System Linux 3.13.0-40-generic
npm ERR! command "/home/travis/.nvm/v0.10.36/bin/node" "/home/travis/.nvm/v0.10.36/bin/npm" "install"
npm ERR! cwd /home/travis/build/holisticon/camunda-bpm-cloud/examples/cloud-tasklist
npm ERR! node -v v0.10.36
npm ERR! npm -v 1.4.28
npm ERR! code EPEERINVALID
npm ERR! 
npm ERR! Additional logging details can be found in:
npm ERR!     /home/travis/build/holisticon/camunda-bpm-cloud/examples/cloud-tasklist/npm-debug.log
npm ERR! not ok code 0

Seems to be related to an outdated npm/grunt version, see drewzboto/grunt-connect-proxy#139

remove "docs"

additional docs in the gh-pages branch add an extra level of complexity that we can as well deal with later. For now, using README.md files is enough.

support "local" configuration to run services outside docker-compose

The idea is, that during development, we have to run the infrastructure components via docker-compose

these are

  • mysql
  • rabbitmq
  • discovery
  • configserver
  • edgeserver

But we can decide via active-profile switch, if we want to run the process-engines and the workload services directly from the console/IDE so we do not have to rebuild and restart the docker containers anymore.

Motivation: reduction of roundtrip time

For this to work we need to:

  • provide bootstrap-local.yml for all components in question where we define a localhost configserver
  • provide "*-local.yml" configurations for all components that use "localhost" references instead of docker-network internal names.

Challenges: This should work without completely copying the yaml files, it should be enough to just provide a delta in the -local files, preferably just the different hostnames.

Note: to make this work on machines where docker-host is on a vm, we need to use ${DOCKER_IP:localhost} instead of localhost so when a docker-ip is present, it is used instead of the localhost.

events are not processed by query service

though events are received, they cannot be processed ...

2017-06-19 21:25:55.071  INFO 78567 --- [cTaskExecutor-1] .c.w.q.s.WorkloadQueryServiceApplication : receiving event: (Body:'[B@1548971e(byte[551])' MessageProperties [headers={axon-message-id=8120845e-4533-4b19-8158-a889d281d918, axon-message-aggregate-seq=0, axon-metadata-correlationId=2bc64c7f-d358-4aa8-8e75-4c5fc42a08db, axon-message-aggregate-type=TaskAggregate, axon-message-revision=null, axon-message-timestamp=2017-06-19T19:25:55.066Z, axon-message-type=org.camunda.bpm.extension.cloud.workload.event.TaskCreatedEvent, axon-metadata-traceId=2bc64c7f-d358-4aa8-8e75-4c5fc42a08db, axon-message-aggregate-id=simpleprocess-1d3a9a00-5525-11e7-a954-acde48001122}, timestamp=null, messageId=null, userId=null, receivedUserId=null, appId=null, clusterId=null, type=null, correlationId=null, correlationIdString=null, replyTo=null, contentType=null, contentEncoding=null, contentLength=0, deliveryMode=null, receivedDeliveryMode=PERSISTENT, expiration=null, priority=null, redelivered=false, receivedExchange=camunda-task-event-exchange, receivedRoutingKey=org.camunda.bpm.extension.cloud.workload.event, receivedDelay=null, deliveryTag=32, messageCount=0, consumerTag=amq.ctag-jF3lQoTeovJm05FRo28lxw, consumerQueue=camunda-task-event])#Cached Rabbit Channel: AMQChannel(amqp://[email protected]:5672/,1), conn: Proxy@214334c8 Shared Rabbit Connection: SimpleConnection@5aa25f98 [delegate=amqp://[email protected]:5672/, localPort= 57935]
2017-06-19 21:26:35.072  WARN 78567 --- [cTaskExecutor-1] o.s.a.s.c.Jackson2JsonMessageConverter   : Could not convert incoming message with content-type [null]

remove mysql - switch to h2-file based

less overhead, use file based h2.

note: SERVER_MODE for multi connection!

// Application 1:
DriverManager.getConnection("jdbc:h2:/data/test;AUTO_SERVER=TRUE");

// Application 2:
DriverManager.getConnection("jdbc:h2:/data/test;AUTO_SERVER=TRUE");

use travis ci

activate travis ci for the project.

Done:

  • create travis.yml
  • add badge to README.md

Fails:

  • npm build of tasklict-cloud
Done. Phantomjs binary available at /home/travis/build/holisticon/camunda-bpm-cloud/examples/cloud-tasklist/node_modules/karma-phantomjs-launcher/node_modules/phantomjs-prebuilt/lib/phantom/bin/phantomjs
npm ERR! peerinvalid The package grunt does not satisfy its siblings' peerDependencies requirements!
npm ERR! peerinvalid Peer [email protected] wants grunt@>=0.4.2
npm ERR! peerinvalid Peer [email protected] wants grunt@~0.4.1
npm ERR! peerinvalid Peer [email protected] wants grunt@>= 0.4.5
npm ERR! peerinvalid Peer [email protected] wants grunt@>= 0.4.5
npm ERR! peerinvalid Peer [email protected] wants grunt@>=0.4.0
npm ERR! peerinvalid Peer [email protected] wants grunt@>=0.4.1
npm ERR! peerinvalid Peer [email protected] wants grunt@>=0.4.0
npm ERR! peerinvalid Peer [email protected] wants grunt@>=0.4.5
npm ERR! peerinvalid Peer [email protected] wants grunt@~0.4.0
npm ERR! peerinvalid Peer [email protected] wants grunt@>=0.4.0
npm ERR! System Linux 3.13.0-40-generic
npm ERR! command "/home/travis/.nvm/v0.10.36/bin/node" "/home/travis/.nvm/v0.10.36/bin/npm" "install"
npm ERR! cwd /home/travis/build/holisticon/camunda-bpm-cloud/examples/cloud-tasklist
npm ERR! node -v v0.10.36
npm ERR! npm -v 1.4.28
npm ERR! code EPEERINVALID
npm ERR! 
npm ERR! Additional logging details can be found in:
npm ERR!     /home/travis/build/holisticon/camunda-bpm-cloud/examples/cloud-tasklist/npm-debug.log
npm ERR! not ok code 0

fix assert-j usage

I do not know why, but currently, using Assertions.assertThat does not work. Has to be fixed, see camunda-bpm-cloud-test

switch to camunda spring boot 2.1.0

with 2.1 we will have:

  • camunda 7.6
  • spring boot 1.5.3

and, most important: a prefixed uuidGenerator ... so we can transport the app Name with the taskId.

Finish docker configuration

Currently, every component is packaged into a separate docker container. Docker compose is used to drive the containers up. Unfortunately, individual services are not able to see others, due to some networking issues.

Fix the network issues and finish docker compose configuration.

clean up service names (routes, docker, ...)

Currently we use lower case only (eventservice), camelCase (eventService) and hyphen (event-service) in a crude mixture ... we should use simple unique names for all properties so we do not get confused anymore.

Idea: lowercase only (eventservice)

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.