Download the PHP package gplanchat/durable-plugin without Composer

On this page you can find all versions of the php package gplanchat/durable-plugin. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.

FAQ

After the download, you have to make one include require_once('vendor/autoload.php');. After that you have to import the classes with use statements.

Example:
If you use only one package a project is not needed. But if you use more then one package, without a project it is not possible to import the classes with use statements.

In general, it is recommended to use always a project to download your libraries. In an application normally there is more than one library needed.
Some PHP packages are not free to download and because of that hosted in private repositories. In this case some credentials are needed to access such packages. Please use the auth.json textarea to insert credentials, if a package is coming from a private repository. You can look here for more information.

  • Some hosting areas are not accessible by a terminal or SSH. Then it is not possible to use Composer.
  • To use Composer is sometimes complicated. Especially for beginners.
  • Composer needs much resources. Sometimes they are not available on a simple webspace.
  • If you are using private repositories you don't need to share your credentials. You can set up everything on our site and then you provide a simple download link to your team member.
  • Simplify your Composer build process. Use our own command line tool to download the vendor folder as binary. This makes your build process faster and you don't need to expose your credentials for private repositories.
Please rate this library. Is it a good library?

Informations about the package durable-plugin

DurablePlugin (Sylius)

gplanchat/durable-plugin provides a Sylius-oriented admin dashboard for Durable workflow tracking.

Read-only mirror. This repository is a subtree-split of gplanchat/durable-dev, published so Composer can require this package on its own. Issues and pull requests are disabled here — open them on the monorepo.

Tests. This split ships its own tests/ and phpunit.xml; the same files run in the monorepo as its plugin suite.

Documentation: durable.rocks.

Features

Screenshots

Rendered by the Sylius bench (sylius/ in the monorepo) on the SQL journal, over seeded runs.

The runs list at /admin/durable/runs, with the backend state and the counters for the page:

A completed run on its own page, /admin/durable/runs/{runId}: one line per action, hatched while the work waited for a worker to pick it up:

A failed run: what failed is painted red, and each event expands to show what the backend recorded:

The panels, and why they are the same everywhere

Every Durable dashboard shows the same four panels, whichever host renders them. They are not a matter of chrome: a panel one surface has and another lacks is a question one application can answer about a run and another cannot, about the same run, recorded by the same backend.

  1. The state of the backend. Three states, and an empty list means something different under each: no readable backend is configured; a backend is configured and cannot be reached, named and dated so an operator knows what to restart; or a backend answers and its journal does not outlive the request that renders the page — where an empty list is the correct answer, not a failure.
  2. The runs, filterable by outcome and paged.
  3. Counters per outcome, over the set the list is paging through — and labelled as covering that set, never as a total over the application's history.
  4. A selected run's recorded history: one line per action, placed in time, with an interval spent waiting to be picked up told apart from one spent working; each event unfolds onto what the backend recorded with it.

Grouping into actions, measuring, telling a queue apart from work and wording a duration are decided once, in gplanchat/durable beside the observation model. What each host decides is how to draw it — scaling seconds to a column width is the only thing a surface owns, because a surface that renders no markup has no column.

What the page does not show, and why

A fact the configured backend does not have is absent from the page rather than rendered empty. An empty "task queue" column would teach an operator that the run has no queue, when it is the backend that has no such notion.

Temporal SQL (DBAL) In-memory
Task queue, namespace recorded, not shown — see below no such notion no such notion
Grouping across continue-as-new the workflow id no such notion no such notion
Queries recorded never recorded; queries are answered live never recorded, same reason
Runs from another process all of them all of them none — see below

Task queue and namespace are not shown at all for now: they belong to one backend only, and the page is meant to read the same on all three.

Requirements

Whichever backend records your durable executions — a SQL database through gplanchat/durable-bridge-dbal, a Temporal cluster through gplanchat/durable-bridge-temporal, or the in-memory journal the bundle ships by default — the bundle registers the matching catalog and the dashboard reads it. Nothing here requires ext-grpc.

The in-memory backend reads, and says what that is worth

The in-memory catalog is wired last, only when no other backend claimed the slot. It works, and it carries a limit the page has to state rather than hide: an in-memory journal lives and dies with its process. Under PHP-FPM the request that renders the dashboard has never executed a workflow, so the list will be empty — always, on a perfectly healthy application.

That is why the backend health line is not a bare "reachable": it says that this catalog only ever sees runs from its own process, and that an empty list means nothing ran here. A blank page without that sentence would teach an operator that nothing ran at all, which is the same mistake as rendering an empty "task queue" column — see above.

Where it earns its keep is a long-running process: a FrankenPHP worker, a consumer command, a test. There the catalog sees what its process executed.

If no catalog at all is registered — a backend that reads nothing — the plugin still installs, the route and the menu entry still work, and the page says that no readable backend is configured.

Installation in a Sylius app

Enable the bundle and import routes:

The routes are, under the admin prefix (/admin/… by default, set by SYLIUS_ADMIN_ROUTING_PATH_NAME):

An application without Sylius can import the routes too: they sit under /admin/…, and the pages answer 404, since the Sylius admin they are drawn in is absent. With SecurityBundle, a visitor without ROLE_ADMINISTRATION_ACCESS is refused first.

Development notes

Timeline labels (before/after)

Label source mapping

Event kind Primary source Fallback(s)
activity ActivityTaskScheduledEventAttributes.activity_type.name activityId, then generated activity-<scheduledId>
signal WorkflowExecutionSignaledEventAttributes.signal_name generated signal-<eventId>
query Temporal event type shortened (EVENT_TYPE_WORKFLOW_EXECUTION_QUERY_*) query-<eventId>
update accepted request input name (acceptedRequest.input.name) meta update id, then update-<eventId> (technical enum labels are normalized)

License

MIT. See LICENSE in this package and WA004.


All versions of durable-plugin with dependencies

PHP Build Version
Package Version
Requires gplanchat/durable Version ^0.1.0-beta1
gplanchat/durable-bundle Version ^0.1.0-beta1
knplabs/knp-menu Version ^3.5
php Version >=8.2
sylius/grid-bundle Version ^1.13
symfony/config Version ^6.4 || ^7.0 || ^8.0
symfony/dependency-injection Version ^6.4 || ^7.0 || ^8.0
symfony/http-foundation Version ^6.4 || ^7.0 || ^8.0
symfony/http-kernel Version ^6.4 || ^7.0 || ^8.0
symfony/routing Version ^6.4 || ^7.0 || ^8.0
symfony/security-bundle Version ^6.4 || ^7.0 || ^8.0
symfony/security-http Version ^6.4 || ^7.0 || ^8.0
symfony/twig-bundle Version ^6.4 || ^7.0 || ^8.0
symfony/yaml Version ^6.4 || ^7.0 || ^8.0
twig/twig Version ^3.10
Composer command for our command line client (download client) This client runs in each environment. You don't need a specific PHP version etc. The first 20 API calls are free. Standard composer command

The package gplanchat/durable-plugin contains the following files

Loading the files please wait ...