Project Flogo is an open source ecosystem of opinionated event-driven capabilities to simplify building efficient & modern serverless functions, microservices & edge apps.

Overview

Project Flogo is an Open Source ecosystem for event-driven apps

Ecosystem | Core | Flows | Streams | Flogo Rules | Go Developers | When to use Flogo | Contributing | License


Project Flogo is an ultra-light, Go-based open source ecosystem for building event-driven apps. Event-driven, you say? Yup, the notion of triggers and actions are leveraged to process incoming events. An action, a common interface, exposes key capabilities such as application integration, stream processing, etc.


  • App = Trigger(s) + Actions[&Activities]
  • Triggers
    • receive data from external sources.
    • are managed by a configurable threading model
    • have a common interface enabling anyone to build a Flogo trigger.
  • Handlers
    • dispatch events to actions
  • Actions
    • process events in a manner suitable with the implementation
    • have a common interface enabling opinionated event processing capabilities

Project Flogo Ecosystem

All capabilities within the Flogo Ecosystem have a few things in common, they all process events (in a manner suitable for the specific purpose) and they all implement the action interface exposed by Flogo Core.

Some of the key highlights include:

🎈 Ultra-light 20x-50x lighter than Java or Node.js
⚡️ Event-driven Powerful event-driven programming model based on triggers and actions
⚙️ Common core a single, common core enables reuse and flexibility across all eventing constructs
✏️ Golang based Written entirely in Golang for efficiency
💪 Deployment flexibility Deploy as ultra-lightweight serverless functions, containers or static binaries on IoT edge devices
🧠 Native machine learning Purpose built activity for TensorFlow SavedModel inferencing
😍 100% Open Source for your dev & hacking pleasure

  • Integration Flows Application Integration process engine with conditional branching and a visual development environment
  • Stream Processing a simple pipeline-based stream processing action with event joining capabilities across multiple triggers & aggregation over time windows
  • Contextual Decisioning Declarative Rules for Real-time Contextual Decisions
  • Microgateway Microgateway pattern for conditional, content-based routing, JWT validation, rate limiting, circuit breaking and other common patterns

The concept is simple, an event is just that, an event, how it’s processed is what differs. Flogo Core eases the burden by enabling a common set of functionality, such as:

  • threading
  • logging
  • data type coercion
  • data mapping
  • tracing & monitoring hooks

While also exposing a common set of contributions via activities and triggers. For example, all available triggers can be leveraged to dispatch events to any action implementation, that is, flows for application integration, streams for stream processing, rules for contextual rule processing, etc.

Flogo Core

Flogo Core is an event-driven app framework used to develop apps for the cloud & IoT edge. It can also be thought of as a lightweight app kernel used by open source & commercial solutions.

Flogo Core provides the following key benefits:

Action chaining enables communication between one or more capabilities in a single, sub 10MB binary!
🏗 Common contribution model build activities and triggers that can be leveraged by all capabilities
🔨 Extensible easily extend the capabilities available by building your own action using the common interfaces

Flogo Core Contribution Model

Flogo Core exposes three principal contribution interfaces that enable developers to build common capabilities and functionality. These contribution interfaces include:

  • Trigger Interface a common interface for building event-consumers that dispatch events to one or more actions. The Kafka subscriber is an example of a trigger.
  • Activity Interface a common interface for exposing common application logic in a reusable manner. Think of this as a function, such as write to database, publish to Kafka, etc that can be used by all Flogo apps.
  • Action Interface a common interface for processing events. Actions contain the specific capability logic, such as integration, stream processing, rule processing, etc. Actions have a great deal of flexibility in how they’re developed and how developers leverage actions within their overall applications. For example, flows and streams expose JSON-based DSLs & Go APIs for maximum developer flexibility.

Repos

Project Flogo consists of the following sub-projects available as separate repos:

Flogo Flows

Flogo Flows provides application integration capabilities and includes the following key highlights.

🌈 Painless development Visual modeler with step-back debugging capabilities & elegant DSL
⚙️ Ultra-light process engine for conditional flow control

Getting Started

We've made getting started with Flogo Flows as easy as possible. The current set of tooling is designed for:

  • Serverless function developers
  • Cloud-native microservices developers
  • IoT Solutions developers
  • Go Developers

Zero-code Developers

If your background is in or you prefer to develop your apps using zero-coding environments, then read on, because we’ve got something special for you.

Flows Web UI is available via Docker Hub or Flogo.io. The Docker image contains the Flows Web UI along with all required components to begin developing, testing and building deployable artifacts right from your web browser.

To report any issues with the Issue tracker on this project.

Flogo Web In Action

Flogo Streams

Edge devices have the potential for producing millions or even billions of events at rapid intervals, often times the events on their own are meaningless, hence the need to provide basic streaming operations against the slew of events.

A native streaming action as part of the Project Flogo Ecosystem accomplishes the following primary objectives:

  • Enables apps to implement basic streaming constructs in a simple pipeline fashion
  • Provides non-persistent state for streaming operations
    • Streams are persisted in memory until the end of the pipeline
  • Serves as a pre-process pipeline for raw data to perform basic mathematical and logical operations. Ideal for feeding ML models

Some of the key highlights include:

😀 Simple pipeline construct enables a clean, easy way of dealing with streams of data
Stream aggregation across streams using time or event tumbling & sliding windows
🙌 Join streams from multiple event sources
🌪 Filter out the noise with stream filtering capabilities

Getting Started

We’ve made building powerful streaming pipelines as easy as possible. Develop your pipelines using:

  • A simple, clean JSON-based DSL
  • Golang API

