This is a rough draft. Note that we're using the BEAM here because we see this growing significantly and want to leverage inter-node communication on large deployments, among other things. We may also fork and go another direction, using nothing but a small Express server (dropping Elixir/Erlang entirely) to call OpenFn/core (with a directly Javascript interface, rather than the CLI). Ideas, suggestions, questions welcome.
-
mix phx.serverreceives receipts and sends 201/202 - timer jobs can keep state (via
Repeaterand a simpleGenServer) - endpoint gets
URLandPORTfrom.env -
Dispatcherpicks up config from.env -
Dispatcherexecutes it, given preloaded job, cred, adaptor, and core - write tests for everything
- dashboard for visual performance monitoring
- pass project artifacts during
docker run -
tmpfiles are deleted after job is run - chain jobs together (replicate OpenFn.org "flow")
- bring
coreout of package.json -
Enginecan pipe to stdout - notifications module
- better Logging
- visual interface for application (Phx LiveView?)
- message persistence plugin (enables retries)
- See /project for project artifacts
- See .env.example for a possible configuration
- See Dockerfile to build a microservice
- Build a fully featured documentation site like OpenFn/docs
- Make fully
Instant OpenHIEcompliant (includingkubernetes.yaml) - Build out
openfn-devtoolsto include a script that pulls and configuresmicroservicebased one the current configuration of jobs and credentials indevtools. - Click a button on OpenFn to prepare a
microservice.zipwhich is this repo with a new Dockerfile, based on the current job's configuration at OpenFn.org (we're not just "shelf ready", we're providing the shelf with a "free forever" project on our website.) - An open-source jobs library.
- All jobs that "opt-in" on OpenFn.org are exposed with an open API, which
expects
{adaptor, version, ...helperFunction}and returns the following—which includes both the jobs in the OpenFn.org database and the jobs in OpenFn/Docs/jobs:
[
{
"expression": "createTEI({})",
"active": true,
"runsLast90": 32178,
"successRateLast90": 0.973,
"source": "openfn.org"
},
{
...job,
"source": "openfn/docs"
}
]- That API is consumed by the docs site (open source) AND by openfn.org so that it can use used to generate jobs with our free-forever projects.
- In the IDE on OpenFn.org, a user clicks DHIS2, then
createTEIand it suggests that you look at the top 10 mostsuccessful/activedhis2:your-version expressions, searchable and copy/pastable. - New jobs are automatically added to the library from OpenFn.org, and
open-source users can submit pull requests to post their jobs to the
OpenFn/docs/repo. (OpenFn/docs is open source also, btw.)