{"id":21979129,"url":"https://github.com/cristianonicolai/jbpm-xes","last_synced_at":"2026-05-07T13:32:17.313Z","repository":{"id":147265584,"uuid":"151200767","full_name":"cristianonicolai/jbpm-xes","owner":"cristianonicolai","description":"jBPM XES exporter","archived":false,"fork":false,"pushed_at":"2018-10-15T04:21:57.000Z","size":60,"stargazers_count":0,"open_issues_count":2,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-23T00:44:20.513Z","etag":null,"topics":["bpm","bpmn","jbpm","opensource","process-mining","workflow","workflow-engine","xes"],"latest_commit_sha":null,"homepage":null,"language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cristianonicolai.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-10-02T04:37:05.000Z","updated_at":"2018-10-15T04:25:24.000Z","dependencies_parsed_at":null,"dependency_job_id":"d0394f8c-725f-42e6-8960-423e454348d0","html_url":"https://github.com/cristianonicolai/jbpm-xes","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/cristianonicolai/jbpm-xes","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cristianonicolai%2Fjbpm-xes","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cristianonicolai%2Fjbpm-xes/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cristianonicolai%2Fjbpm-xes/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cristianonicolai%2Fjbpm-xes/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cristianonicolai","download_url":"https://codeload.github.com/cristianonicolai/jbpm-xes/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cristianonicolai%2Fjbpm-xes/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":269941665,"owners_count":24500746,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-11T02:00:10.019Z","response_time":75,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["bpm","bpmn","jbpm","opensource","process-mining","workflow","workflow-engine","xes"],"created_at":"2024-11-29T16:29:33.843Z","updated_at":"2026-05-07T13:32:17.273Z","avatar_url":"https://github.com/cristianonicolai.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# jBPM XES Export Service\n\n## Overview\n\nThe jBPM XES export tool aims to facilitate exporting XES based logs from the jBPM runtime. These logs can then be consumed \nby different process mining tools to analyse different aspects from the process runtime execution such as conformance, performance, \ndeviations, process discovery and more. \neXtensible Event Stream (XES) is an xml based standard that unifies the interchange event data information between information systems on one side and analysis tools on the other side.\nFor more information regarding the XES standard please visit: http://www.xes-standard.org/\n\n## Building\n\nFor building this project locally, you firstly need to have the following tools installed locally:\n- git client\n- Java 1.8\n- Maven\n\nOnce you cloned the repository locally all you need to do is execute the following Maven build:\n\n```\nmvn clean install\n```\n\nOnce the build is complete, you can use the generated JAR in 'target/jbpm-xes-${version}-jar-with-dependencies.jar' using:\n\n```\njava -jar target/jbpm-xes-1.0.0-SNAPSHOT-jar-with-dependencies.jar \n```\n\n\n## Sample output XML\n\n```\n\u003c?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?\u003e\n\u003clog xes.version=\"2.0\" xes.features=\"\"\u003e\n    \u003cextension name=\"Lifecycle\" prefix=\"lifecycle\" uri=\"http://www.xes-standard.org/lifecycle.xesext\"/\u003e\n    \u003cextension name=\"Organizational\" prefix=\"org\" uri=\"http://www.xes-standard.org/org.xesext\"/\u003e\n    \u003cextension name=\"Time\" prefix=\"time\" uri=\"http://www.xes-standard.org/time.xesext\"/\u003e\n    \u003cextension name=\"Concept\" prefix=\"concept\" uri=\"http://www.xes-standard.org/concept.xesext\"/\u003e\n    \u003cglobal scope=\"trace\"\u003e\n        \u003cstring key=\"concept:name\" value=\"\"/\u003e\n        \u003cdate key=\"jbpm:start\" value=\"2018-10-15T13:27:16.813+10:00\"/\u003e\n        \u003cstring key=\"jbpm:status\" value=\"\"/\u003e\n        \u003cstring key=\"jbpm:version\" value=\"\"/\u003e\n        \u003cstring key=\"jbpm:description\" value=\"\"/\u003e\n        \u003cint key=\"jbpm:instanceid\" value=\"0\"/\u003e\n        \u003cstring key=\"jbpm:correlationkey\" value=\"\"/\u003e\n        \u003cint key=\"jbpm:logid\" value=\"0\"/\u003e\n    \u003c/global\u003e\n    \u003cglobal scope=\"event\"\u003e\n        \u003cdate key=\"time:timestamp\" value=\"2018-10-15T13:27:16.816+10:00\"/\u003e\n        \u003cstring key=\"concept:name\" value=\"\"/\u003e\n        \u003cstring key=\"org:resource\" value=\"\"/\u003e\n        \u003cstring key=\"lifecycle:transition\" value=\"\"/\u003e\n        \u003cstring key=\"jbpm:nodeinstanceid\" value=\"\"/\u003e\n        \u003cstring key=\"jbpm:nodeid\" value=\"\"/\u003e\n        \u003cstring key=\"jbpm:nodetype\" value=\"\"/\u003e\n        \u003cint key=\"jbpm:logid\" value=\"0\"/\u003e\n    \u003c/global\u003e\n    \u003cclassifier name=\"By Node Name\" keys=\"concept:name\"/\u003e\n    \u003cclassifier name=\"By Node Id\" keys=\"jbpm:nodeid\"/\u003e\n    \u003cclassifier name=\"By Name and Transition\" keys=\"concept:name lifecycle:transition\"/\u003e\n    \u003cclassifier name=\"By Resource\" keys=\"org:resource\"/\u003e\n    \u003cstring key=\"source\" value=\"jBPM\"/\u003e\n    \u003cstring key=\"lifecycle:model\" value=\"standard\"/\u003e\n    \u003cstring key=\"jbpm:processid\" value=\"hello\"/\u003e\n    \u003ctrace\u003e\n        \u003cstring key=\"concept:name\" value=\"1\"/\u003e\n        \u003cint key=\"jbpm:logid\" value=\"1\"/\u003e\n        \u003cstring key=\"jbpm:correlationkey\" value=\"1\"/\u003e\n        \u003cstring key=\"jbpm:version\" value=\"1.0\"/\u003e\n        \u003cstring key=\"jbpm:description\" value=\"Hello Process\"/\u003e\n        \u003cint key=\"jbpm:instanceid\" value=\"1\"/\u003e\n        \u003cdate key=\"jbpm:start\" value=\"2018-10-15T13:27:16.137+10:00\"/\u003e\n        \u003cdate key=\"jbpm:end\" value=\"2018-10-15T13:27:16.176+10:00\"/\u003e\n        \u003cstring key=\"jbpm:status\" value=\"completed\"/\u003e\n        \u003cint key=\"jbpm:slacompliance\" value=\"0\"/\u003e\n        \u003cevent\u003e\n            \u003cdate key=\"time:timestamp\" value=\"2018-10-15T13:27:16.151+10:00\"/\u003e\n            \u003cstring key=\"concept:name\" value=\"Start\"/\u003e\n            \u003cstring key=\"concept:instance\" value=\"0\"/\u003e\n            \u003cstring key=\"lifecycle:transition\" value=\"start\"/\u003e\n            \u003cstring key=\"jbpm:nodeinstanceid\" value=\"0\"/\u003e\n            \u003cint key=\"jbpm:logid\" value=\"1\"/\u003e\n            \u003cstring key=\"jbpm:nodeid\" value=\"_1\"/\u003e\n            \u003cstring key=\"jbpm:nodename\" value=\"Start\"/\u003e\n            \u003cstring key=\"jbpm:nodetype\" value=\"StartNode\"/\u003e\n            \u003cstring key=\"org:resource\" value=\"jbpm\"/\u003e\n        \u003c/event\u003e\n        \u003cevent\u003e\n            \u003cdate key=\"time:timestamp\" value=\"2018-10-15T13:27:16.153+10:00\"/\u003e\n            \u003cstring key=\"concept:name\" value=\"Start\"/\u003e\n            \u003cstring key=\"concept:instance\" value=\"0\"/\u003e\n            \u003cstring key=\"lifecycle:transition\" value=\"complete\"/\u003e\n            \u003cstring key=\"jbpm:nodeinstanceid\" value=\"0\"/\u003e\n            \u003cint key=\"jbpm:logid\" value=\"2\"/\u003e\n            \u003cstring key=\"jbpm:nodeid\" value=\"_1\"/\u003e\n            \u003cstring key=\"jbpm:nodename\" value=\"Start\"/\u003e\n            \u003cstring key=\"jbpm:nodetype\" value=\"StartNode\"/\u003e\n            \u003cstring key=\"org:resource\" value=\"jbpm\"/\u003e\n        \u003c/event\u003e\n        \u003cevent\u003e\n            \u003cdate key=\"time:timestamp\" value=\"2018-10-15T13:27:16.154+10:00\"/\u003e\n            \u003cstring key=\"concept:name\" value=\"Hello\"/\u003e\n            \u003cstring key=\"concept:instance\" value=\"1\"/\u003e\n            \u003cstring key=\"lifecycle:transition\" value=\"start\"/\u003e\n            \u003cstring key=\"jbpm:nodeinstanceid\" value=\"1\"/\u003e\n            \u003cint key=\"jbpm:logid\" value=\"3\"/\u003e\n            \u003cstring key=\"jbpm:nodeid\" value=\"_2\"/\u003e\n            \u003cstring key=\"jbpm:nodename\" value=\"Hello\"/\u003e\n            \u003cstring key=\"jbpm:nodetype\" value=\"ActionNode\"/\u003e\n            \u003cstring key=\"org:resource\" value=\"jbpm\"/\u003e\n        \u003c/event\u003e\n        \u003cevent\u003e\n            \u003cdate key=\"time:timestamp\" value=\"2018-10-15T13:27:16.156+10:00\"/\u003e\n            \u003cstring key=\"concept:name\" value=\"Hello\"/\u003e\n            \u003cstring key=\"concept:instance\" value=\"1\"/\u003e\n            \u003cstring key=\"lifecycle:transition\" value=\"complete\"/\u003e\n            \u003cstring key=\"jbpm:nodeinstanceid\" value=\"1\"/\u003e\n            \u003cint key=\"jbpm:logid\" value=\"4\"/\u003e\n            \u003cstring key=\"jbpm:nodeid\" value=\"_2\"/\u003e\n            \u003cstring key=\"jbpm:nodename\" value=\"Hello\"/\u003e\n            \u003cstring key=\"jbpm:nodetype\" value=\"ActionNode\"/\u003e\n            \u003cstring key=\"org:resource\" value=\"jbpm\"/\u003e\n        \u003c/event\u003e\n        \u003cevent\u003e\n            \u003cdate key=\"time:timestamp\" value=\"2018-10-15T13:27:16.156+10:00\"/\u003e\n            \u003cstring key=\"concept:name\" value=\"End\"/\u003e\n            \u003cstring key=\"concept:instance\" value=\"2\"/\u003e\n            \u003cstring key=\"lifecycle:transition\" value=\"start\"/\u003e\n            \u003cstring key=\"jbpm:nodeinstanceid\" value=\"2\"/\u003e\n            \u003cint key=\"jbpm:logid\" value=\"5\"/\u003e\n            \u003cstring key=\"jbpm:nodeid\" value=\"_3\"/\u003e\n            \u003cstring key=\"jbpm:nodename\" value=\"End\"/\u003e\n            \u003cstring key=\"jbpm:nodetype\" value=\"EndNode\"/\u003e\n            \u003cstring key=\"org:resource\" value=\"jbpm\"/\u003e\n        \u003c/event\u003e\n        \u003cevent\u003e\n            \u003cdate key=\"time:timestamp\" value=\"2018-10-15T13:27:16.157+10:00\"/\u003e\n            \u003cstring key=\"concept:name\" value=\"End\"/\u003e\n            \u003cstring key=\"concept:instance\" value=\"2\"/\u003e\n            \u003cstring key=\"lifecycle:transition\" value=\"complete\"/\u003e\n            \u003cstring key=\"jbpm:nodeinstanceid\" value=\"2\"/\u003e\n            \u003cint key=\"jbpm:logid\" value=\"6\"/\u003e\n            \u003cstring key=\"jbpm:nodeid\" value=\"_3\"/\u003e\n            \u003cstring key=\"jbpm:nodename\" value=\"End\"/\u003e\n            \u003cstring key=\"jbpm:nodetype\" value=\"EndNode\"/\u003e\n            \u003cstring key=\"org:resource\" value=\"jbpm\"/\u003e\n        \u003c/event\u003e\n    \u003c/trace\u003e\n\u003c/log\u003e\n```\n\n## How it works\n\nThe jBPM XES Export tool, connects directly to the jBPM log database in order to extract the relevant information.\nIf you intend to export any logs, please ensure that you use the `JPA` as your KJAR's audit mode.\nThe tool will look into the `ProcessInstanceLog` and `NodeInstanceLog` tables and filter the data based on the parameters you provided to export.\nAs a primary rule for the the XES log, only one process can be exported at time, for that we use the `-process` parameter where you can specify\nthe process definition id you would that to filter on. That will filter down the logs to only process instances that matches the paramter.\nYou can also use other filters like `version`, `status`, and more.  \n\n## Usage\n\nOut-of-box, the jBPM XES Export tool allows you to connect with the following databases:\n- H2\n- MariaDB\n- MySQL\n- PostgreSQL\n\nTo use another database, simply provide the additional jar in the classpath of the application.\n\n### Options\n\nThe tool allows a series of custom parameters to fine tune which logs should be exported, to see the full list of options please execute:\n\n```\njava -jar target/jbpm-xes-1.0.0-SNAPSHOT-jar-with-dependencies.jar \n```\n\nWhich will outcome the following:\n\n```\nusage: xes -driver \u003cdriver\u003e [-file \u003cfile\u003e] [-logtype \u003clogtype\u003e]\n       [-nodetypes] [-password \u003cpassword\u003e] -process \u003cprocess\u003e [-status\n       \u003cstatus\u003e] -url \u003curl\u003e -user \u003cuser\u003e [-version \u003cversion\u003e]\n -driver \u003cdriver\u003e       Database driver class name\n -file \u003cfile\u003e           File name to save result XES. Default will print\n                        in the console.\n -logtype \u003clogtype\u003e     Use 0 for node entered events or 1 for exit\n                        events. Default will export all types.\n -nodetypes             Export all node type. Default will only export\n                        relevant activities.\n -password \u003cpassword\u003e   Database password\n -process \u003cprocess\u003e     Process Id to export\n -status \u003cstatus\u003e       Process status to export\n -url \u003curl\u003e             Database url\n -user \u003cuser\u003e           Database username\n -version \u003cversion\u003e     Process version to export\n```\n\n### Example using a local H2 database file\n\n```\njava -jar target/jbpm-xes-1.0.0-SNAPSHOT-jar-with-dependencies.jar -driver org.h2.Driver -user sa -password sa -url jdbc:h2:file:./spring-boot-jbpm -process evaluation -file jbpm.xes\n```\n\n### Example using MySQL database\n\n```\njava -jar target/jbpm-xes-1.0.0-SNAPSHOT-jar-with-dependencies.jar -driver com.mysql.jdbc.Driver -user jbpm -password jbpm -url jdbc:mysql://localhost/jbpm -process evaluation -file evaluation.xes\n```\n\n## Feedback\n\nFeel free to open issues if you face any problems using this tool, we would love to help you in your process mining journey!","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcristianonicolai%2Fjbpm-xes","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcristianonicolai%2Fjbpm-xes","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcristianonicolai%2Fjbpm-xes/lists"}