Sorry, you have been blocked
This website is using a security service to protect itself from online attacks. The action you just performed triggered the security solution. There are several actions that could trigger this block including submitting a certain word or phrase, a SQL command or malformed data.
What can I do to resolve this?
You can email the site owner to let them know you were blocked. Please include what you were doing when this page came up and the Cloudflare Ray ID found at the bottom of this page.
Cloudflare Ray ID: 8193d49ff8e94113 • Your IP: Click to reveal 45.84.122.38 • Performance & security by Cloudflare
FBP Network Protocol
The Flow-Based Programming network protocol (FBP protocol) has been designed primarily for flow-based programming interfaces like the Flowhub to communicate with various FBP runtimes. However, it can also be utilized for communication between different runtimes, for example server-to-server or server-to-microcontroller.
Implementations
-
is an open source visual IDE, which powers Flowhub is a data-driven testing tool for FBP components/graphs. is a low-level JavaScript client library supporting all the common FBP protocol transports is a higher-level JavaScript client library supporting all the common FBP protocol transports
-
is a transport-independent implementation of the protocol for NoFlo, client-side and server-side JavaScript programming. WebSocket, WebRTC and iFrame implementations exists. is a WebSocket implementation of the protocol in JS/C++, for microcontrollers and embedded systems is a WebSocket implementation in Elixir, for programming with systems in Elixir runnin on the Erlang VM. is a WebSocket implementation in C, for image processing is a Websocket implementation in Java for JavaFBP, for JRE and Android development is a WebSocket implementation for the SuperCollider audio programming environment is a Websocket implementation in Node.js for heterogenous distributed systems communicating via message queues is a Python FBP runtime implementation, with support for the protocol over WebSocket.
Some examples have also been created, to help implementors.
Test suite
The fbp-protocol tool provides a set of tests for FBP protocol implementations.
Changes
- 2018-03-27:
- Added schema for network:edges output message
- Modified subgraph key of network:data and other network packet events to be an array as specified in the text
- Fixed documentation for component:setsource to use component:source input, and component:component output
- Added schema for trace:error message
- Added :error output to all capabilities where user can perform actions that may fail
- Added optional graph key to network:error payloads
- Added network:debug and network:getstatus to the network:control permission
- Fixed signature of runtime:packet.payload , runtime:packetsent.payload , and port definition default to accept any payload type
- Added values and default keys for port definitions
- Added schema for component:componentsready output message
- Added schema for graph:clear output message
- Added packetsent response for runtime:packet input message
- Added schema support for ports and packets
- Documented known metadata keys for various graph entities
- Version 0.6. No breaking changes over 0.5.
- Added additional capabilities graph:readonly , network:control , network:data , network:status . Especially useful for read-only access.
- Deprecated the protocol:network capability in favor of the new fine-gained network:* capabilities.
- Each capability now defines the set of messages contained in it. Available as inputs and outputs in the schema /shared/capabilities .
- Fixed protocol errors ( graph:error , component:error and runtime:error ) to have mandatory message string payload.
- Fixed missing required markers in some JSON schemas for graph protocol. Affected messages: graph:renamegroup , graph:renameinport , graph:removeinport , graph:addinitial , graph:changeedge
- More readable HTML output, including property value types and examples
- Added more optional metadata to runtime:runtime message: repository , repositoryVersion and namespace
- Fixed payload definition of network:edges missing mandatory graph key
- network:error payload may now contain an optional stacktrace
- Trace subprotocol also available in machine-readable format
- Protocol definition available as machine-readable JSON schemas.
- The human-readable HTML documentation is generated from this defintion.
- The npm package fbp-protocol contains the schemas as YAML, JSON and .js modules.
- Initial trace subprotocol, for Flowtrace support
- Documented network persist and component componentsready messages
- All messages sent to runtime should include the secret in payload
- Runtime description message includes an allCapabilities array describing capabilities of the runtime, including ones not available to current user
- added clarifications to network running state in status , started , and stopped messages
- Add secret as payload to getruntime to support access levels
- Add get, list, graph, graphsdone commands to the graph protocol
- Add list, network commands to the network protocol
- Add changenode, changeedge, addgroup, removegroup, renamegroup, changegroup commands to the graph protocol
- Capability discovery support
- Network exported port messaging for remote subgraphs
- Support for exported graph ports
- Multi-graph support via the graph key in payload
- Harmonization with JSON format by renaming from / to in edges to src / tgt
- Network edges message
Basics
The FBP protocol is a message-based protocol that can be handled using various different transport mechanisms. The messages are designed to be independent, and not to form a request-response cycle in order to allow highly asynchronous operations and situations where multiple protocol clients talk with the same runtime.
There are currently three transports utilized commonly:
-
( postMessage ) for communication between different web pages or WebWorkers running inside the same browser instance for communicating between a browser and a server, or between two server instances for peer-to-peer communications between a runtime and a client
Different transports can be utilized as needed. It could be interesting to implement the FBP protocol using MQTT, for instance.
Sub-protocols
The FBP protocol is divided into sub-protocols for each of the major resources that can be manipulated:
-
: communications about runtime capabilities and its exported ports : communications about graph changes : communications about available components and changes to them : communications related to running a FBP graph : communications related to tracing a FBP network
Capabilities
Not all runtimes implementation supports all features of the protocol. Also, a runtime may restrict access to features, either to all clients based on configuration, or based on the secret provided in the messages. To support this a set of capabilities are defined, which are reported by the runtime in the runtime:runtime message.
When receiving a message, the runtime should check for the associated capability. If the capability is not supported, or the client does not have access to the capability, the runtime should respond with an error reply on the relevant protocol .
A few commands do not require any capabilities: the runtime info request/response (runtime:getruntime and runtime:runtime), and the error responses (runtime:error, graph:error, network:error, component:error).
protocol:network
can control and introspect its running networks using the Network protocol. DEPRECATED. Instead the individual network. capabilities should be used. Implies capabilities network:status, network:data, network:control. Does not imply capability network:persist.
input messages
output messages
network:persist
can *flash* a running graph setup to the runtime, making it persistent across restarts
input messages
output messages
network:status
can get and follow changes to network status
input messages
output messages
network:data
can listen to data flowing through the network and processes
input messages
output messages
network:control
can start and stop networks
input messages
output messages
protocol:component
can list components of the runtime using the component:list message.
input messages
output messages
component:getsource
read and send component source code back to client
input messages
output messages
component:setsource
runtime is able to compile and run custom components sent as source code strings
input messages
output messages
protocol:runtime
can expose ports of main graph and transmit packet information to/from them
input messages
output messages
graph:readonly
read and follow changes to runtime graphs (but not modify)
input messages
output messages
protocol:graph
read & modify runtime graphs using the Graph protocol.
input messages
output messages
protocol:trace
runtime is able to record and send over flowtraces, used for retroactive debugging.
input messages
output messages
Message structure
This document describes all messages as the data structures that are passed. The way these are encoded depends on the transport being used. For example, with WebSockets all messages are encoded as stringified JSON.
All messages consist of three parts:
- Sub-protocol identifier ( graph , component , or network )
- Topic (for example, addnode )
- Message payload (typically a data structure specific to the sub-protocol and topic)
The keys listed in specific messages are for the message payload .
An example message
Runtime protocol
When a client connects to a FBP procotol it may choose to discover the capabilities and other information about the runtime.
getruntime
Request the information about the runtime. When receiving this message the runtime should response with a runtime message. If the runtime is currently running a graph and it is able to speak the full Runtime protocol, it should follow up with a ports message.
- secret string access token to authorize user
packet
Runtimes that can be used as remote subgraphs (i.e. ones that have reported supporting the protocol:runtime capability) need to be able to receive and transmit information packets at their exposed ports. These packets can be send from the client to the runtimes input ports, or from runtimes output ports to the client.
- port string port name for the input or output port
- event string packet event
- type string The basic datatype sent «array»
- schema string Link to JSON schema describing the format of the data «https://example.net/schemas/person.json»
- graph string graph the action targets
- payload any payload for the packet. Used only with begingroup (for group names) and data packets
- secret string access token to authorize user
error
Error response to a command on runtime protocol
- message string Error message describing what went wrong
ports
Message sent by the runtime to signal its available ports. The runtime is responsible for sending the up-to-date list of available ports back to client whenever it changes.
- graph string ID of the currently configured main graph running on the runtime
- inPorts array list of input ports of the runtime Each item contains:
- id string port name
- type string port datatype «boolean»
- schema string Link to JSON schema for data on this port «https://example.net/schemas/person.json»
- required boolean whether the port needs to be connected for the component to work true
- addressable boolean whether the port is an ArrayPort false
- description string textual description of the port
- values array list of values accepted for the port
- default any default value for the port
- id string port name
- type string port datatype «boolean»
- schema string Link to JSON schema for data on this port «https://example.net/schemas/person.json»
- required boolean whether the port needs to be connected for the component to work true
- addressable boolean whether the port is an ArrayPort false
- description string textual description of the port
- values array list of values accepted for the port
- default any default value for the port
runtime
Response from the runtime to the getruntime request.
- id string unique runtime ID. Must be a UUID, version 4 «f18a4924-9d4f-414d-a37c-cd24b39bba10»
- label string Human-readable description of the runtime
- version string version of the runtime protocol that the runtime supports «0.6»
- allCapabilities array capability strings for things the runtime is able to do. May include things not permitted for this client.
- capabilities array capability strings for things the runtime is able to do for this client.
- graph string ID of the currently configured main graph running on the runtime, if any «service-main»
- type string type of the runtime «microflo»
- namespace string Library namespace of the project running on the runtime, if any. Must match that of components belonging to the (top-level) of project. «my-project-foo»
- repository string Source-code repository URL of the project running on the runtime, if any «https://github.com/flowbased/fbp-protocol.git»
- repositoryVersion string Unique version identifier of the source code of the project, if known. The version should be available in @repository. «0.6.3-8-g90edcfc»
packetsent
Confirmation that a packet has been sent
- port string port name for the input port
- event string packet event
- type string The basic datatype sent «array»
- schema string Link to JSON schema describing the format of the data «https://example.net/schemas/person.json»
- graph string graph the action targeted
- payload any payload for the packet. Used only with begingroup (for group names) and data packets
Graph protocol
This protocol is utilized for communicating about graph changes in both directions.
clear
Initialize an empty graph.
- id string identifier for the graph being created. Used for all subsequent messages related to the graph instance
- name string Human-readable label for the graph
- library string Component library identifier
- main boolean Identifies the graph as a main graph of a project that should not be registered as a component Graphs registered in this way should also be available for use as subgraphs in other graphs. Therefore a graph registration and later changes to it may cause component messages of the Component protocol to be sent back to the client informing of possible changes in the ports of the subgraph component.
- icon string Icon to use for the graph when used as a component
- description string Description to use for the graph when used as a component
- secret string access token to authorize user
addnode
Add node to a graph.
- id string identifier for the node
- component string component name used for the node
- metadata object structure of key-value pairs for graph node metadata
- x integer X coordinate of a graph entity
- y integer Y coordinate of a graph entity
removenode
Remove a node from a graph.
- id string identifier for the node
- graph string graph the action targets
- secret string access token to authorize user
renamenode
Change the ID of a node in the graph
- from string original identifier for the node
- to string new identifier for the node
- graph string graph the action targets
- secret string access token to authorize user
changenode
Change the metadata associated to a node in the graph
- id string identifier for the node
- metadata object structure of key-value pairs for graph node metadata
- x integer X coordinate of a graph entity
- y integer Y coordinate of a graph entity
addedge
Add an edge to the graph
- src object source node for the edge
- node string node identifier
- port string port name
- index string,number connection index, for addressable ports
- node string node identifier
- port string port name
- index string,number connection index, for addressable ports
- route integer Route identifier of a graph entity
- schema string JSON schema associated with a graph entity
- secure boolean Whether graph entity data should be treated as secure
removeedge
Remove an edge from the graph
- graph string graph the action targets
- src object source node for the edge
- node string node identifier
- port string port name
- index string,number connection index, for addressable ports
- node string node identifier
- port string port name
- index string,number connection index, for addressable ports
changeedge
Change an edge’s metadata
- graph string graph the action targets
- metadata object structure of key-value pairs for graph edge metadata
- route integer Route identifier of a graph entity
- schema string JSON schema associated with a graph entity
- secure boolean Whether graph entity data should be treated as secure
- node string node identifier
- port string port name
- index string,number connection index, for addressable ports
- node string node identifier
- port string port name
- index string,number connection index, for addressable ports
addinitial
Add an IIP to the graph
- graph string graph the action targets
- metadata object structure of key-value pairs for graph edge metadata
- route integer Route identifier of a graph entity
- schema string JSON schema associated with a graph entity
- secure boolean Whether graph entity data should be treated as secure
- data object,array,string,number,integer,boolean,null IIP value in its actual data type
- node string node identifier
- port string port name
- index string,number connection index, for addressable ports
removeinitial
Remove an IIP from the graph
- src object IIP data
- data object,array,string,number,integer,boolean,null IIP value in its actual data type
- node string node identifier
- port string port name
- index string,number connection index, for addressable ports
addinport
Add an exported inport to the graph.
- public string the exported name of the port
- node string node identifier
- port string internal port name
- metadata object structure of key-value pairs for graph node metadata
- x integer X coordinate of a graph entity
- y integer Y coordinate of a graph entity
removeinport
Remove an exported port from the graph
- public string the exported name of the port to remove
- graph string graph the action targets
- secret string access token to authorize user
renameinport
Rename an exported port in the graph
- from string original exported port name
- to string new exported port name
- graph string graph the action targets
- secret string access token to authorize user
addoutport
Add an exported outport to the graph.
- public string the exported name of the port
- node string node identifier
- port string internal port name
- metadata object structure of key-value pairs for graph node metadata
- x integer X coordinate of a graph entity
- y integer Y coordinate of a graph entity
removeoutport
Remove an exported port from the graph
- public string the exported name of the port to remove
- graph string graph the action targets
- secret string access token to authorize user
renameoutport
Rename an exported port in the graph
- from string original exported port name
- to string new exported port name
- graph string graph the action targets
- secret string access token to authorize user
addgroup
Add a group to the graph
- name string the group name
- nodes array an array of node ids part of the group
- metadata object structure of key-value pairs for graph group metadata
- description string Longer textual description of the group
removegroup
Remove a group from the graph
- name string the group name
- graph string graph the action targets
- secret string access token to authorize user
renamegroup
Rename a group in the graph.
- from string original group name
- to string new group name
- graph string graph the action targets
- secret string access token to authorize user
changegroup
Change a group’s metadata
- name string the group name
- metadata object structure of key-value pairs for graph group metadata
- description string Longer textual description of the group
Component protocol
Protocol for handling the component registry.
Request a list of currently available components. Will be responded with a set of `component` messages.
- secret string access token to authorize user
getsource
Request for the source code of a given component. Will be responded with a `source` message.
- name string Name of the component to for which to get source code. Should contain the library prefix «my-project/SomeComponent»
- secret string access token to authorize user
source
Source code for a component. In cases where a runtime receives a `source` message, it should do whatever operations are needed for making that component available for graphs, including possible compilation.
- name string Name of the component. Must not contain library prefix «MyComponent»
- language string The programming language used for the component code «c++»
- library string Component library identifier «components-common»
- code string Component source code
- tests string unit tests for the component
error
Error response to a command on component protocol
- message string Error message describing what went wrong
component
Transmit the metadata about a component instance.
- name string component name in format that can be used in graphs. Should contain the component library prefix. «my-project/MyComponent»
- description string textual description on what the component does
- icon string Visual icon for the component, matching icon names in Font Awesome
- subgraph boolean boolean telling whether the component is a subgraph
- inPorts array list of input ports of the component Each item contains:
- id string port name
- type string port datatype «boolean»
- schema string Link to JSON schema for data on this port «https://example.net/schemas/person.json»
- required boolean whether the port needs to be connected for the component to work true
- addressable boolean whether the port is an ArrayPort false
- description string textual description of the port
- values array list of values accepted for the port
- default any default value for the port
- id string port name
- type string port datatype «boolean»
- schema string Link to JSON schema for data on this port «https://example.net/schemas/person.json»
- required boolean whether the port needs to be connected for the component to work true
- addressable boolean whether the port is an ArrayPort false
- description string textual description of the port
- values array list of values accepted for the port
- default any default value for the port
componentsready
Indication that a component listing has finished
Network protocol
Protocol for starting and stopping FBP networks, and finding out about their state.
start
Start execution of a FBP network based on a given graph.
- graph string graph the action targets
- secret string access token to authorize user
getstatus
Get the current status of the runtime. The runtime should respond with a status message.
- graph string graph the action targets
- secret string access token to authorize user
Stop execution of a FBP network based on a given graph.
- graph string graph the action targets
- secret string access token to authorize user
persist
Tells the runtime to persist the current state of graphs and components so that they are available between restarts. Requires the network:persist capability.
- secret string access token to authorize user
debug
Set a network into debug mode
- enable boolean tells whether to put the network in debug mode
- graph string graph the action targets
- secret string access token to authorize the user
edges
List of edges user has selected for inspection in a user interface or debugger, sent from UI to a runtime.
- graph string graph the action targets
- edges array list of selected edges Each item contains:
- src object source node for the edge
- node string node identifier
- port string port name
- index string,number connection index, for addressable ports
- node string node identifier
- port string port name
- index string,number connection index, for addressable ports
stopped
Inform that a given network has stopped.
- time string time when the network was stopped
- uptime number time the network was running, in seconds
- graph string graph the action targets
- running boolean whether or not network is currently running
- started boolean whether or not network has been started
- debug boolean whether or not network is in debug mode
started
Inform that a given network has been started.
- time string time when the network was started
- graph string graph the action targets
- started boolean whether or not network has started running
- running boolean whether or not network is currently running
- debug boolean whether or not network is in debug mode
status
Response to a getstatus message.
- graph string graph the action targets
- uptime number time the network has been running, in seconds
- started boolean whether or not network has started running
- running boolean boolean tells whether the network is running or not
- debug boolean whether or not network is in debug mode
output
An output message from a running network, roughly similar to STDOUT output of a Unix process, or a line of console.log in JavaScript. Output can also be used for passing images from the runtime to the UI.’
- message string contents of the output line
- type string type of output, either message or previewurl
- url string URL for an image generated by the runtime
error
An error from a running network, roughly similar to STDERR output of a Unix process, or a line of console.error in JavaScript.’
- message string contents of the error message
- stack string stack trace
- graph string graph the action targets
processerror
When in debug mode, a network can signal an error happening inside a process.
Fbp что это такое
Англо-русский словарь технических аббревиатур . 2011 .
Смотреть что такое «FBP» в других словарях:
FBP — may refer to:*Flow based programming, is a computer programming paradigm that defines applications as networks of processes, exchanging data across predefined connections by message passing.* Fructose 1,6 bisphosphate*FBP 9 submachine gun … Wikipedia
FBP — steht für: Fahrmischerbetonpumpe, eine Kombination aus Betonpumpe und Fahrmischer Ferrovia Bologna Portomagiore, eine italienische Eisenbahngesellschaft Filtered Backprojection, ein Verfahren in der Computertomographie Final Boiling Point, die… … Deutsch Wikipedia
FBP submachine gun — Infobox Weapon name=FBP caption=FBP m/948 origin=flag|Portugal type=Submachine Gun is ranged=yes service=1948 1980s used by=Portugal wars=Portuguese Colonial War designer=Gonçalves Cardoso design date=1948 manufacturer=Fábrica de Braço de Prata… … Wikipedia
FBP m/948 — Пистолет пулемет FBP m/948 (Португалия) Пистолет пулемет FBP m/948 с приливом для крепления штыка на стволе Пистолет пулемет FBP m/948 Характеристики Пистолет пулемет FBP m/948 был разработан португальским оружейным заводом… … Энциклопедия стрелкового оружия
FBP m/976 — Пистолет пулемет FBP m/976 (Португалия) Характеристики Пистолет пулемет FBP m/976 был принят на вооружение португальской армии в 1976 году на замену устаревшему пистолету пулемету FBP m/948. По сравнению с предшественником новый… … Энциклопедия стрелкового оружия
FBP — Fructose 1,6 diphosphate Fructose 1,6 diphosphate Général Nom IUPAC acide [(2R,3S,4R,5R) 2,3,4 trihydroxy 5 (phosphonooxymethyl) … Wikipédia en Français
FBP — Flow Based Programming (Computing » Software) * Foreign Buyer Program (Business » International Business) * First Bancorp of Puerto Rico (Business » NYSE Symbols) … Abbreviations dictionary
FBP PA — First Bancorp of Puerto Rico Preferred A (Business » NYSE Symbols) … Abbreviations dictionary
FBP — femoral blood pressure; fibrin breakdown product; filtered back projection [algorithm]; folate binding protein; fructose 1, 6 biphosphatase … Medical dictionary
FBP — FASTBUS Protcol ( > IEEE Standard Dictionary ) … Acronyms
FBP — FASTBUS Protcol ( > IEEE Standard Dictionary ) … Acronyms von A bis Z
Fbp что это такое
FBP flow definition language parser
The fbp library provides a parser for a domain-specific language for flow-based-programming (FBP), used for defining graphs for FBP programming environments like NoFlo, MicroFlo and MsgFlo.
You can use the FBP parser in your JavaScript code with the following:
When caseSensitive is false the parser will convert port names to lowercase. This is currently the default behavior, but in future releases the default will change to preserve case. It is therefore recommended that you always specify the caseSensitive option to make your code future-proof.
The fbp package also provides a command-line tool for converting FBP files into JSON:
And for converting JSON files into FBP:
Language for Flow-Based Programming
FBP is a Domain-Specific Language (DSL) for easy graph definition. The syntax is the following:
- ‘somedata’ -> PORT Process(Component) sends initial data somedata to port PORT of process Process that runs component Component
- A(Component1) X -> Y B(Component2) sets up a connection between port X of process A that runs component Component1 and port Y of process B that runs component Component2
You can connect multiple components and ports together on one line, and separate connection definitions with a newline or a comma ( , ).
Components only have to be specified the first time you mention a new process. Afterwards, simply use the process name.
The syntax also supports blank lines and comments. Comments start with the # character.
Example with the same graph than above :
When FBP-defined graphs are used as subgraphs in other flows, it is often desirable to give more user-friendly names to their available ports. In the FBP language this is done by INPORT and OUTPORT statements.
This line would export the IN port of the Read node as FILENAME.
It is possible to append metadata to Nodes when declaring them by adding the metadata string to the Component part after a colon ( : ).
In this case the route leading from Read to Display through Split and Count would be identified with the string main. You can also provide arbitrary metadata keys with the = syntax:
In this case the Split node would contain the metadata keys foo and baz with values bar and 123 .
FBP graphs also support annotations for specifying things like graph name, description, icon, or the FBP runtime to be used for executing the graph.
- src object source node for the edge