├── .github
├── ISSUE_TEMPLATE
│ ├── bug_report.md
│ ├── feature_request.md
│ └── question.md
└── workflows
│ ├── maven-publish.yml
│ └── maven.yml
├── .gitignore
├── .travis.yml
├── .vscode
├── extensions.json
└── settings.json
├── COPYRIGHT
├── ISSUE_922.md
├── LICENSE
├── MIGRATIONNOTES.md
├── README.md
├── SECURITY.md
├── imixs-checkstyle-8.44.xml
├── imixs-code-style.xml
├── imixs-workflow-core
├── pom.xml
└── src
│ ├── main
│ ├── java
│ │ └── org
│ │ │ └── imixs
│ │ │ └── workflow
│ │ │ ├── Adapter.java
│ │ │ ├── FileData.java
│ │ │ ├── GenericAdapter.java
│ │ │ ├── ItemCollection.java
│ │ │ ├── ItemCollectionComparator.java
│ │ │ ├── ModelManager.java
│ │ │ ├── Plugin.java
│ │ │ ├── PluginDependency.java
│ │ │ ├── QuerySelector.java
│ │ │ ├── RuleEngine.java
│ │ │ ├── RuleEngineNashornConverter.java
│ │ │ ├── SignalAdapter.java
│ │ │ ├── WorkflowContext.java
│ │ │ ├── WorkflowKernel.java
│ │ │ ├── bpmn
│ │ │ ├── BPMNEntityBuilder.java
│ │ │ ├── BPMNLinkedFlowIterator.java
│ │ │ └── BPMNUtil.java
│ │ │ ├── exceptions
│ │ │ ├── AccessDeniedException.java
│ │ │ ├── AdapterException.java
│ │ │ ├── ImixsExceptionHandler.java
│ │ │ ├── IndexException.java
│ │ │ ├── InvalidAccessException.java
│ │ │ ├── ModelException.java
│ │ │ ├── PluginException.java
│ │ │ ├── ProcessingErrorException.java
│ │ │ ├── QueryException.java
│ │ │ └── WorkflowException.java
│ │ │ ├── services
│ │ │ └── rest
│ │ │ │ ├── BasicAuthenticator.java
│ │ │ │ ├── FormAuthenticator.java
│ │ │ │ ├── JWTAuthenticator.java
│ │ │ │ ├── RequestFilter.java
│ │ │ │ ├── RestAPIException.java
│ │ │ │ └── RestClient.java
│ │ │ ├── util
│ │ │ ├── ImixsJSONBuilder.java
│ │ │ ├── ImixsJSONParser.java
│ │ │ ├── JSONParser.java
│ │ │ └── XMLParser.java
│ │ │ └── xml
│ │ │ ├── DocumentTable.java
│ │ │ ├── XMLCount.java
│ │ │ ├── XMLDataCollection.java
│ │ │ ├── XMLDataCollectionAdapter.java
│ │ │ ├── XMLDocument.java
│ │ │ ├── XMLDocumentAdapter.java
│ │ │ ├── XMLItem.java
│ │ │ ├── XMLItemComparator.java
│ │ │ ├── XSLHandler.java
│ │ │ ├── imixs-workflow.xsd
│ │ │ └── package-info.java
│ └── resources
│ │ ├── META-INF
│ │ ├── COPYRIGHT
│ │ └── LICENSE
│ │ └── dataobjects.xsd
│ └── test
│ ├── java
│ └── org
│ │ └── imixs
│ │ └── workflow
│ │ ├── MockPlugin.java
│ │ ├── MockPluginNull.java
│ │ ├── MockWorkflowContext.java
│ │ ├── TestItemCollection.java
│ │ ├── TestRuleEngine.java
│ │ ├── TestRuleEngineGraalJS.java
│ │ ├── TestRuleEngineGraalJSDeprecatedScripts.java
│ │ ├── bpmn
│ │ ├── TestBPMNParserCollaborationMinutes.java
│ │ ├── TestBPMNParserDataObject.java
│ │ ├── TestBPMNParserGroups.java
│ │ ├── TestBPMNParserMessageText.java
│ │ ├── TestBPMNParserSharedEvent.java
│ │ ├── TestBPMNParserSharedLinkEvent.java
│ │ ├── TestBPMNParserTaskAnnotation.java
│ │ ├── TestBPMNParserTicket.java
│ │ ├── TestBPMNProperties.java
│ │ ├── TestBPMNUtil.java
│ │ ├── TestModelManager.java
│ │ ├── TestModelManagerAsyncEvent.java
│ │ ├── TestModelManagerCollaboration.java
│ │ ├── TestModelManagerCollaborationMessageFlow.java
│ │ ├── TestModelManagerInitEvents.java
│ │ ├── TestModelManagerMultipleTaskTypes.java
│ │ └── TestModelManagerParserAdapter.java
│ │ ├── kernel
│ │ ├── TestBPMNLinkEvent.java
│ │ ├── TestBPMNModelSwitchEvent.java
│ │ ├── TestBPMNParserConditionalEvents.java
│ │ ├── TestBPMNParserRuleEvents.java
│ │ ├── TestBPMNSplitEvents.java
│ │ ├── TestBPMNStartEventWithFollowUp.java
│ │ ├── TestWorkflowKernelBasic.java
│ │ ├── TestWorkflowKernelComplex_Issue_823.java
│ │ ├── TestWorkflowKernelEval.java
│ │ ├── TestWorkflowKernelLoop.java
│ │ ├── TestWorkflowKernelModels.java
│ │ └── TestWorkflowKernelPluginRegistration.java
│ │ ├── util
│ │ ├── TestImixsJSONParser.java
│ │ ├── TestJSONBuilder.java
│ │ ├── TestJSONParserSimple.java
│ │ └── TestJSONParserWorkitem.java
│ │ └── xml
│ │ ├── TestReadWriteByteArray.java
│ │ ├── TestReadWriteXMLData.java
│ │ ├── TestWriteXMLData.java
│ │ ├── TestXMLItem.java
│ │ ├── TestXMLItemCollectionAdapter.java
│ │ └── TestXMLParser.java
│ └── resources
│ ├── .gitignore
│ ├── bpmn
│ ├── adapter-demo.bpmn
│ ├── adapter.bpmn
│ ├── adapter_multi.bpmn
│ ├── annotation_example.bpmn
│ ├── asyncEventSimple.bpmn
│ ├── collaboration.bpmn
│ ├── collaboration_messageflow.bpmn
│ ├── collaboration_messageflow_complex.bpmn
│ ├── conditional_complex_event0.bpmn
│ ├── conditional_event1.bpmn
│ ├── conditional_event2.bpmn
│ ├── conditional_event3.bpmn
│ ├── conditional_event_default.bpmn
│ ├── conditional_split_event.bpmn
│ ├── dataobject_example1.bpmn
│ ├── dataobject_example2.bpmn
│ ├── event_rules.bpmn
│ ├── followup_001.bpmn
│ ├── followup_002.bpmn
│ ├── link-event-basic.bpmn
│ ├── link-event-complex.bpmn
│ ├── link-event-followup.bpmn
│ ├── loop-event.bpmn
│ ├── message_example.bpmn
│ ├── minutes.bpmn
│ ├── model-switch-source.bpmn
│ ├── model-switch-target.bpmn
│ ├── multi-groups.bpmn
│ ├── properties.bpmn
│ ├── recursive_issue1.bpmn
│ ├── shared-link-event.bpmn
│ ├── shared_event1.bpmn
│ ├── shared_event2.bpmn
│ ├── shared_event3.bpmn
│ ├── shared_event4.bpmn
│ ├── shared_event5.bpmn
│ ├── simple-multiple-tasktypes.bpmn
│ ├── simple-startevent.bpmn
│ ├── simple.bpmn
│ ├── simple_loop.bpmn
│ ├── split_event1.bpmn
│ ├── split_event_invalid_1.bpmn
│ ├── split_event_invalid_2.bpmn
│ ├── split_event_invalid_3.bpmn
│ ├── split_event_with_condition.bpmn
│ ├── startevent.bpmn
│ ├── startevent_followup.bpmn
│ ├── ticket.bpmn
│ ├── workflowkernel_eval.bpmn
│ └── workflowkernel_eval_parallelgateway.bpmn
│ ├── document-example.xml
│ ├── export-test.xml
│ ├── json
│ ├── complex_content.json
│ ├── corrupted.json
│ ├── multidocuments.json
│ ├── simple.json
│ ├── simple_content.json
│ ├── simple_numbers.json
│ └── workitem.json
│ ├── model.ixm
│ └── office-de-2.1.2.ixm
├── imixs-workflow-engine
├── pom.xml
└── src
│ ├── main
│ ├── java
│ │ └── org
│ │ │ └── imixs
│ │ │ └── workflow
│ │ │ └── engine
│ │ │ ├── AsyncEventScheduler.java
│ │ │ ├── AsyncEventSchedulerConfig.java
│ │ │ ├── AsyncEventService.java
│ │ │ ├── DocumentEvent.java
│ │ │ ├── DocumentService.java
│ │ │ ├── EventLogService.java
│ │ │ ├── HealthCheckService.java
│ │ │ ├── ImixsConfigSource.java
│ │ │ ├── MetricService.java
│ │ │ ├── ModelService.java
│ │ │ ├── ProcessingEvent.java
│ │ │ ├── ReportService.java
│ │ │ ├── SetupEvent.java
│ │ │ ├── SetupService.java
│ │ │ ├── TextEvent.java
│ │ │ ├── TextForEachAdapter.java
│ │ │ ├── TextItemValueAdapter.java
│ │ │ ├── TextPropertyValueAdapter.java
│ │ │ ├── UserGroupEvent.java
│ │ │ ├── WorkflowScheduler.java
│ │ │ ├── WorkflowSchedulerController.java
│ │ │ ├── WorkflowService.java
│ │ │ ├── adapters
│ │ │ └── AccessAdapter.java
│ │ │ ├── adminp
│ │ │ ├── AdminPException.java
│ │ │ ├── AdminPService.java
│ │ │ ├── JobHandler.java
│ │ │ ├── JobHandlerRebuildIndex.java
│ │ │ ├── JobHandlerRenameUser.java
│ │ │ └── JobHandlerUpgradeWorkitems.java
│ │ │ ├── index
│ │ │ ├── Category.java
│ │ │ ├── DefaultOperator.java
│ │ │ ├── IndexEvent.java
│ │ │ ├── SchemaService.java
│ │ │ ├── SearchService.java
│ │ │ ├── SortOrder.java
│ │ │ └── UpdateService.java
│ │ │ ├── jpa
│ │ │ ├── Document.java
│ │ │ └── EventLog.java
│ │ │ ├── plugins
│ │ │ ├── AbstractPlugin.java
│ │ │ ├── AccessPlugin.java
│ │ │ ├── AnalysisPlugin.java
│ │ │ ├── ApplicationPlugin.java
│ │ │ ├── ApproverPlugin.java
│ │ │ ├── DocumentComposerPlugin.java
│ │ │ ├── EventLogPlugin.java
│ │ │ ├── HistoryPlugin.java
│ │ │ ├── IntervalPlugin.java
│ │ │ ├── LogPlugin.java
│ │ │ ├── MailPlugin.java
│ │ │ ├── OwnerPlugin.java
│ │ │ ├── ReportPlugin.java
│ │ │ ├── ResultPlugin.java
│ │ │ ├── RulePlugin.java
│ │ │ ├── SplitAndJoinPlugin.java
│ │ │ ├── TaxonomyPlugin.java
│ │ │ └── VersionPlugin.java
│ │ │ └── scheduler
│ │ │ ├── Scheduler.java
│ │ │ ├── SchedulerConfigurationService.java
│ │ │ ├── SchedulerController.java
│ │ │ ├── SchedulerException.java
│ │ │ └── SchedulerService.java
│ └── resources
│ │ └── META-INF
│ │ ├── COPYRIGHT
│ │ ├── LICENSE
│ │ ├── beans.xml
│ │ └── services
│ │ └── org.eclipse.microprofile.config.spi.ConfigSource
│ └── test
│ ├── java
│ └── org
│ │ └── imixs
│ │ └── workflow
│ │ ├── engine
│ │ ├── MockWorkflowEnvironment.java
│ │ ├── TestAdaptText.java
│ │ ├── TestDocumentServiceRegex.java
│ │ ├── TestEvaluateWorkflowResult.java
│ │ ├── TestModelService.java
│ │ ├── TestReportService.java
│ │ ├── TestTemplate.java
│ │ ├── TestWorkflowScheduler.java
│ │ ├── TestWorkflowService.java
│ │ ├── TestWorkflowServiceGateways.java
│ │ ├── adapters
│ │ │ ├── TestAccessAdapter.java
│ │ │ └── TestAccessAdapterTask.java
│ │ └── index
│ │ │ └── TestNormalizePhrase.java
│ │ └── plugins
│ │ ├── TestAnalysisPlugin.java
│ │ ├── TestApplicationPlugin.java
│ │ ├── TestApproverPlugin.java
│ │ ├── TestApproverResetPlugin.java
│ │ ├── TestIntervalPlugin.java
│ │ ├── TestMailPlugin.java
│ │ ├── TestOwnerPlugin.java
│ │ ├── TestOwnerPluginProcessEntity.java
│ │ ├── TestResultPlugin.java
│ │ ├── TestRulePlugin.java
│ │ ├── TestRulePluginConditions.java
│ │ ├── TestScheduler.java
│ │ ├── TestSplitAndJoinPlugin.java
│ │ └── TestSplitAndJoinPluginDeprecatedItemTag.java
│ └── resources
│ └── bpmn
│ ├── TestAccessAdapterTask.bpmn
│ ├── TestAccessPlugin.bpmn
│ ├── TestApproverPlugin.bpmn
│ ├── TestApproverPluginReset.bpmn
│ ├── TestApproverPluginWithRules.bpmn
│ ├── TestIntervalPlugin.bpmn
│ ├── TestOwnerAndACL.bpmn
│ ├── TestOwnerPlugin.bpmn
│ ├── TestOwnerPluginWithEval.bpmn
│ ├── TestResultPlugin.bpmn
│ ├── TestRulePluginConditions.bpmn
│ ├── TestSplitAndJoinPlugin.bpmn
│ ├── TestSplitAndJoinPluginDeprecatedItemTag.bpmn
│ ├── TestStreamEvent.bpmn
│ ├── TestStreamEventSimple.bpmn
│ ├── TestWorkflowService.bpmn
│ ├── conditional_default_event.bpmn
│ ├── conditional_event1.bpmn
│ ├── plugin-test.bpmn
│ └── split_event1.bpmn
├── imixs-workflow-faces
├── java
│ └── org
│ │ └── imixs
│ │ └── workflow
│ │ ├── engine
│ │ ├── ModelPluginMock.java
│ │ ├── TestAdaptForEach.java
│ │ ├── TestAdaptText.java
│ │ ├── TestEvaluateWorkflowResult.java
│ │ ├── TestModelService.java
│ │ ├── TestReportService.java
│ │ ├── TestSimulationService.java
│ │ ├── TestWorkflowScheduler.java
│ │ ├── TestWorkflowService.java
│ │ ├── TestWorkflowServiceGateways.java
│ │ ├── WorkflowMockEnvironment.java
│ │ ├── WorkflowSimulationEnvironment.java
│ │ ├── adapters
│ │ │ ├── TestAccessAdapter.java
│ │ │ └── TestAccessAdapterProcessEntity.java
│ │ └── index
│ │ │ └── TestNormalizePhrase.java
│ │ └── plugins
│ │ ├── TestAnalysisPlugin.java
│ │ ├── TestApplicationPlugin.java
│ │ ├── TestApproverPlugin.java
│ │ ├── TestApproverResetPlugin.java
│ │ ├── TestIntervalPlugin.java
│ │ ├── TestMailPlugin.java
│ │ ├── TestOwnerPlugin.java
│ │ ├── TestOwnerPluginProcessEntity.java
│ │ ├── TestResultPlugin.java
│ │ ├── TestRulePlugin.java
│ │ ├── TestRulePluginConditions.java
│ │ ├── TestScheduler.java
│ │ └── TestSplitAndJoinPlugin.java
├── pom.xml
└── src
│ ├── main
│ ├── java
│ │ └── org
│ │ │ └── imixs
│ │ │ └── workflow
│ │ │ └── faces
│ │ │ ├── data
│ │ │ ├── AbstractDataController.java
│ │ │ ├── DocumentController.java
│ │ │ ├── ViewController.java
│ │ │ ├── ViewHandler.java
│ │ │ ├── WorkflowController.java
│ │ │ └── WorkflowEvent.java
│ │ │ ├── fileupload
│ │ │ ├── AjaxFileUploadServlet.java
│ │ │ └── FileUploadController.java
│ │ │ └── util
│ │ │ ├── ErrorHandler.java
│ │ │ ├── LoginController.java
│ │ │ ├── ResourceBundleHandler.java
│ │ │ ├── SelectItemComparator.java
│ │ │ ├── ValidationException.java
│ │ │ ├── VectorConverter.java
│ │ │ ├── VectorIntegerConverter.java
│ │ │ ├── ViewExpiredExceptionHandler.java
│ │ │ └── ViewExpiredExceptionHandlerFactory.java
│ └── resources
│ │ └── META-INF
│ │ ├── web-fragment.xml
│ │ ├── COPYRIGHT
│ │ ├── LICENSE
│ │ ├── beans.xml
│ │ ├── faces-config.xml
│ │ └── resources
│ │ └── imixs
│ │ ├── css
│ │ └── imixs.css
│ │ ├── imixs-faces.js
│ │ ├── imixsDateInput.xhtml
│ │ ├── imixsFileUpload.xhtml
│ │ ├── imixsFileUploadAjax.xhtml
│ │ ├── imixsHeader.xhtml
│ │ ├── imixsWorkflowActions.xhtml
│ │ ├── jquery
│ │ ├── jquery-3.5.1.min.js
│ │ ├── jquery.fileupload.js
│ │ ├── jquery.iframe-transport.js
│ │ ├── jquery.ui.datepicker-de.js
│ │ └── themes
│ │ │ └── imixs
│ │ │ ├── AUTHORS.txt
│ │ │ ├── LICENSE.txt
│ │ │ ├── README
│ │ │ ├── external
│ │ │ └── jquery
│ │ │ │ └── jquery.js
│ │ │ ├── images
│ │ │ ├── ui-icons_206B87_256x240.png
│ │ │ ├── ui-icons_333333_256x240.png
│ │ │ ├── ui-icons_cc0000_256x240.png
│ │ │ ├── ui-icons_fff_256x240.png
│ │ │ └── ui-icons_ffffff_256x240.png
│ │ │ ├── index.html
│ │ │ ├── jquery-ui.css
│ │ │ ├── jquery-ui.js
│ │ │ ├── jquery-ui.min.css
│ │ │ ├── jquery-ui.min.js
│ │ │ ├── jquery-ui.structure.css
│ │ │ ├── jquery-ui.structure.min.css
│ │ │ ├── jquery-ui.theme.css
│ │ │ ├── jquery-ui.theme.min.css
│ │ │ └── package.json
│ │ └── test.html
│ └── test
│ └── java
│ └── org
│ └── imixs
│ └── workflow
│ └── jee
│ └── faces
│ └── workitem
│ └── DataControllerTest.java
├── imixs-workflow-index-lucene
├── pom.xml
└── src
│ ├── main
│ ├── java
│ │ └── org
│ │ │ └── imixs
│ │ │ └── workflow
│ │ │ └── engine
│ │ │ └── lucene
│ │ │ ├── LuceneIndexService.java
│ │ │ ├── LuceneItemAdapter.java
│ │ │ ├── LuceneSearchService.java
│ │ │ └── LuceneUpdateService.java
│ └── resources
│ │ └── META-INF
│ │ ├── COPYRIGHT
│ │ ├── LICENSE
│ │ └── beans.xml
│ └── test
│ └── java
│ └── org
│ └── imixs
│ └── workflow
│ └── engine
│ └── lucene
│ ├── ExtendedFacetsExample.java
│ └── SimpleFacetsExample.java
├── imixs-workflow-index-solr
├── pom.xml
└── src
│ ├── main
│ ├── java
│ │ └── org
│ │ │ └── imixs
│ │ │ └── workflow
│ │ │ └── engine
│ │ │ └── solr
│ │ │ ├── SolrAutoFlushScheduler.java
│ │ │ ├── SolrIndexService.java
│ │ │ ├── SolrSearchService.java
│ │ │ └── SolrUpdateService.java
│ └── resources
│ │ └── META-INF
│ │ ├── COPYRIGHT
│ │ ├── LICENSE
│ │ └── beans.xml
│ └── test
│ └── java
│ └── org
│ └── imixs
│ └── workflow
│ └── engine
│ └── solr
│ ├── TestParseSolrJSONResult.java
│ └── TestStripInvalidCharacters.java
├── imixs-workflow-jax-rs
├── pom.xml
└── src
│ ├── main
│ ├── java
│ │ └── org
│ │ │ └── imixs
│ │ │ └── workflow
│ │ │ └── jaxrs
│ │ │ ├── AdminPRestService.java
│ │ │ ├── DocumentCollectionWriter.java
│ │ │ ├── DocumentRestService.java
│ │ │ ├── DocumentTableWriter.java
│ │ │ ├── EventLogRestService.java
│ │ │ ├── ModelRestService.java
│ │ │ ├── ReportRestService.java
│ │ │ ├── RestAPIUtil.java
│ │ │ ├── RootRestService.java
│ │ │ ├── WorkflowRestService.java
│ │ │ └── XMLItemCollectionWriter.java
│ ├── resources
│ │ └── META-INF
│ │ │ ├── COPYRIGHT
│ │ │ ├── LICENSE
│ │ │ └── beans.xml
│ └── webapp
│ │ └── WEB-INF
│ │ ├── README
│ │ ├── sun-web.xml
│ │ └── web.xml
│ └── test
│ └── java
│ └── org
│ └── imixs
│ └── workflow
│ └── jaxrs
│ └── TestReportService.java
├── jakarta_ee_logo.png
├── pom.xml
├── screen_001.png
├── screen_002.png
├── screen_003.png
├── small_h-trans.png
└── src
└── site
├── README.md
├── REVIEW.md
├── markdown
├── administration.md
├── architecture
│ ├── datastreaming.md
│ └── microservice.md
├── contributing.md
├── core
│ ├── adapter-api.md
│ ├── index.md
│ ├── itemcollection.md
│ ├── model.md
│ ├── plugin-api.md
│ ├── ruleengine.md
│ ├── workflowkernel.md
│ ├── workflowmanager.md
│ └── xml
│ │ ├── adapter.md
│ │ ├── index.md
│ │ ├── marshal.md
│ │ ├── post_xml.md
│ │ └── transform_xml.md
├── deployment
│ ├── concurrency.md
│ ├── database_schema.md
│ ├── deployment_guide.md
│ ├── glassfish.md
│ ├── index.md
│ ├── security.md
│ ├── tomee.md
│ └── wildfly.md
├── docker.md
├── engine
│ ├── acl.md
│ ├── adapters
│ │ └── accessadapter.md
│ ├── adapttext.md
│ ├── adminp.md
│ ├── asyncevents.md
│ ├── configsource.md
│ ├── documentservice.md
│ ├── eventlogservice.md
│ ├── eventprocessing.md
│ ├── healthcheck.md
│ ├── index.md
│ ├── lucenerepair.md
│ ├── luceneservice.md
│ ├── metrics.md
│ ├── modelservice.md
│ ├── plugins
│ │ ├── analysisplugin.md
│ │ ├── applicationplugin.md
│ │ ├── approverplugin.md
│ │ ├── documentcomposerplugin.md
│ │ ├── exception_handling.md
│ │ ├── historyplugin.md
│ │ ├── howto_extend.md
│ │ ├── index.md
│ │ ├── intervalplugin.md
│ │ ├── mailplugin.md
│ │ ├── ownerplugin.md
│ │ ├── resultplugin.md
│ │ ├── ruleplugin.md
│ │ ├── splitandjoinplugin.md
│ │ ├── taxonomyplugin.md
│ │ └── versionplugin.md
│ ├── propertyservice.md
│ ├── queries.md
│ ├── remote_lookup.md
│ ├── scheduler.md
│ ├── scheduling.md
│ ├── setupservice.md
│ ├── workflowscheduler.md
│ └── workflowservice.md
├── goals.md
├── index.md
├── javascript
│ ├── documents.md
│ ├── index.md
│ ├── layout.md
│ └── xml.md
├── logging.md
├── maven.md
├── modelling
│ ├── activities.md
│ ├── create_model.md
│ ├── dataobject.md
│ ├── deployment.md
│ ├── eclipse_workbench.md
│ ├── howto.md
│ ├── index.md
│ ├── install.md
│ ├── main_editor.md
│ ├── overview.md
│ ├── process.md
│ ├── report_plugin.md
│ └── textreplacement.md
├── processmanager.md
├── quickstart-old.md
├── quickstart.md
├── quickstart
│ ├── human.md
│ ├── roles_responsibilities.md
│ ├── why.md
│ └── workitem.md
├── restapi
│ ├── adminp.md
│ ├── documentservice.md
│ ├── eventlogservice.md
│ ├── index.md
│ ├── modelservice.md
│ ├── reportservice.md
│ ├── restclient.md
│ ├── workflowservice.md
│ └── xslt.md
├── sampleapplication.md
├── testing.md
├── tutorials
│ └── tutorial-01.md
├── webforms
│ ├── forms.md
│ ├── index.md
│ └── xml.md
└── webtools
│ ├── controller.md
│ ├── datepicker.md
│ ├── examples.md
│ ├── fileupload.md
│ ├── header.md
│ ├── index.md
│ ├── resourcebundle.md
│ ├── tinymce.md
│ ├── tooltip.md
│ └── workflowactions.md
├── resources
├── bpmn
│ ├── example01.bpmn
│ ├── example02.bpmn
│ ├── example3.bpmn
│ ├── order.bpmn
│ ├── purchase.bpmn
│ ├── splitandjoin-example-01.bpmn
│ └── ticket-en-1.0.0.bpmn
├── images
│ ├── adapter_api.png
│ ├── adapter_error_handling.png
│ ├── analysisplugin.png
│ ├── api-architecture.gif
│ ├── approverplugin.png
│ ├── bpmn-example01.png
│ ├── bpmn-example02.png
│ ├── docker_small_h-trans.png
│ ├── engine
│ │ ├── imixs-architecture_jee.png
│ │ ├── imixs-metrics-grafana-768x376.png
│ │ ├── imixs-metrics-prometheus-768x448.png
│ │ └── split-and-join-ref.png
│ ├── imixs-admin-client-01.png
│ ├── imixs-admin-client-02.png
│ ├── imixs-admin-client-03.png
│ ├── imixs-admin-client-04.png
│ ├── imixs-admin-client-05.png
│ ├── imixs-engine.odg
│ ├── imixs-engine.png
│ ├── imixs-forms-01.png
│ ├── imixs-forms-02.png
│ ├── imixs-forms-03.png
│ ├── imixs-logo-text.png
│ ├── imixs-logo-text_soft.png
│ ├── imixs-overview.odg
│ ├── imixs-overview.png
│ ├── imixs-sample-application-01.png
│ ├── imixs-tutorial-01.png
│ ├── imixs-tutorial-02.png
│ ├── imixs-tutorial-03.png
│ ├── imixs-tutorial-04.png
│ ├── imixs-tutorial-05.png
│ ├── imixs-tutorial-06.png
│ ├── imixs-tutorial-07.png
│ ├── imixs-workitem.odg
│ ├── imixs-workitem.png
│ ├── model-ticket.png
│ ├── modelling
│ │ ├── bpmn_screen_00.png
│ │ ├── bpmn_screen_01.png
│ │ ├── bpmn_screen_02.png
│ │ ├── bpmn_screen_03.png
│ │ ├── bpmn_screen_04.png
│ │ ├── bpmn_screen_05.png
│ │ ├── bpmn_screen_06.png
│ │ ├── bpmn_screen_07.png
│ │ ├── bpmn_screen_08.png
│ │ ├── bpmn_screen_09.png
│ │ ├── bpmn_screen_10.png
│ │ ├── bpmn_screen_11.png
│ │ ├── bpmn_screen_12.png
│ │ ├── bpmn_screen_13.png
│ │ ├── bpmn_screen_14.png
│ │ ├── bpmn_screen_15.png
│ │ ├── bpmn_screen_16.png
│ │ ├── bpmn_screen_17.png
│ │ ├── bpmn_screen_18.png
│ │ ├── bpmn_screen_19.png
│ │ ├── bpmn_screen_20.png
│ │ ├── bpmn_screen_21.png
│ │ ├── bpmn_screen_22.png
│ │ ├── bpmn_screen_23.png
│ │ ├── bpmn_screen_24.png
│ │ ├── bpmn_screen_25.png
│ │ ├── bpmn_screen_26.png
│ │ ├── bpmn_screen_27.png
│ │ ├── bpmn_screen_28.png
│ │ ├── bpmn_screen_29.png
│ │ ├── bpmn_screen_30.png
│ │ ├── bpmn_screen_31.png
│ │ ├── bpmn_screen_32.png
│ │ ├── bpmn_screen_33.png
│ │ ├── bpmn_screen_34.png
│ │ ├── bpmn_screen_35.png
│ │ ├── bpmn_screen_36.png
│ │ ├── bpmn_screen_37.png
│ │ ├── bpmn_screen_38.png
│ │ ├── example_01.png
│ │ ├── example_02.png
│ │ ├── example_03.png
│ │ ├── example_04.png
│ │ ├── example_05.png
│ │ ├── example_06.png
│ │ ├── example_07.png
│ │ ├── example_08.png
│ │ ├── example_09.png
│ │ ├── example_10.png
│ │ ├── example_11.png
│ │ ├── example_12.png
│ │ ├── example_13.png
│ │ ├── example_14.png
│ │ ├── install-vscode-01.png
│ │ ├── open-bpmn_screen_01.png
│ │ ├── order-01.png
│ │ ├── order-02.png
│ │ ├── report-01.png
│ │ ├── report-02.png
│ │ ├── report-03.png
│ │ ├── roles_00.png
│ │ ├── roles_01.png
│ │ ├── roles_02.png
│ │ ├── roles_03.png
│ │ ├── roles_04.png
│ │ ├── roles_05.png
│ │ ├── rule_01.png
│ │ └── splitandjoin-example-01.png
│ ├── plugin_api.png
│ ├── process-manager-001.png
│ ├── process-manager-002.png
│ ├── processflow.png
│ ├── script
│ │ ├── architecture.png
│ │ └── imixs-architecture.odg
│ ├── webtools
│ │ ├── fileupload-01.png
│ │ ├── fileupload-02.png
│ │ ├── imixs-architecture.odg
│ │ ├── imixs-architecture_web.png
│ │ ├── screenshot_001.png
│ │ ├── screenshot_002.png
│ │ └── screenshot_003.png
│ └── xml
│ │ ├── xmlDataCollection.png
│ │ ├── xmlDocument.png
│ │ ├── xmlItemArray.png
│ │ └── xmlitem.png
├── logos
│ ├── Imixs_square_color.svg
│ ├── Imixs_wide_color.svg
│ ├── logo-01_black.png
│ ├── logo-01_brown.png
│ ├── logo-01_gray.png
│ └── logo-02.png
├── reports
│ ├── demo.imixs-report
│ └── demo.ixr
└── uml
│ ├── adapter_api.png
│ ├── adapter_api.uml
│ ├── analysisplugin.uml
│ ├── plugin_api.png
│ └── plugin_api.uml
├── site-to-sitemap.xsl
├── site.xml
└── uml
├── README.md
├── architecture-external-api.png
└── architecture-external-api.uml
/.github/ISSUE_TEMPLATE/bug_report.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Bug report
3 | about: Create a report to help us improve
4 |
5 | ---
6 |
7 | **Describe the bug**
8 | A clear and concise description of what the bug is.
9 |
10 | **To Reproduce**
11 | Steps to reproduce the behavior:
12 | 1. '...'
13 | 2. '....'
14 | 3. '....'
15 |
16 | **Expected behavior**
17 | A clear and concise description of what you expected to happen.
18 |
19 | **Additional context**
20 | Add any other context about the problem here.
21 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/feature_request.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Feature request
3 | about: Suggest an idea for this project
4 |
5 | ---
6 |
7 | **Is your feature request related to a problem? Please describe.**
8 | A clear and concise description of what the problem is.
9 |
10 | **Describe the solution you'd like**
11 | A clear and concise description of what you want to happen.
12 |
13 | **Describe alternatives you've considered**
14 | A clear and concise description of any alternative solutions or features you've considered.
15 |
16 | **Additional context**
17 | Add any other context or screenshots about the feature request here.
18 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/question.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Question
3 | about: Ask a question and find answers for this project
4 |
5 | ---
6 |
7 | **Is your question related to a problem? Please describe.**
8 | A clear and concise description of what the problem is.
9 |
10 | **Additional context**
11 | Add any other context or screenshots about the question here.
12 |
--------------------------------------------------------------------------------
/.github/workflows/maven-publish.yml:
--------------------------------------------------------------------------------
1 | # This workflow will build a package using Maven and then publish it to GitHub packages when a release is created
2 | # For more information see: https://github.com/actions/setup-java/blob/main/docs/advanced-usage.md#apache-maven-with-a-settings-path
3 |
4 | name: Maven Package
5 |
6 | on:
7 | release:
8 | types: [created]
9 |
10 | jobs:
11 | build:
12 | runs-on: ubuntu-latest
13 | permissions:
14 | contents: read
15 | packages: write
16 |
17 | steps:
18 | - uses: actions/checkout@v3
19 | - name: Set up JDK 17
20 | uses: actions/setup-java@v3
21 | with:
22 | java-version: "17"
23 | distribution: "temurin"
24 | server-id: github # Value of the distributionManagement/repository/id field of the pom.xml
25 | settings-path: ${{ github.workspace }} # location for the settings.xml file
26 |
27 | - name: Build with Maven
28 | run: mvn -B package --file pom.xml
29 |
30 | - name: Publish to GitHub Packages Apache Maven
31 | run: mvn deploy -s $GITHUB_WORKSPACE/settings.xml
32 | env:
33 | GITHUB_TOKEN: ${{ github.token }}
34 |
--------------------------------------------------------------------------------
/.github/workflows/maven.yml:
--------------------------------------------------------------------------------
1 | # This workflow will build a Java project with Maven, and cache/restore any dependencies to improve the workflow execution time
2 | # For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-java-with-maven
3 |
4 | # This workflow uses actions that are not certified by GitHub.
5 | # They are provided by a third-party and are governed by
6 | # separate terms of service, privacy policy, and support
7 | # documentation.
8 |
9 | name: Java CI with Maven
10 |
11 | on:
12 | push:
13 | branches: ["master"]
14 | pull_request:
15 | branches: ["master"]
16 |
17 | jobs:
18 | build:
19 | runs-on: ubuntu-latest
20 |
21 | steps:
22 | - uses: actions/checkout@v3
23 | - name: Set up JDK 17
24 | uses: actions/setup-java@v3
25 | with:
26 | java-version: "17"
27 | distribution: "temurin"
28 | cache: maven
29 | - name: Build with Maven
30 | run: mvn -B package --file pom.xml
31 |
32 | # Optional: Uploads the full dependency graph to GitHub to improve the quality of Dependabot alerts this repository can receive
33 | #- name: Update dependency graph
34 | # uses: advanced-security/maven-dependency-submission-action@571e99aab1055c2e71a1e2309b9691de18d6b7d6
35 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # ignore all bin directories
2 | # matches "bin" in any subfolder
3 | bin/
4 |
5 | # ignore all target directories
6 | target/
7 |
8 | # ignore all files ending with ~
9 | *~
10 |
11 | # ignore eclipse directories and project files
12 | .settings/
13 | .project
14 | .classpath
--------------------------------------------------------------------------------
/.travis.yml:
--------------------------------------------------------------------------------
1 | language: java
2 |
3 | jdk:
4 | # - oraclejdk8
5 | # - openjdk8
6 | - openjdk11
--------------------------------------------------------------------------------
/.vscode/extensions.json:
--------------------------------------------------------------------------------
1 | {
2 | // See http://go.microsoft.com/fwlink/?LinkId=827846 to learn about workspace recommendations.
3 | // Extension identifier format: ${publisher}.${name}. Example: vscode.csharp
4 | // List of extensions which should be recommended for users of this workspace.
5 | "recommendations": ["shengchen.vscode-checkstyle", "vscjava.vscode-java-pack"],
6 | // List of extensions recommended by VS Code that should not be recommended for users of this workspace.
7 | "unwantedRecommendations": []
8 | }
9 |
--------------------------------------------------------------------------------
/.vscode/settings.json:
--------------------------------------------------------------------------------
1 | // If one would like to add/remove/modify user preferences without modifying the content of the
2 | // workspace settings file, then one would need to modify the `settings.json` under here:
3 | // - Windows: %APPDATA%\Code\User\settings.json
4 | // - Linux: $HOME/.config/Code/User/settings.json
5 | // - Mac: $HOME/Library/Application Support/Code/User/settings.json
6 | {
7 | // Organize Java Imports
8 | "editor.formatOnSave": true,
9 | "editor.codeActionsOnSave": {
10 | "source.organizeImports": "explicit"
11 | },
12 | "java.format.settings.url": "https://raw.githubusercontent.com/imixs/imixs-workflow/refs/heads/master/imixs-code-style.xml"
13 | }
--------------------------------------------------------------------------------
/COPYRIGHT:
--------------------------------------------------------------------------------
1 | Imixs Workflow
2 | Copyright (C) 2001-2018 Imixs Software Solutions GmbH,
3 | http://www.imixs.com
4 |
5 | This program is free software: you can redistribute it and/or modify
6 | it under the terms of the GNU General Public License as published by
7 | the Free Software Foundation, either version 3 of the License, or
8 | (at your option) any later version.
9 |
10 | This program is distributed in the hope that it will be useful,
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | GNU General Public License for more details.
14 |
15 | You should have received a copy of the GNU General Public License
16 | along with this program. If not, see
38 | * 39 | * 40 | * @author Ralph Soika 41 | * @version 1.0 42 | * @see org.imixs.workflow.WorkflowKernel 43 | */ 44 | 45 | public abstract interface Adapter { 46 | 47 | /** 48 | * @param document the workitem to be processed 49 | * @param event the workflow event containing the processing instructions 50 | * @return updated workitem for further processing 51 | * @throws AdapterException interrupt processing 52 | */ 53 | public ItemCollection execute(ItemCollection document, ItemCollection event) throws AdapterException, PluginException; 54 | 55 | } 56 | -------------------------------------------------------------------------------- /imixs-workflow-core/src/main/java/org/imixs/workflow/GenericAdapter.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Imixs-Workflow 3 | * 4 | * Copyright (C) 2001-2020 Imixs Software Solutions GmbH, 5 | * http://www.imixs.com 6 | * 7 | * This program is free software; you can redistribute it and/or 8 | * modify it under the terms of the GNU General Public License 9 | * as published by the Free Software Foundation; either version 2 10 | * of the License, or (at your option) any later version. 11 | * 12 | * This program is distributed in the hope that it will be useful, 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 15 | * General Public License for more details. 16 | * 17 | * You can receive a copy of the GNU General Public 18 | * License at http://www.gnu.org/licenses/gpl.html 19 | * 20 | * Project: 21 | * https://www.imixs.org 22 | * https://github.com/imixs/imixs-workflow 23 | * 24 | * Contributors: 25 | * Imixs Software Solutions GmbH - Project Management 26 | * Ralph Soika - Software Developer 27 | */ 28 | 29 | package org.imixs.workflow; 30 | 31 | /** 32 | * A GenericAdapter extends the Adapter Interface. This Adapter is independent 33 | * from the BPMN Model and should not be associated with a BPMN Signal Event. A 34 | * GenericAdapter is called by the WorkfklowKernel during the processing 35 | * life-cycle before the plugin life-cycle. 36 | *
37 | * A GenericAdapter can be a CDI implementation. 38 | *
39 | * GenericAdapter are called before any Signal-Adapter or plugin was executed. 40 | *
41 | *
42 | * @author Ralph Soika
43 | * @version 1.0
44 | * @see org.imixs.workflow.WorkflowKernel
45 | */
46 |
47 | public interface GenericAdapter extends Adapter {
48 |
49 | }
50 |
--------------------------------------------------------------------------------
/imixs-workflow-core/src/main/java/org/imixs/workflow/PluginDependency.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Imixs-Workflow
3 | *
4 | * Copyright (C) 2001-2020 Imixs Software Solutions GmbH,
5 | * http://www.imixs.com
6 | *
7 | * This program is free software; you can redistribute it and/or
8 | * modify it under the terms of the GNU General Public License
9 | * as published by the Free Software Foundation; either version 2
10 | * of the License, or (at your option) any later version.
11 | *
12 | * This program is distributed in the hope that it will be useful,
13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 | * General Public License for more details.
16 | *
17 | * You can receive a copy of the GNU General Public
18 | * License at http://www.gnu.org/licenses/gpl.html
19 | *
20 | * Project:
21 | * https://www.imixs.org
22 | * https://github.com/imixs/imixs-workflow
23 | *
24 | * Contributors:
25 | * Imixs Software Solutions GmbH - Project Management
26 | * Ralph Soika - Software Developer
27 | */
28 |
29 | package org.imixs.workflow;
30 |
31 | import java.util.List;
32 |
33 | /**
34 | * A plug-in may optionally implement the interface 'PluginDependency' to
35 | * indicate dependencies on other plug-ins. Plug-in dependencies are validated
36 | * by the WorkflowKernel during processing a workflow event. If a plug-in
37 | * defined by the BPMN model signals dependencies which are not reflected by the
38 | * current model definition, a warning message is logged.
39 | *
40 | *
41 | * @author Ralph Soika
42 | * @version 1.0
43 | * @see org.imixs.workflow.WorkflowKernel
44 | */
45 |
46 | public interface PluginDependency {
47 |
48 | /**
49 | * Returns a String list of plugin class names which the currend implementation
50 | * depends on.
51 | *
52 | */
53 | public List
41 | *
42 | * @author Ralph Soika
43 | * @version 1.0
44 | * @see org.imixs.workflow.engine.WorkflowScheduler
45 | */
46 | public interface QuerySelector {
47 |
48 | /**
49 | * Returns a selection of workitems. The method may throw a QueryExeption.
50 | *
51 | * @param pageSize - total docs per page
52 | * @param pageIndex - number of page to start (default = 0)
53 | * @return workitem selection, can be null
54 | * @throws QueryException
55 | */
56 | public List
36 | * A SignalAdapter can be a CDI implementation.
37 | *
38 | * SignalAdapters are called after the execution of GenericAdapters but before
39 | * any plugin was executed.
40 | *
41 | *
42 | * @author Ralph Soika
43 | * @version 1.0
44 | * @see org.imixs.workflow.engine.WorkflowKernel
45 | */
46 |
47 | public interface SignalAdapter extends Adapter {
48 |
49 | }
50 |
--------------------------------------------------------------------------------
/imixs-workflow-core/src/main/java/org/imixs/workflow/exceptions/AccessDeniedException.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Imixs-Workflow
3 | *
4 | * Copyright (C) 2001-2020 Imixs Software Solutions GmbH,
5 | * http://www.imixs.com
6 | *
7 | * This program is free software; you can redistribute it and/or
8 | * modify it under the terms of the GNU General Public License
9 | * as published by the Free Software Foundation; either version 2
10 | * of the License, or (at your option) any later version.
11 | *
12 | * This program is distributed in the hope that it will be useful,
13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 | * General Public License for more details.
16 | *
17 | * You can receive a copy of the GNU General Public
18 | * License at http://www.gnu.org/licenses/gpl.html
19 | *
20 | * Project:
21 | * https://www.imixs.org
22 | * https://github.com/imixs/imixs-workflow
23 | *
24 | * Contributors:
25 | * Imixs Software Solutions GmbH - Project Management
26 | * Ralph Soika - Software Developer
27 | */
28 |
29 | package org.imixs.workflow.exceptions;
30 |
31 | /**
32 | * An AccessDeniedException should be thrown by a Imixs Workflow component if
33 | * the callerPrincipal is not allowed to access an instance of a workitem.
34 | *
35 | * @author rsoika
36 | *
37 | */
38 | public class AccessDeniedException extends InvalidAccessException {
39 |
40 | private static final long serialVersionUID = 1L;
41 |
42 | public AccessDeniedException(String aErrorCode, String message) {
43 | super(aErrorCode, message);
44 | }
45 |
46 | }
47 |
--------------------------------------------------------------------------------
/imixs-workflow-core/src/main/java/org/imixs/workflow/exceptions/AdapterException.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Imixs-Workflow
3 | *
4 | * Copyright (C) 2001-2020 Imixs Software Solutions GmbH,
5 | * http://www.imixs.com
6 | *
7 | * This program is free software; you can redistribute it and/or
8 | * modify it under the terms of the GNU General Public License
9 | * as published by the Free Software Foundation; either version 2
10 | * of the License, or (at your option) any later version.
11 | *
12 | * This program is distributed in the hope that it will be useful,
13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 | * General Public License for more details.
16 | *
17 | * You can receive a copy of the GNU General Public
18 | * License at http://www.gnu.org/licenses/gpl.html
19 | *
20 | * Project:
21 | * https://www.imixs.org
22 | * https://github.com/imixs/imixs-workflow
23 | *
24 | * Contributors:
25 | * Imixs Software Solutions GmbH - Project Management
26 | * Ralph Soika - Software Developer
27 | */
28 | package org.imixs.workflow.exceptions;
29 |
30 | /**
31 | * An AdapterException is thrown by an Imixs-Workflow Adapter implementation
32 | *
33 | * @author rsoika
34 | *
35 | */
36 | public class AdapterException extends WorkflowException {
37 |
38 | private static final long serialVersionUID = 1L;
39 | private Object[] params = null;
40 |
41 | public AdapterException(String aErrorContext, String aErrorCode, String message) {
42 | super(aErrorContext, aErrorCode, message);
43 | }
44 |
45 | public AdapterException(String aErrorContext, String aErrorCode, String message, Exception e) {
46 | super(aErrorContext, aErrorCode, message, e);
47 | }
48 |
49 | public AdapterException(String aErrorContext, String aErrorCode, String message, Object[] params) {
50 | super(aErrorContext, aErrorCode, message);
51 | this.params = params;
52 | }
53 |
54 | public AdapterException(PluginException e) {
55 | super(e.getErrorContext(), e.getErrorCode(), e.getMessage(), e);
56 | }
57 |
58 | public Object[] getErrorParameters() {
59 | return params;
60 | }
61 |
62 | protected void setErrorParameters(Object[] aparams) {
63 | this.params = aparams;
64 | }
65 |
66 | }
67 |
--------------------------------------------------------------------------------
/imixs-workflow-core/src/main/java/org/imixs/workflow/exceptions/ModelException.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Imixs-Workflow
3 | *
4 | * Copyright (C) 2001-2020 Imixs Software Solutions GmbH,
5 | * http://www.imixs.com
6 | *
7 | * This program is free software; you can redistribute it and/or
8 | * modify it under the terms of the GNU General Public License
9 | * as published by the Free Software Foundation; either version 2
10 | * of the License, or (at your option) any later version.
11 | *
12 | * This program is distributed in the hope that it will be useful,
13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 | * General Public License for more details.
16 | *
17 | * You can receive a copy of the GNU General Public
18 | * License at http://www.gnu.org/licenses/gpl.html
19 | *
20 | * Project:
21 | * https://www.imixs.org
22 | * https://github.com/imixs/imixs-workflow
23 | *
24 | * Contributors:
25 | * Imixs Software Solutions GmbH - Project Management
26 | * Ralph Soika - Software Developer
27 | */
28 |
29 | package org.imixs.workflow.exceptions;
30 |
31 | /**
32 | * An ModelException should be thrown by a service component if a model entity
33 | * is invalid or does not exist
34 | *
35 | * @author rsoika
36 | *
37 | */
38 | public class ModelException extends WorkflowException {
39 |
40 | public static final String INVALID_MODEL = "INVALID_MODEL";
41 | public static final String INVALID_MODEL_ENTRY = "INVALID_MODEL_ENTRY";
42 | public static final String UNDEFINED_MODEL_ENTRY = "UNDEFINED_MODEL_ENTRY";
43 | public static final String UNDEFINED_MODEL_VERSION = "UNDEFINED_MODEL_VERSION";
44 | public static final String AMBIGUOUS_MODEL_ENTRY = "AMBIGUOUS_MODEL_ENTRY";
45 |
46 | private static final long serialVersionUID = 1L;
47 |
48 | public ModelException(String aErrorCode, String message) {
49 | super(aErrorCode, message);
50 | }
51 |
52 | public ModelException(String aErrorCode, String message, Exception e) {
53 | super(aErrorCode, message, e);
54 | }
55 |
56 | }
57 |
--------------------------------------------------------------------------------
/imixs-workflow-core/src/main/java/org/imixs/workflow/exceptions/PluginException.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Imixs-Workflow
3 | *
4 | * Copyright (C) 2001-2020 Imixs Software Solutions GmbH,
5 | * http://www.imixs.com
6 | *
7 | * This program is free software; you can redistribute it and/or
8 | * modify it under the terms of the GNU General Public License
9 | * as published by the Free Software Foundation; either version 2
10 | * of the License, or (at your option) any later version.
11 | *
12 | * This program is distributed in the hope that it will be useful,
13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 | * General Public License for more details.
16 | *
17 | * You can receive a copy of the GNU General Public
18 | * License at http://www.gnu.org/licenses/gpl.html
19 | *
20 | * Project:
21 | * https://www.imixs.org
22 | * https://github.com/imixs/imixs-workflow
23 | *
24 | * Contributors:
25 | * Imixs Software Solutions GmbH - Project Management
26 | * Ralph Soika - Software Developer
27 | */
28 |
29 | package org.imixs.workflow.exceptions;
30 |
31 | /**
32 | * A PluginException is thrown by an Imixs-Workflow plugin implementation.
33 | *
34 | * @author rsoika
35 | *
36 | */
37 | public class PluginException extends WorkflowException {
38 |
39 | private static final long serialVersionUID = 1L;
40 |
41 | public PluginException(String aErrorContext, String aErrorCode, String message) {
42 | super(aErrorContext, aErrorCode, message);
43 | }
44 |
45 | public PluginException(String aErrorContext, String aErrorCode, String message, Exception e) {
46 | super(aErrorContext, aErrorCode, message, e);
47 | }
48 |
49 | public PluginException(AdapterException e) {
50 | super(e.getErrorContext(), e.getErrorCode(), e.getMessage(), e);
51 | }
52 |
53 | public PluginException(String aErrorContext, String aErrorCode, String message, java.lang.Object[] params) {
54 | super(aErrorContext, aErrorCode, message);
55 | this.params = params;
56 | }
57 |
58 | }
59 |
--------------------------------------------------------------------------------
/imixs-workflow-core/src/main/java/org/imixs/workflow/exceptions/ProcessingErrorException.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Imixs-Workflow
3 | *
4 | * Copyright (C) 2001-2020 Imixs Software Solutions GmbH,
5 | * http://www.imixs.com
6 | *
7 | * This program is free software; you can redistribute it and/or
8 | * modify it under the terms of the GNU General Public License
9 | * as published by the Free Software Foundation; either version 2
10 | * of the License, or (at your option) any later version.
11 | *
12 | * This program is distributed in the hope that it will be useful,
13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 | * General Public License for more details.
16 | *
17 | * You can receive a copy of the GNU General Public
18 | * License at http://www.gnu.org/licenses/gpl.html
19 | *
20 | * Project:
21 | * https://www.imixs.org
22 | * https://github.com/imixs/imixs-workflow
23 | *
24 | * Contributors:
25 | * Imixs Software Solutions GmbH - Project Management
26 | * Ralph Soika - Software Developer
27 | */
28 |
29 | package org.imixs.workflow.exceptions;
30 |
31 | /**
32 | * An ProcessingErrorException is a RuntimeExcption thrown by the
33 | * workflowManager if an error occurs during the process method
34 | *
35 | * @author rsoika
36 | *
37 | */
38 | public class ProcessingErrorException extends InvalidAccessException {
39 |
40 | private static final long serialVersionUID = 1L;
41 |
42 | public static final String INVALID_MODELVERSION = "INVALID_MODELVERSION";
43 | public static final String INVALID_WORKITEM = "INVALID_WORKITEM";
44 | public static final String INVALID_PROCESSID = "INVALID_PROCESSID";
45 |
46 | public ProcessingErrorException(String aErrorCode, String message) {
47 | super(aErrorCode, message);
48 | }
49 |
50 | public ProcessingErrorException(String aErrorContext, String aErrorCode, String message) {
51 | super(message);
52 | errorContext = aErrorContext;
53 | errorCode = aErrorCode;
54 |
55 | }
56 |
57 | public ProcessingErrorException(String aErrorContext, String aErrorCode, String message, Exception e) {
58 | super(message, e);
59 | errorContext = aErrorContext;
60 | errorCode = aErrorCode;
61 |
62 | }
63 |
64 | }
65 |
--------------------------------------------------------------------------------
/imixs-workflow-core/src/main/java/org/imixs/workflow/exceptions/QueryException.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Imixs-Workflow
3 | *
4 | * Copyright (C) 2001-2020 Imixs Software Solutions GmbH,
5 | * http://www.imixs.com
6 | *
7 | * This program is free software; you can redistribute it and/or
8 | * modify it under the terms of the GNU General Public License
9 | * as published by the Free Software Foundation; either version 2
10 | * of the License, or (at your option) any later version.
11 | *
12 | * This program is distributed in the hope that it will be useful,
13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 | * General Public License for more details.
16 | *
17 | * You can receive a copy of the GNU General Public
18 | * License at http://www.gnu.org/licenses/gpl.html
19 | *
20 | * Project:
21 | * https://www.imixs.org
22 | * https://github.com/imixs/imixs-workflow
23 | *
24 | * Contributors:
25 | * Imixs Software Solutions GmbH - Project Management
26 | * Ralph Soika - Software Developer
27 | */
28 |
29 | package org.imixs.workflow.exceptions;
30 |
31 | /**
32 | * The QueryException is thrown in case a search query can not be pased.
33 | *
34 | * @see org.imixs.workflow.engine.lucene.LuceneSearchService
35 | * @author rsoika
36 | *
37 | */
38 | public class QueryException extends WorkflowException {
39 |
40 | public static final String QUERY_NOT_UNDERSTANDABLE = "QUERY_NOT_UNDERSTANDABLE";
41 |
42 | private static final long serialVersionUID = 1L;
43 |
44 | public QueryException(String aErrorCode, String message) {
45 | super(aErrorCode, message);
46 | }
47 |
48 | public QueryException(String aErrorCode, String message, Exception e) {
49 | super(aErrorCode, message, e);
50 | }
51 |
52 | }
53 |
--------------------------------------------------------------------------------
/imixs-workflow-core/src/main/java/org/imixs/workflow/services/rest/JWTAuthenticator.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Imixs-Workflow
3 | *
4 | * Copyright (C) 2001-2020 Imixs Software Solutions GmbH,
5 | * http://www.imixs.com
6 | *
7 | * This program is free software; you can redistribute it and/or
8 | * modify it under the terms of the GNU General Public License
9 | * as published by the Free Software Foundation; either version 2
10 | * of the License, or (at your option) any later version.
11 | *
12 | * This program is distributed in the hope that it will be useful,
13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 | * General Public License for more details.
16 | *
17 | * You can receive a copy of the GNU General Public
18 | * License at http://www.gnu.org/licenses/gpl.html
19 | *
20 | * Project:
21 | * https://www.imixs.org
22 | * https://github.com/imixs/imixs-workflow
23 | *
24 | * Contributors:
25 | * Imixs Software Solutions GmbH - Project Management
26 | * Ralph Soika - Software Developer
27 | */
28 |
29 | package org.imixs.workflow.services.rest;
30 |
31 | import java.io.IOException;
32 | import java.net.HttpURLConnection;
33 | import java.net.URL;
34 | import java.util.logging.Logger;
35 |
36 | /**
37 | * Client request Filter for Imixs-JWT
38 | *
39 | * @author rsoika
40 | *
41 | */
42 | public class JWTAuthenticator implements RequestFilter {
43 |
44 | private final String jwt;
45 | private final static Logger logger = Logger.getLogger(JWTAuthenticator.class.getName());
46 |
47 | public JWTAuthenticator(String jwt) {
48 | this.jwt = jwt;
49 | }
50 |
51 | public void filter(HttpURLConnection connection) throws IOException {
52 |
53 | URL uri = connection.getURL();// .getUri();
54 |
55 | String url = uri.toString();
56 | if (!url.contains("jwt=")) {
57 | logger.info("adding JSON Web Token...");
58 | connection.setRequestProperty("jwt", jwt);
59 | }
60 |
61 | }
62 |
63 | }
64 |
--------------------------------------------------------------------------------
/imixs-workflow-core/src/main/java/org/imixs/workflow/services/rest/RequestFilter.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Imixs-Workflow
3 | *
4 | * Copyright (C) 2001-2020 Imixs Software Solutions GmbH,
5 | * http://www.imixs.com
6 | *
7 | * This program is free software; you can redistribute it and/or
8 | * modify it under the terms of the GNU General Public License
9 | * as published by the Free Software Foundation; either version 2
10 | * of the License, or (at your option) any later version.
11 | *
12 | * This program is distributed in the hope that it will be useful,
13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 | * General Public License for more details.
16 | *
17 | * You can receive a copy of the GNU General Public
18 | * License at http://www.gnu.org/licenses/gpl.html
19 | *
20 | * Project:
21 | * https://www.imixs.org
22 | * https://github.com/imixs/imixs-workflow
23 | *
24 | * Contributors:
25 | * Imixs Software Solutions GmbH - Project Management
26 | * Ralph Soika - Software Developer
27 | */
28 |
29 | package org.imixs.workflow.services.rest;
30 |
31 | import java.io.IOException;
32 | import java.net.HttpURLConnection;
33 |
34 | public interface RequestFilter {
35 | public void filter(HttpURLConnection connection) throws IOException;
36 | }
37 |
--------------------------------------------------------------------------------
/imixs-workflow-core/src/main/java/org/imixs/workflow/xml/XMLCount.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Imixs-Workflow
3 | *
4 | * Copyright (C) 2001-2020 Imixs Software Solutions GmbH,
5 | * http://www.imixs.com
6 | *
7 | * This program is free software; you can redistribute it and/or
8 | * modify it under the terms of the GNU General Public License
9 | * as published by the Free Software Foundation; either version 2
10 | * of the License, or (at your option) any later version.
11 | *
12 | * This program is distributed in the hope that it will be useful,
13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 | * General Public License for more details.
16 | *
17 | * You can receive a copy of the GNU General Public
18 | * License at http://www.gnu.org/licenses/gpl.html
19 | *
20 | * Project:
21 | * https://www.imixs.org
22 | * https://github.com/imixs/imixs-workflow
23 | *
24 | * Contributors:
25 | * Imixs Software Solutions GmbH - Project Management
26 | * Ralph Soika - Software Developer
27 | */
28 |
29 | package org.imixs.workflow.xml;
30 |
31 | import jakarta.xml.bind.annotation.XmlRootElement;
32 | import jakarta.xml.bind.annotation.XmlValue;
33 |
34 | /**
35 | * Represents a basic object type Long
36 | *
37 | * @author rsoika
38 | *
39 | */
40 | @XmlRootElement(name = "count")
41 | public class XMLCount implements java.io.Serializable {
42 |
43 | private static final long serialVersionUID = 1L;
44 | @XmlValue
45 | public Long count;
46 |
47 | }
48 |
--------------------------------------------------------------------------------
/imixs-workflow-core/src/main/java/org/imixs/workflow/xml/XMLDataCollection.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Imixs-Workflow
3 | *
4 | * Copyright (C) 2001-2020 Imixs Software Solutions GmbH,
5 | * http://www.imixs.com
6 | *
7 | * This program is free software; you can redistribute it and/or
8 | * modify it under the terms of the GNU General Public License
9 | * as published by the Free Software Foundation; either version 2
10 | * of the License, or (at your option) any later version.
11 | *
12 | * This program is distributed in the hope that it will be useful,
13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 | * General Public License for more details.
16 | *
17 | * You can receive a copy of the GNU General Public
18 | * License at http://www.gnu.org/licenses/gpl.html
19 | *
20 | * Project:
21 | * https://www.imixs.org
22 | * https://github.com/imixs/imixs-workflow
23 | *
24 | * Contributors:
25 | * Imixs Software Solutions GmbH - Project Management
26 | * Ralph Soika - Software Developer
27 | */
28 |
29 | package org.imixs.workflow.xml;
30 |
31 | import jakarta.xml.bind.annotation.XmlRootElement;
32 |
33 | /**
34 | * The XMLDataCollection represents a list of XMLItemCollections. This root
35 | * element is used by JAXB api
36 | *
37 | * @author rsoika
38 | * @version 0.0.1
39 | */
40 | @XmlRootElement(name = "data")
41 | public class XMLDataCollection implements java.io.Serializable {
42 |
43 | private static final long serialVersionUID = 1L;
44 | private XMLDocument[] document;
45 |
46 | public XMLDataCollection() {
47 | setDocument(new XMLDocument[] {});
48 | }
49 |
50 | public XMLDocument[] getDocument() {
51 | return document;
52 | }
53 |
54 | public void setDocument(XMLDocument[] entity) {
55 | this.document = entity;
56 | }
57 |
58 | }
59 |
--------------------------------------------------------------------------------
/imixs-workflow-core/src/main/java/org/imixs/workflow/xml/XMLDocument.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Imixs-Workflow
3 | *
4 | * Copyright (C) 2001-2020 Imixs Software Solutions GmbH,
5 | * http://www.imixs.com
6 | *
7 | * This program is free software; you can redistribute it and/or
8 | * modify it under the terms of the GNU General Public License
9 | * as published by the Free Software Foundation; either version 2
10 | * of the License, or (at your option) any later version.
11 | *
12 | * This program is distributed in the hope that it will be useful,
13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 | * General Public License for more details.
16 | *
17 | * You can receive a copy of the GNU General Public
18 | * License at http://www.gnu.org/licenses/gpl.html
19 | *
20 | * Project:
21 | * https://www.imixs.org
22 | * https://github.com/imixs/imixs-workflow
23 | *
24 | * Contributors:
25 | * Imixs Software Solutions GmbH - Project Management
26 | * Ralph Soika - Software Developer
27 | */
28 |
29 | package org.imixs.workflow.xml;
30 |
31 | import java.io.Serializable;
32 | import java.util.Arrays;
33 |
34 | import jakarta.xml.bind.annotation.XmlRootElement;
35 |
36 | /**
37 | * The XMLitemCollection is a basic serializable representation of a pojo to map
38 | * a org.imixs.workflow.ItemCollection into a xml representation using JAXB api
39 | *
40 | * @author rsoika
41 | * @version 0.0.1
42 | */
43 | @XmlRootElement(name = "document")
44 | public class XMLDocument implements Serializable {
45 |
46 | private static final long serialVersionUID = 1L;
47 | private XMLItem[] item;
48 |
49 | public XMLDocument() {
50 | this.setItem(new XMLItem[] {});
51 | }
52 |
53 | public XMLItem[] getItem() {
54 | return item;
55 | }
56 |
57 | public void setItem(XMLItem[] item) {
58 | this.item = item;
59 | }
60 |
61 | /**
62 | * This method compares the item array
63 | */
64 | public boolean equals(Object o) {
65 | if (!(o instanceof XMLDocument))
66 | return false;
67 | return Arrays.equals(item, ((XMLDocument) o).item);
68 | }
69 |
70 | }
71 |
--------------------------------------------------------------------------------
/imixs-workflow-core/src/main/java/org/imixs/workflow/xml/XMLItemComparator.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Imixs-Workflow
3 | *
4 | * Copyright (C) 2001-2020 Imixs Software Solutions GmbH,
5 | * http://www.imixs.com
6 | *
7 | * This program is free software; you can redistribute it and/or
8 | * modify it under the terms of the GNU General Public License
9 | * as published by the Free Software Foundation; either version 2
10 | * of the License, or (at your option) any later version.
11 | *
12 | * This program is distributed in the hope that it will be useful,
13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 | * General Public License for more details.
16 | *
17 | * You can receive a copy of the GNU General Public
18 | * License at http://www.gnu.org/licenses/gpl.html
19 | *
20 | * Project:
21 | * https://www.imixs.org
22 | * https://github.com/imixs/imixs-workflow
23 | *
24 | * Contributors:
25 | * Imixs Software Solutions GmbH - Project Management
26 | * Ralph Soika - Software Developer
27 | */
28 |
29 | package org.imixs.workflow.xml;
30 |
31 | import java.util.Comparator;
32 |
33 | /**
34 | * The XMLItemComparator provides a Comparator for XMLItems contained by a
35 | * XMLItemCollection.
36 | *
37 | * Usage:
38 | *
39 | *
38 | * The Controller creates a configuration entity "type=scheduler;
39 | * txtname=org.imixs.workflow.scheduler".
40 | *
41 | *
42 | * @see SchedulerController
43 | * @author rsoika
44 | *
45 | */
46 | @Named
47 | @RequestScoped
48 | public class WorkflowSchedulerController extends SchedulerController {
49 |
50 | private static final long serialVersionUID = 1L;
51 |
52 | @Override
53 | public String getName() {
54 | return WorkflowScheduler.NAME;
55 | }
56 |
57 | /**
58 | * Returns the workflow scheduler class name.
59 | *
60 | */
61 | @Override
62 | public String getSchedulerClass() {
63 | return WorkflowScheduler.class.getName();
64 | }
65 |
66 | }
67 |
--------------------------------------------------------------------------------
/imixs-workflow-engine/src/main/java/org/imixs/workflow/engine/adminp/AdminPException.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Imixs-Workflow
3 | *
4 | * Copyright (C) 2001-2020 Imixs Software Solutions GmbH,
5 | * http://www.imixs.com
6 | *
7 | * This program is free software; you can redistribute it and/or
8 | * modify it under the terms of the GNU General Public License
9 | * as published by the Free Software Foundation; either version 2
10 | * of the License, or (at your option) any later version.
11 | *
12 | * This program is distributed in the hope that it will be useful,
13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 | * General Public License for more details.
16 | *
17 | * You can receive a copy of the GNU General Public
18 | * License at http://www.gnu.org/licenses/gpl.html
19 | *
20 | * Project:
21 | * https://www.imixs.org
22 | * https://github.com/imixs/imixs-workflow
23 | *
24 | * Contributors:
25 | * Imixs Software Solutions GmbH - Project Management
26 | * Ralph Soika - Software Developer
27 | */
28 |
29 | package org.imixs.workflow.engine.adminp;
30 |
31 | import org.imixs.workflow.exceptions.InvalidAccessException;
32 |
33 | /**
34 | * This Exception is thrown by the AdminPService
35 | *
36 | * @author rsoika
37 | *
38 | */
39 | public class AdminPException extends InvalidAccessException {
40 |
41 | private static final long serialVersionUID = 1L;
42 | public static final String INVALID_PARAMS = "INVALID_PARAMS";
43 |
44 | public AdminPException(String aErrorCode, String message) {
45 | super(aErrorCode, message);
46 | }
47 |
48 | public AdminPException(String aErrorCode, String message, Exception e) {
49 | super(aErrorCode, message, e);
50 | }
51 |
52 | }
53 |
--------------------------------------------------------------------------------
/imixs-workflow-engine/src/main/java/org/imixs/workflow/engine/index/DefaultOperator.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Imixs-Workflow
3 | *
4 | * Copyright (C) 2001-2020 Imixs Software Solutions GmbH,
5 | * http://www.imixs.com
6 | *
7 | * This program is free software; you can redistribute it and/or
8 | * modify it under the terms of the GNU General Public License
9 | * as published by the Free Software Foundation; either version 2
10 | * of the License, or (at your option) any later version.
11 | *
12 | * This program is distributed in the hope that it will be useful,
13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 | * General Public License for more details.
16 | *
17 | * You can receive a copy of the GNU General Public
18 | * License at http://www.gnu.org/licenses/gpl.html
19 | *
20 | * Project:
21 | * https://www.imixs.org
22 | * https://github.com/imixs/imixs-workflow
23 | *
24 | * Contributors:
25 | * Imixs Software Solutions GmbH - Project Management
26 | * Ralph Soika - Software Developer
27 | */
28 |
29 | package org.imixs.workflow.engine.index;
30 |
31 | public enum DefaultOperator {
32 | OR, AND
33 | };
34 |
--------------------------------------------------------------------------------
/imixs-workflow-engine/src/main/java/org/imixs/workflow/engine/plugins/AccessPlugin.java:
--------------------------------------------------------------------------------
1 | /*******************************************************************************
2 | * Imixs Workflow
3 | * Copyright (C) 2001, 2011 Imixs Software Solutions GmbH,
4 | * http://www.imixs.com
5 | *
6 | * This program is free software; you can redistribute it and/or
7 | * modify it under the terms of the GNU General Public License
8 | * as published by the Free Software Foundation; either version 2
9 | * of the License, or (at your option) any later version.
10 | *
11 | * This program is distributed in the hope that it will be useful,
12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 | * General Public License for more details.
15 | *
16 | * You can receive a copy of the GNU General Public
17 | * License at http://www.gnu.org/licenses/gpl.html
18 | *
19 | * Project:
20 | * http://www.imixs.org
21 | * http://java.net/projects/imixs-workflow
22 | *
23 | * Contributors:
24 | * Imixs Software Solutions GmbH - initial API and implementation
25 | * Ralph Soika - Software Developer
26 | *******************************************************************************/
27 |
28 | package org.imixs.workflow.engine.plugins;
29 |
30 | import java.util.logging.Logger;
31 |
32 | import org.imixs.workflow.ItemCollection;
33 | import org.imixs.workflow.exceptions.PluginException;
34 |
35 | /**
36 | * Deprecated - see PaticipantAdapter.
37 | *
38 | * @author Ralph Soika
39 | * @version 3.0
40 | * @see org.imixs.workflow.WorkflowManager
41 | */
42 | @Deprecated
43 | public class AccessPlugin extends AbstractPlugin {
44 | private static final Logger logger = Logger.getLogger(AccessPlugin.class.getName());
45 |
46 | @Deprecated
47 | public ItemCollection run(ItemCollection adocumentContext, ItemCollection documentActivity) throws PluginException {
48 |
49 | logger.warning("The AccessPlugin is deprecated and can be removed from this model!");
50 | return adocumentContext;
51 | }
52 |
53 | }
54 |
--------------------------------------------------------------------------------
/imixs-workflow-engine/src/main/resources/META-INF/COPYRIGHT:
--------------------------------------------------------------------------------
1 | Imixs Workflow
2 | Copyright (C) 2001-2018 Imixs Software Solutions GmbH,
3 | http://www.imixs.com
4 |
5 | This program is free software: you can redistribute it and/or modify
6 | it under the terms of the GNU General Public License as published by
7 | the Free Software Foundation, either version 3 of the License, or
8 | (at your option) any later version.
9 |
10 | This program is distributed in the hope that it will be useful,
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | GNU General Public License for more details.
14 |
15 | You should have received a copy of the GNU General Public License
16 | along with this program. If not, see
4 | Note:This service is deprecated and is replaced since version 5.0.0 by the Microprofile Config API! Collections.sort(collection, new XMLItemComparator());
40 | *
41 | * @author rsoika
42 | *
43 | */
44 | public class XMLItemComparator implements Comparator
17 | * xmlns:xs="http://www.w3.org/2001/XMLSchema"
18 | * xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
19 | *
20 | *
21 | * @author rsoika
22 | *
23 | */
24 |
--------------------------------------------------------------------------------
/imixs-workflow-core/src/main/resources/META-INF/COPYRIGHT:
--------------------------------------------------------------------------------
1 | Imixs Workflow
2 | Copyright (C) 2001-2018 Imixs Software Solutions GmbH,
3 | http://www.imixs.com
4 |
5 | This program is free software: you can redistribute it and/or modify
6 | it under the terms of the GNU General Public License as published by
7 | the Free Software Foundation, either version 3 of the License, or
8 | (at your option) any later version.
9 |
10 | This program is distributed in the hope that it will be useful,
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | GNU General Public License for more details.
14 |
15 | You should have received a copy of the GNU General Public License
16 | along with this program. If not, see
16 | * txtWorkflowStatus,numProcessID,txtName
17 | *
18 | *
19 | * @param items
20 | * @return
21 | */
22 | public static List
39 |
40 |
41 | The first measuring point 'P1' will measure the total processing time for a ticket. The second measuring point 'P2' will measure the duration of the processing time (in seconds) for the solving.
42 |
43 |
44 | All measuring points will be also logged into the txtWorkflowActivityLog in the comment section.
45 |
46 |
47 |
48 |
--------------------------------------------------------------------------------
/src/site/markdown/engine/plugins/applicationplugin.md:
--------------------------------------------------------------------------------
1 | # ApplicationPlugin
2 |
3 | The ApplicationPlugin updates application specific properties for the current WorkItem.
4 |
5 | org.imixs.workflow.engine.plugins.ApplicationPlugin
6 |
7 | The plugin is responsible to generate the workflow summary and abstract items `$workflowsummary` and `$workflowabstract`. These settings can be modeled using the Imixs Modeler on the Application Property Tab off the corresponding ProcessEntity.
8 |
9 |
10 |
11 | See also the section [Text Replacement](../../modelling/textreplacement.html) for more details how to format item values.
12 |
13 | The following items are controlled by the ApplicationPlugin
14 |
15 | - $WorkflowStatus - evaluated status of new process state
16 | - $WorkflowGroup - name of the workflow group from the current process
17 | - $WorkflowAbstract - Abstract text (provided by the processEntity property 'txtworkflowabstract')
18 | - $WorkflowSummary - Summary (provided by the processEntity property 'txtworkflowsummary')
19 | - txtWorkflowEditorID - optional EditorID to be used by an application (provided by the activityEntity property 'txtEditorID')
20 | - txtWorkflowImageURL - visual image can be displayed by an application (provided by the activityEntity property 'txtImageURL')
21 |
--------------------------------------------------------------------------------
/src/site/markdown/engine/plugins/approverplugin.md:
--------------------------------------------------------------------------------
1 | # The ApproverPlugin
2 |
3 | The ApproverPlugin can be used to manage an approval process, involving multiple users.
4 |
5 | org.imixs.workflow.engine.plugins.ApproverPlugin
6 |
7 | The list of approvers must be defined by an item stored in the current process instance. The approval process can be started from an event with the following workflow result:
8 |
9 | Example:
10 |
11 |
22 |
23 |
24 | See the following condition example to test if all users of the ReviewTeam have approved:
25 |
26 | (workitem.reviewteam$approvers.length===0)
27 |
28 | You can use these rules to validate also a minimum number of approvers needed for the approver process. For example according to an four-eye principle:
29 |
30 | (workitem.reviewteam$approvers.length>=2)
31 |
32 | In this case a minimum of 2 users need to approve the task.
33 |
34 |
35 | ## Refresh the Approver List
36 |
37 | If the source item is updated during the approving process, the plugin will automatically add new users if these new Users are not yet listed in the 'approvedBy' item
38 |
39 | You can disable the auto update with the attribute refresh='false'.
40 |
41 |
42 |
10 |
11 | The configuration is provided by an BPMN Event result:
12 |
13 |
18 |
19 | For each event processed by the Imixs-Workflow engine a new history entry will be added into the WorkItem. The history is a user-friendly process documentation like in the following example:
20 |
21 | 02.10.2006 13:36:47 : Document saved by Tom.
22 | 02.10.2006 13:46:37 : Document assigned by Mark.
23 | 02.10.2006 13:36:47 : Document saved by Anna.
24 |
25 | A history entry support the [Text Replacer feature](../../modelling/textreplacement.html).
26 |
27 | Document saved by
6 |
7 | Each model can import a different set of plugins to provide different functionality. You can also add your own plugins providing custom functionality.
8 |
9 | ## Standard Plugins
10 |
11 | The Imixs-Workflow Engine already ofers a set of plugins that can be used to extend the functionality of your business application.
12 |
13 | * [Access Plugin](accessplugin.html) - controls the ACL of a process instance
14 | * [Analysis Plugin](analysisplugin.html) - analyze different phases of your business process
15 | * [Application Plugin](applicationplugin.html) - provide application specific data (Forms, Icons)
16 | * [Approver Plugin](applicationplugin.html) - to manage an approval process
17 | * [Document-Composer](documentcomposerplugin.html) - compose documents
18 | * [History Plugin](historyplugin.html) - generates a human readable processing history
19 | * [Interval Plugin](intervalplugin.html) - compute time points on a interval definition
20 | * [Mail Plugin](mailplugin.html) - sends E-Mail notifications
21 | * [Result Plugin](resultplugin.html) - computes optional processing results
22 | * [Rule Plugin](ruleplugin.html) - computes business rules
23 | * [Split & Join Plugin](splitandjoinplugin.html) - supports split and joins
24 |
25 |
26 | ## The Adapter API
27 |
28 | As an alternative to a the Plugin-API, business logic can also be implemented in an Adapter class. An adapter is bound to a single event and can be used for a more fine grained process control. Read more about the concept of the [Imixs Adapter-API](../../core/adapter-api.html).
29 |
30 | ## What's Next...
31 |
32 | Read more about:
33 |
34 | * [The Imixs Plugin-API](../../core/plugin-api.html)
35 | * [How to Extend The Plugin-API](howto_extend.html)
36 | * [Exception Handling](exception_handling.html)
37 | * [The Imixs Adapter-API](../../core/adapter-api.html)
38 |
39 |
--------------------------------------------------------------------------------
/src/site/markdown/engine/plugins/ownerplugin.md:
--------------------------------------------------------------------------------
1 | # Owner Plugin
2 |
3 | The OwnerPlugin is responsible for the ownership associated with a workitem.
4 | The plug-in applies a ownership list of userIDs and roles to the current process instance stored in the item '$owner'.
5 |
6 |
7 | _Plugin Class Name:_
8 |
9 | org.imixs.workflow.engine.plugins.OwnerPlugin
10 |
11 | The Ownership settings can be configured for a BPMN Event or Task element using the Imixs-BPMN modeling tool:
12 |
13 |
14 |
15 |
16 |
17 | This plug-in class is mandatory in case of the tasklist-method 'getWorkListByOwner'. The result of this list depends on the owner item computed by this plug-in.
18 |
--------------------------------------------------------------------------------
/src/site/markdown/engine/propertyservice.md:
--------------------------------------------------------------------------------
1 | # The PropertyService
2 |
3 |
See Imixs Config Source.
5 |