See the sample below of an aggregation pipeline (for brevity, the triggers and metadata of the resource has been omitted). Also don’t forget to check out the examples in the project-flogo/stream repo.

  "stages": [
    {
      "ref": "github.com/project-flogo/stream/activity/aggregate",
      "settings": {
        "function": "sum",
        "windowType": "timeTumbling",
        "windowSize": "5000"
      },
      "input": {
        "value": "=$.input"
      }
    },
    {
      "ref": "github.com/project-flogo/contrib/activity/log",
      "input": {
        "message": "=$.result"
      }
    }
  ]

Flogo Rules

Processing Events in real-time to determine next best action is an important function of Event driven applications. With the vast amount of events that are generated from different sources, making sense of the information in a given context can be immensely valuable.

Flogo Rules simplifies the complexity involved with real-time contextual decisions.

Flogo Rules supports

  • Declarative Rules to define conditional logic and trigger result rules
  • Joins/Correlations across multiple Event sources
  • Ability to define Rule Priorities
  • Timer Events; Configurable TTL (time to live) -1 - no expiry, 0 - event expiry set to end of run to completion cycle.
  • Forward chaining for Inferencing

The CLI

The CLI is used to build all applications that leverage the JSON-based DSL. If you’re using the Go API to build your apps, feel free to just go build your stuff without the flogo CLI.

Getting started with the CLI couldn't be any easier (refer to Flogo CLI repo for detail instructions and dependencies):

  • Install the CLI
go get -u github.com/project-flogo/cli/...
  • Create & build your app

  • flogo the core CLI for creating and building your applications
  • flogogen a scaffolding tool to begin building your Flogo contributions (activities, triggers & actions)

If you're interested in building your own contribution(s), refer to the Flogo Documentation or join us on the project-flogo/Lobby Gitter Channel.

Golang API

Are you the kind of person who would rather code, but would love to leverage the capabilities of the Flogo Ecosystem? Makes total sense, we just ❤️ to code also! We’ve exposed a number of Go APIs for leveraging the various action types, activities and triggers. Getting started is pretty easy, just follow the steps below.

go get -u github.com/project-flogo/core/...
  • Optionally, if you're using any of the Flogo contributions, don't forget to get that repo, as well
go get -u github.com/project-flogo/contrib/...
  • Open up your favorite IDE or txt editor and start coding!
package main

import (
	"context"
	"fmt"

	"github.com/project-flogo/contrib/activity/log"
	"github.com/project-flogo/contrib/trigger/rest"
	"github.com/project-flogo/core/activity"
	"github.com/project-flogo/core/api"
	"github.com/project-flogo/core/data/coerce"
	"github.com/project-flogo/core/engine"
)

func main() {

	app := myApp()

	e, err := api.NewEngine(app)

	if err != nil {
		fmt.Println("Error:", err)
		return
	}

	engine.RunEngine(e)
}

func myApp() *api.App {
	app := api.NewApp()

	trg := app.NewTrigger(&rest.Trigger{}, &rest.Settings{Port: 8080})
	h, _ := trg.NewHandler(&rest.HandlerSettings{Method: "GET", Path: "/blah/:num"})
	h.NewAction(RunActivities)

	//store in map to avoid activity instance recreation
	logAct, _ := api.NewActivity(&log.Activity{})
	activities = map[string]activity.Activity{"log": logAct}

	return app
}

var activities map[string]activity.Activity

func RunActivities(ctx context.Context, inputs map[string]interface{}) (map[string]interface{}, error) {

	trgOut := &rest.Output{}
	trgOut.FromMap(inputs)

	msg, _ := coerce.ToString(trgOut.PathParams)
	_, err := api.EvalActivity(activities["log"], &log.Input{Message: msg})
	if err != nil {
		return nil, err
	}

	response := make(map[string]interface{})

	response["id"] = "123"
	response["amount"] = "1"
	response["balance"] = "500"
	response["currency"] = "USD"

	reply := &rest.Reply{Code: 200, Data: response}
	return reply.ToMap(), nil
}
  • Before we can build the app, let's generate the metadata for the triggers
go generate
  • Build the app
go build

When to use Flogo

You’ll look to leverage Flogo if you’re a dev & sick of building all the messy stuff that comes along with coding production apps. Such as connectivity to event-driven messaging platforms, datastores, SaaS apps, etc & want to deploy to a wide range of targets, such as

  • serverless compute
  • IoT edge devices
  • containers

The broader Flogo ecosystem exposes an opinionated perspective on building event-driven apps. If you’re looking to process events in any of the following ways, then read on because the Project Flogo Ecosystem is for you!

  • long running processes with flow-control support geared toward application integration
  • consuming and manipulating large streams of events via a pipeline to act as a pre-processor for time-series data to serve things like machine learning models or to derive simple conclustions via data aggregation
  • contextual, declarative rules for real-time decisioning

In short...

Flogo is... Flogo is not...
an ecosystem of opinionated, event-driven capabilities a front-end web app or analytics framework
a Go lib to increase dev productivity an IoT platform

Contributing

Want to contribute to Project Flogo? We've made it easy, all you need to do is fork the repository you intend to contribute to, make your changes and create a Pull Request! Once the pull request has been created, you'll be prompted to sign the CLA (Contributor License Agreement) online.

Not sure where to start? No problem, here are a few suggestions:

  • flogo-contrib: This repository contains all of the standard contributions, such as activities, triggers, etc. Perhaps there is something missing? Create a new activity or trigger or fix a bug in an existing activity or trigger. Don't forget to check all of the other repositores in the project-flogo org on GitHub, as some contributions are large enough to have their own repo.
  • Browse all of the [Project Flogo repositories] and look for issues tagged kind/help-wanted or good first issue

If you have any questions, feel free to post an issue and tag it as a question, email [email protected] or chat with the team and community:

  • The project-flogo/Lobby Gitter channel should be used for general discussions, start here for all things Flogo!
  • The project-flogo/developers Gitter channel should be used for developer/contributor focused conversations.

For additional details, refer to the Contribution Guidelines.

License

Project Flogo is licensed under a BSD-style license. Refer to LICENSE for license text.

