A client for ecflow using ecflow's c++ API including:
- A tree-like model for workflow
- An ecflow client to get status or node information
- A gRPC server to collect data from ecflow server
- A watcher to watch multiply ecflow servers
All requirements except ecFlow and Boost can be installed by vcpkg.
Build ecFlow server and client (python and GUI components are not required).
ecFlow uses some boost complied libraries:
- system
- filesystem
- date_time
- program_options
- serialization
- thread
- regex
And ecflow-client-cpp uses some boost header-only libraries.
Boost 1.53.0 is suggested to build ecFlow.
ecflow client server is based on gRPC.
To build tests, gtest is required.
Logs are printed by spdlog.
Commands use CLI11 to parse command line options.
We use nlohmann/json to generate JSON string.
ecflow_watchman uses HowardHinnant/date to generate data string.
ecflow_watchman uses YAML config file.
ecflow_watchman saves ecflow status into redis server.
Use CMake to build the project from source code.
Some variables should be set to help find external libraries.
ECFLOW_SOURCE_DIR: ecFlow's source code directory.ECFLOW_BUILD_DIR: ecFlow's build directory.BOOST_ROOT: boost root directory.Boost_NO_SYSTEM_PATHS=on: disable system boost search because ecFlow uses a specific version of Boost.
Some variables control which components to build.
ENABLE_SERVER: build grpc server and examples.ENABLE_TESTS: build all tests.
There are several command line tools.
Run ecflow_watchman all to watch several ecFlow servers defined in a config file.
ecflow_watchman watch-all --config-file /path/to/config/fileThe statuses of all ecFlow servers are stored into a Redis server.
For an ecflow server with owner: nwp_xp and repo: nwpc_op, the status will be stored using key nwp_xp/nwpc_op/stats.
Use binary program ecflow_grpc_server to run a gRPC server.
./ecflow_grpc_server --rpc-target="[::]:31181"gRPC client will get ecFlow status and node information from this server.
See example directory for more examples.
Copyright © 2019-2020, Perilla Roc.
ecflow-client-cpp is licensed under GPL v3.0