{"id":41723989,"url":"https://github.com/flowable/flowable-external-client-js","last_synced_at":"2026-01-24T22:58:19.917Z","repository":{"id":204857765,"uuid":"712479248","full_name":"flowable/flowable-external-client-js","owner":"flowable","description":null,"archived":false,"fork":false,"pushed_at":"2025-01-16T16:50:16.000Z","size":82,"stargazers_count":2,"open_issues_count":1,"forks_count":4,"subscribers_count":7,"default_branch":"main","last_synced_at":"2025-10-06T07:53:41.155Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/flowable.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2023-10-31T14:50:22.000Z","updated_at":"2025-09-04T04:10:57.000Z","dependencies_parsed_at":null,"dependency_job_id":"62a6c01d-50e6-4e0b-9ea4-b8322748e1bb","html_url":"https://github.com/flowable/flowable-external-client-js","commit_stats":null,"previous_names":["flowable/flowable-external-client-js"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/flowable/flowable-external-client-js","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flowable%2Fflowable-external-client-js","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flowable%2Fflowable-external-client-js/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flowable%2Fflowable-external-client-js/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flowable%2Fflowable-external-client-js/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/flowable","download_url":"https://codeload.github.com/flowable/flowable-external-client-js/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flowable%2Fflowable-external-client-js/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28738979,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-24T22:12:27.248Z","status":"ssl_error","status_checked_at":"2026-01-24T22:12:10.529Z","response_time":89,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-01-24T22:58:18.958Z","updated_at":"2026-01-24T22:58:19.874Z","avatar_url":"https://github.com/flowable.png","language":"TypeScript","readme":"# Flowable External Worker Library for Javascript\n\n[![Latest Version](https://img.shields.io/npm/v/@flowable-oss/external-worker-client.svg)](https://www.npmjs.com/package/@flowable-oss/external-worker-client)\n[![license](https://img.shields.io/hexpm/l/plug.svg)](https://github.com/flowable/flowable-external-client-js/blob/main/LICENSE)\n\n![Flowable Actions CI](https://github.com/flowable/flowable-external-client-js/actions/workflows/main.yml/badge.svg?branch=main)\n\nAn _External Worker Task_ in BPMN or CMMN is a task where the custom logic of that task is executed externally to Flowable, i.e. on another server.\nWhen the process or case engine arrives at such a task, it will create an **external job**, which is exposed over the REST API.\nThrough this REST API, the job can be acquired and locked.\nOnce locked, the custom logic is responsible for signalling over REST that the work is done and the process or case can continue.\n\nThis project makes implementing such custom logic in Javascript or Typescript easy by not having the worry about the low-level details of the REST API and focus on the actual custom business logic.\nIntegrations for other languages are available, too.\n\n## Authentication\n\nThe library allows to either authenticate with basic authentication with the parameter `auth` requiring `username` and `password`.\n\nTo use a personal access token you can specify the parameter `auth` and add `token` as a parameter.\n\nAlternatively, `customizeAxios` can be used to directly customize the REST client.\n\n## Installation\n\nTo install the external worker library, execute the following command:\n\n```\nnpm install @flowable-oss/external-worker-client\n```\n\n## Sample\n\n### Flowable Trial\n\nThe usage with Flowable Trial is simpler, since everything is pre-configured.\nHowever, it's required to either use the user credentials or to pre-configure a personal access token.\n\n```javascript\nimport {ExternalWorkerAcquireJobResponse, ExternalWorkerClient, WorkerResultBuilder} from \"@flowable-oss/external-worker-client\";\n\nconst externalWorkerClient = new ExternalWorkerClient({\n    auth: {\n        token: '\u003cpersonal-access-token\u003e'\n    }\n});\n\nconst subscription = externalWorkerClient.subscribe({\n    topic: \"myTopic\",\n    numberOfTasks: 1,\n    callbackHandler(job: ExternalWorkerAcquireJobResponse, workResultBuilder: WorkerResultBuilder) {\n        console.log(`Execute job: ${job.id}`);\n        return workResultBuilder.success();\n    }\n});\n```\n\n### Local\n\nThe following is an example how you can connect to a Flowable instance running at `http://host.docker.internal:8090` and process all messages retrieved on the topic `myTopic`:\n\n```typescript\nimport {ExternalWorkerAcquireJobResponse, ExternalWorkerClient, WorkerResultBuilder} from \"@flowable-oss/external-worker-client\";\n\nconst externalWorkerClient = new ExternalWorkerClient({\n    flowableHost: 'http://host.docker.internal:8090',\n    auth: {\n        username: 'admin',\n        password: 'test'\n    }\n});\n\nconst subscription = externalWorkerClient.subscribe({\n    topic: \"myTopic\",\n    numberOfTasks: 1,\n    callbackHandler(job: ExternalWorkerAcquireJobResponse, workResultBuilder: WorkerResultBuilder) {\n        console.log(`Execute job: ${job.id}`);\n        return workResultBuilder.success();\n    }\n});\n```\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fflowable%2Fflowable-external-client-js","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fflowable%2Fflowable-external-client-js","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fflowable%2Fflowable-external-client-js/lists"}