Usage Guidelines

We’re excited that you’re using Project Flogo to power your project(s). Please adhere to the usage guidelines when referencing the use of Project Flogo within your project(s) and don't forget to let others know you're using Project Flogo by proudly displaying one of the following badges or the Flynn logo, found in the branding folder of this project.

Comments
  • Get Data from a String JSON

    Get Data from a String JSON

    What is your question? Trying to get data from AWS Lambda Trigger. What ever JSON I pass to API or SQS is coming as string as given below. I want to extract the data from that JSON - in this case zipcode value 07604.

    "body": "{\"zipcode\":\"07604\"}",

    I tried doing below. Pass input from trigger to flow as

    "input": {
                  "CityCode_Input": "=$.event.data",
    

    CityCode_Input is defined as object.

    Then I tried to get the data as $flow.CityCode_Input.zipcode. Re;avant code snippet below.

    {
                "id": "rest_3",
                "name": "AccuWeather_GET_RESTInvoke",
                "description": "Invokes a REST Service",
                "activity": {
                  "ref": "#rest",
                  "input": {
                    "pathParams": {
                      "mapping": {
                        "zipC": "=$flow.CityCode_Input.zipcode"
                      }
                    },
    

    Please tell us about your environment (Operating system, docker version, browser & web ui version, etc): AWS Lambda

    Flogo version (CLI & contrib/lib. If unknown, leave empty or state unknown): 0.X.X Latest Version

    opened by akpuvvada 17
  • web ui not opening

    web ui not opening

    Hi I obtained the flogo docker image The terminal/console window indicating that the image is up and the webui is running. It asked me to open http://localhost:3303.

    But I get a site cannot be reached error

    Any idea what could be wrong?

    Thanks

    kind/help-wanted 
    opened by neethuabu 16
  • Missing Body content on Post when exporting app from UI

    Missing Body content on Post when exporting app from UI

    Hi there, I have an app that I created in the UI. When I use the build function within the UI and download it, it works fine. When I try to build the app from the cli it is unable to map the content to the flow parameter I have defined and get the following error:

    AddAttr - name: {Error.type}, type: string, value:mapper

    2018-01-20 20:10:18.603 DEBUG [engine] - AddAttr - name: {Error.message}, type: string, value:failed to resolve flow attr: 'bodyofcall', not found in flow

    2018-01-20 20:10:18.603 DEBUG [engine] - Done Executing A.instance [48ecf6a223e73ae472e8ffceebe1d176] - Status: 700

    2018-01-20 20:10:18.603 DEBUG [engine] - worker-3: Completed Request app json below.

    { "name": "LogPostData", "type": "flogo:app", "version": "0.0.1", "description": "", "triggers": [ { "name": "Receive HTTP Message", "ref": "github.com/TIBCOSoftware/flogo-contrib/trigger/rest", "description": "Simple REST Trigger", "settings": { "port": "9886" }, "id": "receive_http_message", "handlers": [] }, { "name": "Receive HTTP Message (1)", "ref": "github.com/TIBCOSoftware/flogo-contrib/trigger/rest", "description": "Simple REST Trigger", "settings": { "port": "9876" }, "id": "receive_http_message_1", "handlers": [ { "actionMappings": { "input": [ { "mapTo": "bodyofcall", "type": 1, "value": "content" } ], "output": [] }, "settings": { "method": "POST", "path": "/sendsyslog", "autoIdReply": null, "useReplyHandler": "true" }, "actionId": "testpost" } ] } ], "actions": [ { "data": { "flow": { "name": "testpost", "type": 1, "attributes": [], "rootTask": { "id": "root", "type": 1, "tasks": [ { "id": "log_2", "name": "Log Message", "description": "Simple Log Activity", "type": 1, "activityType": "github-com-tibco-software-flogo-contrib-activity-log", "activityRef": "github.com/TIBCOSoftware/flogo-contrib/activity/log", "attributes": [ { "name": "message", "value": "", "required": false, "type": "string" }, { "name": "flowInfo", "value": "false", "required": false, "type": "boolean" }, { "name": "addToFlow", "value": "false", "required": false, "type": "boolean" } ], "inputMappings": [ { "type": 1, "value": "$flow.bodyofcall", "mapTo": "message" } ] }, { "id": "SendSyslog_3", "name": "SendSyslog", "description": "Send a syslog message", "type": 1, "activityType": "github-com-lpautet-flogo-activities-send-syslog", "activityRef": "github.com/lpautet/flogo-activities/SendSyslog", "attributes": [ { "name": "protocol", "value": "udp", "required": true, "type": "string" }, { "name": "host", "value": "lmi611test.howiedemo.com", "required": true, "type": "string" }, { "name": "port", "value": "514", "required": false, "type": "integer" }, { "name": "facility", "value": "16", "required": true, "type": "integer" }, { "name": "severity", "value": "6", "required": true, "type": "integer" }, { "name": "hostname", "value": "flogohost", "required": false, "type": "string" }, { "name": "appName", "value": "flogoapp", "required": false, "type": "string" }, { "name": "msgId", "value": null, "required": false, "type": "string" }, { "name": "flowInfo", "value": "true", "required": false, "type": "boolean" }, { "name": "message", "value": null, "required": true, "type": "string" } ], "inputMappings": [ { "type": 1, "value": "$flow.bodyofcall", "mapTo": "message" } ] }, { "id": "actreply_4", "name": "Reply To Trigger", "description": "Simple Reply Activity", "type": 1, "activityType": "github-com-tibco-software-flogo-contrib-activity-actreply", "activityRef": "github.com/TIBCOSoftware/flogo-contrib/activity/actreply", "attributes": [ { "name": "mappings", "value": [], "required": true, "type": "array" } ] } ], "links": [ { "id": 1, "from": "log_2", "to": "SendSyslog_3", "type": 0 }, { "id": 2, "from": "SendSyslog_3", "to": "actreply_4", "type": 0 } ], "attributes": [] } } }, "id": "testpost", "metadata": { "input": [ { "name": "bodyofcall", "type": "params" } ], "output": [] }, "ref": "github.com/TIBCOSoftware/flogo-contrib/action/flow" } ] }

    opened by rothsteh 13
  • Issue running the go test command

    Issue running the go test command

    I'm submitting a ... (check one with "x")

    [] bug report => search github for a similar issue or PR before submitting
    [] feature request
    [x] support request
    [] general question
    

    Current behavior (how does the issue manifest): I'm building an activity, but when I run the go test command the below error appears:

    adavilag-MBP13:sendMail adavilag$ go test github.com/TIBCOSoftware/flogo-contrib/action/flow/definition ../../src/github.com/TIBCOSoftware/flogo-contrib/action/flow/definition/definition_ser.go:82:13: cannot use value.Name (type func() string) as type string in map index ../../src/github.com/TIBCOSoftware/flogo-contrib/action/flow/definition/definition_ser.go:145:19: cannot use value.Name (type func() string) as type string in map index ../../src/github.com/TIBCOSoftware/flogo-contrib/action/flow/definition/definition_ser.go:174:53: cannot use attr.Type (type func() data.Type) as type data.Type in argument to data.CoerceToValue ../../src/github.com/TIBCOSoftware/flogo-contrib/action/flow/definition/definition_ser.go:179:50: unknown field 'Name' in struct literal of type data.Attribute (but does have data.name) ../../src/github.com/TIBCOSoftware/flogo-contrib/action/flow/definition/definition_ser.go:179:62: unknown field 'Type' in struct literal of type data.Attribute ../../src/github.com/TIBCOSoftware/flogo-contrib/action/flow/definition/definition_ser.go:179:80: unknown field 'Value' in struct literal of type data.Attribute (but does have data.value) ../../src/github.com/TIBCOSoftware/flogo-contrib/action/flow/definition/definition_ser.go:200:53: cannot use attr.Type (type func() data.Type) as type data.Type in argument to data.CoerceToValue ../../src/github.com/TIBCOSoftware/flogo-contrib/action/flow/definition/definition_ser.go:205:51: unknown field 'Name' in struct literal of type data.Attribute (but does have data.name) ../../src/github.com/TIBCOSoftware/flogo-contrib/action/flow/definition/definition_ser.go:205:63: unknown field 'Type' in struct literal of type data.Attribute ../../src/github.com/TIBCOSoftware/flogo-contrib/action/flow/definition/definition_ser.go:205:81: unknown field 'Value' in struct literal of type data.Attribute (but does have data.value) ../../src/github.com/TIBCOSoftware/flogo-contrib/action/flow/definition/definition_ser.go:205:81: too many errors FAIL _/Users/adavilag/go/bin/sendMail [build failed]

    Expected behavior:

    Minimal steps to reproduce the problem (not required if feature enhancement):

    What is the motivation / use case for changing the behavior?

    Please tell us about your environment (Operating system, docker version, browser & web ui version, etc):

    Flogo version (CLI & contrib/lib. If unknown, leave empty or state unknown): 0.X.X

    Additional information you deem important (e.g. issue happens only occasionally):

    opened by kawatoto 12
  • Support for $INPUT[

    Support for $INPUT["xxx"] in flogo

    I'm submitting a ... (check one with "x")

    [] bug report => search github for a similar issue or PR before submitting
    [x] feature request
    [] support request
    [] general question
    

    Current behavior (how does the issue manifest): Currently, flogo mapping only supports “mapTo”: “xxx”, requesting to support “mapTo”:$INPUT["xxx"]. Fails to display mapping values in UI.

    Expected behavior: Interpret “mapTo”:$INPUT["xxx"] and disaply mapping values in UI accordingly.

    Minimal steps to reproduce the problem (not required if feature enhancement):

    What is the motivation / use case for changing the behavior?

    Please tell us about your environment (Operating system, docker version, browser & web ui version, etc):

    Flogo version (CLI & contrib/lib. If unknown, leave empty or state unknown): 0.X.X

    Additional information you deem important (e.g. issue happens only occasionally):

    opened by KanchanPaul 11
  • Flogo.json created by Flogo create command from flogo-cli is not being imported successfully in Flogo UI.

    Flogo.json created by Flogo create command from flogo-cli is not being imported successfully in Flogo UI.

    The default flogo.json created by the create command from cli is not getting imported. Command: flogo create myapp

    Additional Information: The generated flogo.json does not have name tag in the "actions" and thus not getting imported. If we add the name tag to the flogo.json in the "actions", it is getting imported successfully.This might be helpful for fixing the issue.

    opened by ykalidin 10
  • Installing new activities on webui latest build (v0.5.5) fails

    Installing new activities on webui latest build (v0.5.5) fails

    Current behavior (how does the issue manifest): Installing a new activity fails on the newest webui build. Pulled tag as latest. Expected behavior: v0.5.4 installs activities fine. v0.5.5 (latest) should be the same Minimal steps to reproduce the problem (not required if feature enhancement): Try installing: github.com/jvanderl/flogo-components/incubator/activity/mqtt on v0.5.4 and on the latest build. The latest build will fail.

    LOGS: 2018-08-02T21:23:39.376Z - info: [log] Install activity: 'github.com/jvanderl/flogo-components/incubator/activity/mqtt' 2018-08-02T21:23:39.378Z - debug: Backing up 'src' to 'backupsrc'. 2018-08-02T21:23:42.305Z - debug: Started installing 'github.com/jvanderl/flogo-components/incubator/activity/mqtt' to the engine. [log] Install from GitHub [ 'github.com/jvanderl/flogo-components/incubator/activity/mqtt' ] 2018-08-02T21:23:42.310Z - info: Exec command: flogo install github.com/jvanderl/flogo-components/incubator/activity/mqtt in local/engines/flogo-web 2018-08-02T21:23:42.321Z - info: run command: flogo install github.com/jvanderl/flogo-components/incubator/activity/mqtt 2018-08-02T21:23:47.417Z - warn: command exited with code 1: flogo install github.com/jvanderl/flogo-components/incubator/activity/mqtt FATAL: command "install" failed: Error checking project dependency status 'exit status 1'

    2018-08-02T21:23:47.418Z - error: [error] Encountered error while installing the 'github.com/jvanderl/flogo-components/incubator/activity/mqtt' to the engine: 2018-08-02T21:23:47.418Z - error: FATAL: command "install" failed: Error checking project dependency status 'exit status 1'

    2018-08-02T21:23:47.419Z - debug: Installation of 'github.com/jvanderl/flogo-components/incubator/activity/mqtt' failed in 'installing-to' step. 2018-08-02T21:23:47.419Z - debug: Starting engine recovery. 2018-08-02T21:23:47.420Z - debug: [Log] Recovering engine to previous working state.. 2018-08-02T21:23:50.518Z - debug: Resource cleaning: removing the backup folder. Please tell us about your environment (Operating system, docker version, browser & web ui version, etc): Docker version: 18.06 WebUI: 0.5.5 and 0.5.4 Browser: Chrome Flogo version (CLI & contrib/lib. If unknown, leave empty or state unknown): 0.X.X

    Additional information you deem important (e.g. issue happens only occasionally):

    kind/bug 
    opened by crmadrig 9
  • Why should I invest in a technology when one of the most crucial part (the WEB UI) is not open source?

    Why should I invest in a technology when one of the most crucial part (the WEB UI) is not open source?

    I'm submitting a ... (check one with "x")

    [] bug report => search github for a similar issue or PR before submitting
    [] feature request
    [] support request
    [X] general question
    

    Current behavior (how does the issue manifest):

    Expected behavior: Open Source the WEB UI to fulfill your marketing statements (fully open source & visual creation)

    Minimal steps to reproduce the problem (not required if feature enhancement):

    What is the motivation / use case for changing the behavior? Otherwise the project is no really a open source project.

    Please tell us about your environment (Operating system, docker version, browser & web ui version, etc):

    Flogo version (CLI & contrib/lib. If unknown, leave empty or state unknown): 0.X.X

    Additional information you deem important (e.g. issue happens only occasionally):

    opened by volkrass 9
  • Configure Proxy in Flogo

    Configure Proxy in Flogo

    When I try to Build Flogo Apps from UI, I am getting failed message and when I check logs for the Flogo container, I am seeing error indicating that Flogo is not able to connect to git. I have Proxy configured on Docker settings. Any idea how to configure Proxy on Flogo?

    opened by akpuvvada 8
  • Restructure Flogo repos

    Restructure Flogo repos

    Currently all of the Flogo repos are under the TIBCOSoftware organization. To better organize everything Flogo, we should reorganize the repos and place them within the project-flogo organization on GitHub.

    Note that the repo reorg will also be part of a larger Flogo release, as we continue to move toward a 1.0.0 release!

    The following list of items need to be considered when we're reorganizing the repo structure.

    • Due to the nature of Go import paths being that of the repo, we need to maintain backward compatibility, as such, the TIBCOSoftware/flogo-* repos must be maintained.
    • project-flogo/contrib should be used only for minimal, basic Flogo contributions (activities, triggers and expression functions). Larger activities should be broken out into dedicated repos to enable a better versioning scheme.
    • Flows, Streams, Rules & Microgateway actions will all be maintained via a dedicated repo, not under contrib. Enabling the action to be better versioned independently.
    • flogo-lib to be renamed to core.
    kind/enhancement 
    opened by mellistibco 8
  • Create Custom Activity

    Create Custom Activity

    Hi,

    While creating a custom activity as described in Building your first activity, I ran the below command flogogen activity HelloWorld

    The "activity_test.go" thus created has below import statement: "github.com/TIBCOSoftware/flogo-lib/flow/test" which is not present in the master branch.

    Because of this go test fails.

    Can anyone please tell what changes has to be done in the activity_test.go file ?

    opened by Ganitagya 8
  • https://flogo.io doesn't work

    https://flogo.io doesn't work

    Current behavior (how does the issue manifest):

    https://flogo.io doesn't work. Perhaps a certificate problem on DNS.

    Expected behavior:

    https://flogo.io should work like https://www.flogo.io.

    opened by Ensam57 0
  • Join mechanism

    Join mechanism

    What is your question? I have tried flogo and found the split path mechanism very useful. I am talking about multiple output from a node which splits the flow into parallel paths. In this case all the paths are executed independently.

    I wanted to know if there is any way to do the opposite of split, i.e, join. Basically I want to join multiple independent paths to one path before proceeding. Lets say the leaf node of two parallel paths are Node 3 and Node 4. Now I want to join the output from Node 3 and Node 4 to another Node 5. Let's assume that Node 5 is joined to another Node 6. I am expecting that Node 5 and then Node 6 will be only executed once both Node 3 and Node 4 are executed.

    Please tell us about your environment (Operating system, docker version, browser & web ui version, etc): macOS

    Flogo version (CLI & contrib/lib. If unknown, leave empty or state unknown): 0.X.X

    opened by nejbvj 1
  • Services are not starting

    Services are not starting

    What is your question?

    I have installed flogo using yarn install after downloading code from git. Server and client has started with yarn start server and yarn start client respectively , Created a sample flow , while executing the flow, received following error .

    "error: [16:58:13.251] connect ECONNREFUSED 127.0.0.1:9090 {"stack":"RequestError: connect ECONNREFUSED 127.0.0.1:9090\n at ClientRequest. (C:\nsn\IoT\EdgeComputing\flogo-web\node_modules\got\source\request-as-event-emitter.js:178:14)\n at Object.onceWrapper (events.js:291:20)\n at ClientRequest.emit (events.js:208:15)\n at ClientRequest.origin.emit (C:\nsn\IoT\EdgeComputing\flogo-web\node_modules\@szmarczak\http-timer\source\index.js:37:11)\n at Socket.socketErrorListener (_http_client.js:399:9)\n at Socket.emit (events.js:203:13)\n at emitErrorNT (internal/streams/destroy.js:91:8)\n at emitErrorAndCloseNT (internal/streams/destroy.js:59:3)\n at processTicksAndRejections (internal/process/task_queues.js:77:11)","name":"RequestError","code":"ECONNREFUSED","hostname":"localhost","method":"POST","path":"/v1/flows","protocol":"http:","url":"http://localhost:9090/v1/flows","gotOptions":{"path":"/v1/flows","protocol":"http:","hostname":"localhost","hash":"","search":"","pathname":"/v1/flows","href":"http://localhost:9090/v1/flows","port":9090,"retry":{"methods":{},"statusCodes":{},"errorCodes":{}},"headers":{"user-agent":"got/9.6.0 (https://github.com/sindresorhus/got)","accept":"application/json","accept-encoding":"gzip, deflate","content-type":"application/json","content-length":559},"hooks":{"beforeError":[],"init":[],"beforeRequest":[],"beforeRedirect":[],"beforeRetry":[],"afterResponse":[]},"decompress":true,"throwHttpErrors":true,"followRedirect":true,"stream":false,"form":false,"json":true,"cache":false,"useElectronNet":false,"baseUrl":"http://localhost:9090/v1/","body":"{"name":"Test12","description":"","metadata":{"input":[],"output":[]},"tasks":[{"id":"rest_2","name":"REST Invoke","description":"Invokes a REST Service","activity":{"ref":"github.com/project-flogo/contrib/activity/rest","settings":{"uri":"https://gorest.co.in/public/v1/posts"}}},{"id":"log_3","name":"Log","description":"Logs a message","activity":{"ref":"github.com/project-flogo/contrib/activity/log","input":{"message":"Data received from x ssystem $activity[rest_2].data","addDetails":false,"usePrint":false}}}],"links":[{"from":"rest_2","to":"log_3"}]}","method":"POST","forceRefresh":true}} "

    Please tell us about your environment (Operating system, docker version, browser & web ui version, etc): windows 10 Flogo version (CLI & contrib/lib. If unknown, leave empty or state unknown): 0.X.X Latest

    Could you please guide me how to handle and where did i miss.

    opened by prasadrao82 0
  • multiple users for a single flow

    multiple users for a single flow

    What is your question? Hi, Can I have a single flow used by multiple users where each user has his own credentials and data and not overlapped .. or from my app I can create multiple instance of the flow for multiple users where each user has his own flow? this is what I want to do I have two saas apps I need to develop a connector for transfer data from one to another and this connector will be activated by the user by entering their own credentials in a webform .. can I do this scenario with flogo? Please tell us about your environment (Operating system, docker version, browser & web ui version, etc): N/A Flogo version (CLI & contrib/lib. If unknown, leave empty or state unknown): 0.X.X N/A

    opened by Mars-2030 0
  • installation problem

    installation problem

    What is your question? I have tried to install web ui but it was failed. On re installation attempt it is showing docker run -it -p 3303:3303 flogo/flogo-docker eula-accept

    docker: Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post http://%2Fvar%2Frun%2Fdocker.sock/v1.40/containers/create: dial unix /var/run/docker.sock: connect: permission denied. See 'docker run --help'.

    Please tell us about your environment (Operating system, docker version, browser & web ui version, etc): I am using ubuntu 20.04 amd64 Flogo version (CLI & contrib/lib. If unknown, leave empty or state unknown): 0.X.X

    opened by tiari 10
Releases(new)
  • new(Jun 27, 2022)

    newer releases can be found here: https://github.com/project-flogo

    this Repo is just the pointer to the quickly growing Flogo project that got splitter up into a number of Repos under a separated GitHub Org.

    Source code(tar.gz)
    Source code(zip)
  • v0.5.5(Jun 30, 2018)

    This release focuses on on squashing bugs, as well as the introduction of the Golang API.

    Features Added

    • Golang API: Enables Go developers to leverage activities, triggers and flows within their own Go applications. (#289)
    • Array length function for conditions (#282)

    Flogo Flows Web UI

    • Trigger configurations now support referencing of $property & $env
    • Build and target shim triggers from UI (#252)

    Bugs Squashed

    • Array mapping fails (#281)
    • Web UI: Manually added properties in property bag are lost in app import/export (#205)
    • While importing Json file Flow description values are not retained. (#258)
    • Parse ternary expression failed (TIBCOSoftware/flogo-lib#194)
    • Going into infinite loop in error handle flow while iterate activity mapping error (TIBCOSoftware/flogo-lib#193)
    • Support expression mapping in iterate (TIBCOSoftware/flogo-lib#192)
    • Engine hangs when a flow has multiple reply activities (TIBCOSoftware/flogo-lib#181)
    • fix subflow activity to handle call to flow with no inputs/outputs (TIBCOSoftware/flogo-contrib#262)
    • Lambda trigger updates (TIBCOSoftware/flogo-contrib#256)
    • REST trigger POST data: What are the accepted types? (#285)
    • Expect proper error message to user: Flogo FAAS (#286)
    • Invoke Lambda MissingRegion: could not find region configuration (#274)
    Source code(tar.gz)
    Source code(zip)
  • v0.5.4(May 18, 2018)

    This release is a minor release focusing on squashing bugs. No new major features have been added.

    Bugs Squashed

    • Array input to flow throwing a conversion error (#212)
    • Cannot iterate over an output array from a previous activity (#213)
    • Lambda trigger does not return proper payload on APIGW request (#249)
    • Remove Reply (Legacy) (#219)
    • Iterator: unable to evaluate path (#272)
    • Iterator does not recognize my map attribute (#273)
    • Flogo webui reports successful install when logs show fail (#195)
    • Flogo Web: If activity/trigger fails to install web ui does not recover from failure (#114)
    • Fix an issue to recongnize boolean in expression condition (TIBCOSoftware/flogo-lib#152)

    Features Added

    • OOB Memory and CPU profiling for Flogo application binaries (#243)
    • Enhance support for Application Properties (#226)
    • Mapper functions exposed via the WebUI
    • Support expression on object mapping (TIBCOSoftware/flogo-lib#144)
    • Support keyword nil in expression (TIBCOSoftware/flogo-lib#167)
    Source code(tar.gz)
    Source code(zip)
  • v0.5.3(Mar 30, 2018)

    This release is a minor release focusing just on squashing bugs. No new features have been added.

    Bugs Squashed

    • Panic thrown with invalid Log level (#204)
    • Mapper functions imported by default (TIBCOSoftware/flogo-lib#153)
    • Introduced string.ignoreCaseEquals mapper function (TIBCOSoftware/flogo-lib#153)
    • Timer trigger starts flow immediately for past date (TIBCOSoftware/flogo-contrib#236)
    • Unhandled flow errors are not propagated (TIBCOSoftware/flogo-contrib#235)
    • Resolved an issue where the iterator would throw an error preventing the app from starting (#207)
    Source code(tar.gz)
    Source code(zip)
  • v0.5.2(Mar 22, 2018)

    This release captures a number of core changes and enhancements. Backward compatibility has been maintained.

    Key Changes/Features

    • Subflows: The ability to invoke a flow within the same application scope as the current flow, enabling app devs to distribute app logic into logical functions/flows within the application scope.
    • Additional mapping types: Additional mapping types have been exposed to enable function-level invocation within mappings (for example, contact). *Note, the function support is not exposed via the Web UI, but is available when building your app models directly.
    • New application model: The Flogo application model has been cleaned up and simplified to expose a more intuitive format for manual editing and consumption.
    • New activity: AWS SNS
    • As always, general bug fixes and enhancements
    Source code(tar.gz)
    Source code(zip)
  • v0.5.1(Feb 5, 2018)

    As always, we’re out to squash bugs and enhance the developer experience.

    Key changes/features:

    • Iterators: Support for iterating over an array or n times and invoking a single activity.
    • Native support for AWS Lambda. A Flow can now be built to target running as a function within AWS Lambda using native Golang support.
    • Support for referencing $env & $properties for trigger settings (for example, defining the port via an environment variable)
    • CLI switch to go dep from gb. This has an impact on users of the CLI. Note the updated documentation to reflect the changes (https://tibcosoftware.github.io/flogo/flogo-cli/flogo-cli/). Any current project will need to be upgraded using the supplied CLI commands.
    Source code(tar.gz)
    Source code(zip)
  • v0.5.0(Nov 22, 2017)

    As always, we’re out to squash bugs and enhance the developer experience.

    Key changes/features:

    • Triggers and flows have now been decoupled. Meaning that multiple triggers can be mapped to a single flow enabling a single flow to process logic from multiple sources (HTTP, Kafka, MQTT, an as an example).
    • Flows as Functions: A flow exposes function-like constructs. A flow can define input and output parameters. This allows the flow to operate without any dependency on the trigger(s).
    • Shim-style triggers. These are triggers that override the entry point of the framework.
    • First-class support for AWS Lambda. A Flow can now be built to target running as a function within AWS Lambda.
    • Native Google TensorFlow activity used to inference data against a tf.estimator protobuf model.
    • Revised evaluation syntax. A simplified and revised syntax for evaluation mapping expressions.
    • Object-type mapping. This enables a flow developer to construct a JSON response object with values from the flow context.
    Source code(tar.gz)
    Source code(zip)
  • v0.4.0(Aug 3, 2017)

    Key feature(s):

    Flogo Edge Apps: Launched at TIBCO Now in Berlin and generally available via Flogo Web UI. Flogo Edge Apps is the easiest way to build apps targeting microcontrollers. We’ve built a contribution model around microcontroller platforms, triggers & activities enabling Flogo Edge Apps to be extended to support additional microcontroller platforms and sensors.

    WebUI has been enhanced to include a new application profile concept, when the Microcontroller profile is selected, applications can be built to target specific microcontroller platforms (such as Arduino).

    As always, this release also includes general bug fixes.

    Source code(tar.gz)
    Source code(zip)
  • v0.3.2(Mar 17, 2017)

  • v0.3.1(Feb 2, 2017)

    Flogo Web

    Flogo Web UI has undergone a bit of a facelift, with general improvements and also the introduction of applications to better manage organize your flows.

    Flogo Web UI is available via a Docker image that provides a web-based design tool and all the required dependencies to develop, test and build applications. Follow the instructions on http://flogo.io to get started.

    Flogo

    General bug fixes and performance improvements.

    Source code(tar.gz)
    Source code(zip)
  • v0.3.0(Dec 5, 2016)

    Flogo Web

    New Flogo Web UI docker image that provides a web-based design tool and all the required dependencies to develop, test and build flows. Follow the instructions in http://flogo.io to start the Flogo Web.

    Flogo Adapters

    New Flogo Adapter Trigger provides your Flogo application the ability to start a flow from a device. Use the new CLI device commands to prepare, build and update the firmware of a device. Check out the device section of flogo-cli to get started.

    Source code(tar.gz)
    Source code(zip)
  • v0.2.3(Nov 8, 2016)

    flogo

    • Corrected instructions in readme for the helloworld sample.

    flogo-services

    • Reimplemented flow & state services in Go to eliminate Java dependencies so that runtime footprint and docker image sizes are minimized.

    flogo-cli

    • Fixed incorrect type of error in the Activity.eval() method when building a custom Activity.
    • Fixed missing error as return value in Trigger.stop() method when building a custom Trigger.
    Source code(tar.gz)
    Source code(zip)
  • v0.2.2-beta1(Oct 10, 2016)

Owner
TIBCO Software Inc.
TIBCO Software Inc.
Kubernetes Native Edge Computing Framework (project under CNCF)

KubeEdge KubeEdge is built upon Kubernetes and extends native containerized application orchestration and device management to hosts at the Edge. It c

KubeEdge 5.5k Dec 1, 2022
A opinionated multi-tenant hyperscale Internet of Things platform to connect IoT devices fast and securely with minimal TCO

infinimesh IoT Platform infinimesh is a opinionated multi-tenant hyperscale Internet of Things platform to connect IoT devices fast and securely with

Mik 1 Feb 14, 2022
Courier Golang client library provides an opinionated wrapper over paho MQTT library to add features on top of it

Courier Golang Client Library Introduction Courier Golang client library provides an opinionated wrapper over paho MQTT library to add features on top

Gojek 31 Nov 19, 2022
An Open-Source Platform for Quantified Self & IoT

Heedy Note: Heedy is currently in alpha. You can try it out by downloading it from the releases page, but there is no guarantee that future versions w

Heedy 355 Dec 1, 2022
Next-generation IoT open source platform.

tKeel Next-generation IoT open source platform High performance, High security and easy to use tKeel is a strong and reusable IoT platform that helps

null 83 Nov 9, 2022
IoT platform with things/user management and visualization, in Go with Docker using microservices

BARIOT IoT platform to Manage Users and their Things and visualize their data. Microservices services architecture build with Go and docker (compose).

Maxime CLEMENT 5 Jun 22, 2022
A project outputs Bluetooth Low Energy (BLE) sensors data in InfluxDB line protocol formatA project outputs Bluetooth Low Energy (BLE) sensors data in InfluxDB line protocol format

Intro This project outputs Bluetooth Low Energy (BLE) sensors data in InfluxDB line protocol format. It integrates nicely with the Telegraf execd inpu

Marc Venturini 1 Apr 15, 2022
Gatt is a Go package for building Bluetooth Low Energy peripherals

Package gatt provides a Bluetooth Low Energy GATT implementation. Gatt (Generic Attribute Profile) is the protocol used to write BLE peripherals (serv

PayPal 1k Nov 25, 2022
Raspberry pi project that controls jack-o-lantern via servo motor and PIR motion sensors

pumpkin-pi ?? Raspberry pi project that controls jack-o-lantern via servo motor and PIR motion sensors to simulate it "watching" you. Inspired by Ryde

Caleb Lemoine 17 Sep 13, 2022
Dapr is a portable, event-driven, runtime for building distributed applications across cloud and edge.

Dapr is a portable, serverless, event-driven runtime that makes it easy for developers to build resilient, stateless and stateful microservices that run on the cloud and edge and embraces the diversity of languages and developer frameworks.

Dapr 19.9k Nov 23, 2022
Go-serverless-eth-event-listener - Go serverless, ethereum contract event listener with a sample contract

go-serverless-eth-event-listener This repository is for showing how to listen sm

Emre Ceylan 4 May 19, 2022
KEDA is a Kubernetes-based Event Driven Autoscaling component. It provides event driven scale for any container running in Kubernetes

Kubernetes-based Event Driven Autoscaling KEDA allows for fine-grained autoscaling (including to/from zero) for event driven Kubernetes workloads. KED

KEDA 5.7k Nov 24, 2022
A go project generator, which aims to simplify building and releasing go projects by storing all project configuration in a single file called gojen.json, and creates appropriate workflow/git files using that config.

gojen Define your go project's configuration using a json config. This config can be used to generate a new go project for you, and can also create co

 Aatman 4 Mar 8, 2022
Open source Firebase + Heroku to develop, scale and secure serverless apps on Kubernetes

Develop, Deploy and Secure Serverless Apps on Kubernetes. Website • Docs • Support Space Cloud is a Kubernetes based serverless platform that provides

Space Up Technologies 3.7k Nov 28, 2022
Prueba de concepto: Boletia, una aplicación para venta de boletos, basada en microservicios event-driven. Desarrollada sobre AWS Serverless: Api Gateway, Lambda, DynamoDB, DynamoDB Streams

Prueba de concepto: Boletia, una aplicación para venta de boletos, basada en microservicios event-driven. Desarrollada sobre AWS Serverless: Api Gatew

Emilio del Cañal Calleja 1 May 7, 2022
TriggerMesh open source event-driven integration platform powered by Kubernetes and Knative.

TriggerMesh open source event-driven integration platform powered by Kubernetes and Knative. TriggerMesh allows you to declaratively define event flows between sources and targets as well as add even filter, splitting and processing using functions.

TriggerMesh 345 Nov 23, 2022
Example Golang Event-Driven with kafka Microservices Choreography

Microservices Choreography A demonstration for event sourcing using Go and Kafka example Microservices Choreography. To run this project: Install Go I

Muhammad Nasrul 0 Dec 2, 2021
Build event-driven and event streaming applications with ease

Commander ?? Commander is Go library for writing event-driven applications. Enabling event sourcing, RPC over messages, SAGA's, bidirectional streamin

Jeroen Rinzema 61 Nov 2, 2022
webrpc is a schema-driven approach to writing backend services for modern Web apps and networks

webrpc is a schema-driven approach to writing backend servers for the Web. Write your server's api interface in a schema format of RIDL or JSON, and t

null 487 Nov 22, 2022
List your dependencies capabilities and monitor if updates require more capabilities.

A take on supply chain security in Go List your dependencies capabilities and monitor if dependency updates require more capabilities. The Problem Rec

Jonas Plum 129 Nov 16, 2022