Kaoto

The Low Code and No Code Apache Camel Editor

María Arias de Reyna Domínguez

@delawen@floss.social - @delawen

Senior Software Engineer

@kaoto@fosstodon.org - @KaotoIO

Who am I?
  • 19🐱🐱 Crazy Cat Lady
  • Free and Open Source Advocate
  • 2008 Software Engineer
  • GeoSpatial world
    • 2009 Dijkstra A* Witch
    • 2012 Metadata Wrangler
    • 2013 OSGeo Charter Member
      • 2017-2019 OSGeo President
  • 2016 Women in Tech
  • Senior Software Engineer at Red Hat
    • 2019 Integration Druid
      • 2019 Apache Camel contributor
      • 2020 Apache Software Foundation
      • 2021 Lead Kaoto Development
  • Java Champion

Kaoto: the low code and no code editor for Apache Camel

Something: the blah and bleh for Apache Camel

                //Start with a timer that executes the operation every 10 seconds
                from("timer:java?period=10000")
                      //Access the CSV file which can be on an api or storage device
                      .to("{{source.csv}}")
                      //unmarshal and split the workflow per row 
                      .unmarshal().split(body()).streaming()
                      //process each row
                      //the process is defined in a separated file
                      .process(processCsv)
                      //push the results to the following API
                      .to("https://nominatim.openstreetmap.org/reverse")
                      //the returned XML is also processed
                      .unmarshal().jacksonxml()
                      //again, the processor is defined in a separated file
                      .process(processXML)
                      //Prepare an SQL query based on the result of the process
                      .setBody().simple("SELECT info FROM table WHERE id like '${exchangeProperty.pollutant}'")
                      //send the SQL query to the database
                      .to("jdbc:postgresBean?readSize=1")
                      //collect the result and process it
                      .process(processDB)
                      //reunite the parallel streams that started on the csv processing
                      .aggregate(constant(true), aggregationStrategy)
                      .completionSize(5)
                      //given the list of outputs per row in csv, process it
                      .process(buildGeoJSON)
                      //store the result in another database
                      .to("mongodb:mongoBean?database=example&collection=mySpatialObjects&operation=insert")
                 
               

Kaoto: the low code and no code editor for Apache Camel

Something: the low code and no code editor for Apache Camel

Low code and No code Editor

No Code

Might have no idea what Apache Camel is

Focus on User Experience

  • Visual Design
    • Diagram flows
    • Catalog of Steps
    • Visual Data Mapping
  • Cover Common Use Cases
    • Restricted Solution Space

Low Code

Might be climbing the learning curve of Apache Camel

Focus on adding more features with no fuss

  • Simple Code Editor
  • Code Validation
  • Extended Solution Space, but not complete

Full Code

You are on your own, we provide just a helper.

  • Complex Debug with an IDE
    • Step by step inside libraries
    • Breakpoints
  • Mix with source code in other languages
  • Custom Connectors

Kaoto: the low code and no code editor for Apache Camel

Kaoto

Flow Editor

  • Multi-DSL
  • No need to know the DSL
  • No need to even know what framework you are using

Everything Everywhere All At Once

  • Standalone (jar or native): your local
  • As a Service: integrated in your cloud
  • VSCode Extension - Now with full IDE companion!

Current implementations

  • Camel Route
  • Camel REST
  • Kamelet
  • Kamelet Binding
Questions?