├── .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 . 17 | 18 | 19 | Project: 20 | http://www.imixs.org 21 | 22 | Contributors: 23 | Imixs Software Solutions GmbH - initial API and implementation 24 | Ralph Soika - Software Developer 25 | 26 | 27 | 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /ISSUE_922.md: -------------------------------------------------------------------------------- 1 | # Lösung 2 | 3 | Die Klasse `WorkflowContext` muss raus!!!!!!!!!!! 4 | 5 | - Der `WorkflowKernel` muss in der Methode Process eine exclusive Instanz von `BPMNModel` erzeugen bzw. im COnstructor übergeben bekommen und mit dieser dann thread save arbeiten 6 | 7 | - Der der `WorkflowContext` ctx ausschließlich im Constructor verwendet wird und nur das model hält ist hier der Einstieg 8 | 9 | - Der Constructor vom Kernel muss das `BPMNMOdel` Objet erzeugen. 10 | 11 | - Entsprechend muss die methode `updateModelVersionByEvent` ebenfalls angepasst werden udn auch das BPMMOdel neue laden!! 12 | BPMNModel model 13 | -------------------------------------------------------------------------------- /SECURITY.md: -------------------------------------------------------------------------------- 1 | # Security Policy 2 | 3 | ## Supported Versions 4 | 5 | The following versions of this project are 6 | currently being supported with security updates. 7 | 8 | | Version | Supported | 9 | | ------- | ------------------ | 10 | | 5.2.x | :white_check_mark: | 11 | | 5.1.x | :white_check_mark: | 12 | | < 5.1 | :x: | 13 | 14 | ## Reporting a Vulnerability 15 | 16 | When a new vulnerability is added to the GitHub Advisory Database and this project was identified using the affected version of the dependency, 17 | a GitHub Dependabot security update is send via GitHub to this repository. 18 | We will than generate a Bug Report refering to the vulnerability issue. If you found a vulnerability issue missing please report this to the Issue Tracker. 19 | -------------------------------------------------------------------------------- /imixs-workflow-core/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | imixs-workflow 4 | org.imixs.workflow 5 | 6.2.2-SNAPSHOT 6 | 7 | 4.0.0 8 | imixs-workflow-core 9 | Core API 10 | 11 | Imixs-Workflow Core provides the platform for an open and standardized workflow technology. 12 | Imixs-Workflow Core provides various components in a Java framework that allow to create, control 13 | and monitor process-oriented business tasks. 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | org.graalvm.js 22 | js-scriptengine 23 | ${graalvm.version} 24 | 25 | 26 | org.graalvm.js 27 | js-language 28 | ${graalvm.version} 29 | 30 | 31 | 32 | org.imixs.bpmn 33 | open-bpmn.metamodel 34 | ${openbpmn.version} 35 | 36 | 37 | -------------------------------------------------------------------------------- /imixs-workflow-core/src/main/java/org/imixs/workflow/Adapter.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 org.imixs.workflow.exceptions.AdapterException; 32 | import org.imixs.workflow.exceptions.PluginException; 33 | 34 | /** 35 | * An Adapter defines an adapter pattern used by the WorkflowKernel to call 36 | * adapter implementations defined by the BPMN model. 37 | *

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 dependsOn(); 54 | 55 | } 56 | -------------------------------------------------------------------------------- /imixs-workflow-core/src/main/java/org/imixs/workflow/QuerySelector.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 | import org.imixs.workflow.exceptions.QueryException; 34 | 35 | /** 36 | * The Interface QuerySelector can be implemented as a CDI Bean to provide a 37 | * custom selection of workitems. One example usage for the QuerySelector 38 | * interface is the WorkflowScheduler which supports this interface to quey a 39 | * custom selection of scheduled workitems. 40 | *

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 find(int pageSize, int pageIndex) throws QueryException; 57 | 58 | } 59 | -------------------------------------------------------------------------------- /imixs-workflow-core/src/main/java/org/imixs/workflow/SignalAdapter.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 SignalAdapter extends the Adapter Interface. This Adapter can be associated 33 | * with a BPMN Signal Event. A SignalAdapter is called by the WorkfklowKernel 34 | * during the processing life-cycle before the plugin life-cycle. 35 | *

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 | * Collections.sort(collection, new XMLItemComparator()); 40 | * 41 | * @author rsoika 42 | * 43 | */ 44 | public class XMLItemComparator implements Comparator { 45 | 46 | @Override 47 | public int compare(XMLItem o1, XMLItem o2) { 48 | return o1.getName().compareTo(o2.getName()); 49 | } 50 | 51 | } 52 | -------------------------------------------------------------------------------- /imixs-workflow-core/src/main/java/org/imixs/workflow/xml/imixs-workflow.xsd: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | -------------------------------------------------------------------------------- /imixs-workflow-core/src/main/java/org/imixs/workflow/xml/package-info.java: -------------------------------------------------------------------------------- 1 | @XmlSchema(elementFormDefault = XmlNsForm.QUALIFIED, attributeFormDefault = XmlNsForm.UNQUALIFIED, xmlns = { 2 | @XmlNs(namespaceURI = "http://www.w3.org/2001/XMLSchema-instance", prefix = "xsi"), 3 | @XmlNs(namespaceURI = "http://www.w3.org/2001/XMLSchema", prefix = "xs") } 4 | 5 | ) 6 | package org.imixs.workflow.xml; 7 | 8 | import jakarta.xml.bind.annotation.XmlNs; 9 | import jakarta.xml.bind.annotation.XmlNsForm; 10 | import jakarta.xml.bind.annotation.XmlSchema; 11 | 12 | /** 13 | * package-info.java is used to define the general xml name spaces used by the 14 | * jax-b marshaler. This will define the following namespaces : 15 | * 16 | * 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 . 17 | 18 | 19 | Project: 20 | http://www.imixs.org 21 | 22 | Contributors: 23 | Imixs Software Solutions GmbH - initial API and implementation 24 | Ralph Soika - Software Developer 25 | 26 | 27 | 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /imixs-workflow-core/src/main/resources/dataobjects.xsd: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /imixs-workflow-core/src/test/java/org/imixs/workflow/MockPlugin.java: -------------------------------------------------------------------------------- 1 | package org.imixs.workflow; 2 | 3 | import org.imixs.workflow.exceptions.PluginException; 4 | 5 | /** 6 | * Mokup Plugin 7 | * 8 | * increases the property runs per each run . 9 | * 10 | * @author rsoika 11 | * 12 | */ 13 | public class MockPlugin implements Plugin { 14 | 15 | @Override 16 | public void init(WorkflowContext actx) throws PluginException { 17 | } 18 | 19 | @Override 20 | public ItemCollection run(ItemCollection documentContext, 21 | ItemCollection documentActivity) throws PluginException { 22 | 23 | int i = documentContext.getItemValueInteger("runs"); 24 | i++; 25 | documentContext.replaceItemValue("runs", i); 26 | 27 | return documentContext; 28 | } 29 | 30 | @Override 31 | public void close(boolean rollbackTransaction) throws PluginException { 32 | // TODO Auto-generated method stub 33 | 34 | } 35 | 36 | } 37 | -------------------------------------------------------------------------------- /imixs-workflow-core/src/test/java/org/imixs/workflow/MockPluginNull.java: -------------------------------------------------------------------------------- 1 | package org.imixs.workflow; 2 | 3 | import org.imixs.workflow.exceptions.PluginException; 4 | 5 | /** 6 | * Mokup Plugin which returns null after run but changes the field "txtname"! 7 | * 8 | * @author rsoika 9 | * 10 | */ 11 | public class MockPluginNull implements Plugin { 12 | 13 | @Override 14 | public void init(WorkflowContext actx) throws PluginException { 15 | // no op 16 | } 17 | 18 | @Override 19 | public ItemCollection run(final ItemCollection documentContext, ItemCollection documentActivity) 20 | throws PluginException { 21 | documentContext.replaceItemValue("txtName", "should not be null"); 22 | return null; 23 | } 24 | 25 | @Override 26 | public void close(boolean rollbackTransaction) throws PluginException { 27 | // no op 28 | } 29 | 30 | } 31 | -------------------------------------------------------------------------------- /imixs-workflow-core/src/test/java/org/imixs/workflow/TestRuleEngine.java: -------------------------------------------------------------------------------- 1 | package org.imixs.workflow; 2 | 3 | import static org.junit.jupiter.api.Assertions.assertEquals; 4 | import static org.junit.jupiter.api.Assertions.assertFalse; 5 | import static org.junit.jupiter.api.Assertions.assertNotNull; 6 | import static org.junit.jupiter.api.Assertions.assertTrue; 7 | 8 | import javax.script.ScriptException; 9 | 10 | import org.imixs.workflow.exceptions.PluginException; 11 | import org.junit.jupiter.api.BeforeEach; 12 | import org.junit.jupiter.api.Test; 13 | 14 | /** 15 | * Test class for RuleEngine 16 | * 17 | * @author rsoika 18 | */ 19 | public class TestRuleEngine { 20 | protected RuleEngine ruleEngine = null; 21 | 22 | @BeforeEach 23 | public void setup() throws PluginException { 24 | ruleEngine = new RuleEngine(); 25 | } 26 | 27 | /** 28 | * This test verifies the evaluation of a simple script unsing the json objects. 29 | * 30 | * @throws ScriptException 31 | * @throws PluginException 32 | */ 33 | @Test 34 | public void testBasicScript() throws ScriptException, PluginException { 35 | 36 | ItemCollection workitem = new ItemCollection(); 37 | workitem.setItemValue("name", "Anna"); 38 | // define a script 39 | String js = "var result={}; if ('Anna' == workitem.getItemValueString('name')) result.colleague='Melman';"; 40 | // evaluate the business rule 41 | workitem = ruleEngine.evaluateBusinessRule(js, workitem, null); 42 | assertNotNull(workitem); 43 | assertEquals("Melman", workitem.getItemValueString("colleague")); 44 | } 45 | 46 | /** 47 | * This test verifies a boolean expression 48 | * 49 | * @throws ScriptException 50 | * @throws PluginException 51 | */ 52 | @Test 53 | public void testBooleanExpression() throws ScriptException, PluginException { 54 | 55 | ItemCollection workitem = new ItemCollection(); 56 | workitem.replaceItemValue("_budget", 1000); 57 | 58 | // evaluate true 59 | String script = "(workitem._budget && workitem._budget[0]>100)"; 60 | 61 | // test 62 | boolean result = ruleEngine.evaluateBooleanExpression(script, workitem); 63 | assertTrue(result); 64 | 65 | // evaluate false 66 | script = "(workitem._budget && workitem._budget[0]<=100)"; 67 | 68 | // test 69 | result = ruleEngine.evaluateBooleanExpression(script, workitem); 70 | assertFalse(result); 71 | 72 | } 73 | 74 | } 75 | -------------------------------------------------------------------------------- /imixs-workflow-core/src/test/java/org/imixs/workflow/bpmn/TestBPMNParserCollaborationMinutes.java: -------------------------------------------------------------------------------- 1 | package org.imixs.workflow.bpmn; 2 | 3 | import static org.junit.jupiter.api.Assertions.assertEquals; 4 | import static org.junit.jupiter.api.Assertions.assertFalse; 5 | import static org.junit.jupiter.api.Assertions.assertNotNull; 6 | import static org.junit.jupiter.api.Assertions.assertTrue; 7 | import static org.junit.jupiter.api.Assertions.fail; 8 | 9 | import java.util.Set; 10 | 11 | import org.imixs.workflow.MockWorkflowContext; 12 | import org.imixs.workflow.ModelManager; 13 | import org.imixs.workflow.exceptions.ModelException; 14 | import org.imixs.workflow.exceptions.PluginException; 15 | import org.junit.jupiter.api.BeforeEach; 16 | import org.junit.jupiter.api.Test; 17 | import org.openbpmn.bpmn.BPMNModel; 18 | 19 | /** 20 | * Test class to test the behavior of the ModelManager. 21 | * 22 | * Special cases with collaboration diagram containing two workflow groups 23 | * (participants) with different workflow models. 24 | * 25 | * 26 | * @author rsoika 27 | */ 28 | public class TestBPMNParserCollaborationMinutes { 29 | 30 | BPMNModel model = null; 31 | ModelManager modelManager = null; 32 | MockWorkflowContext workflowContext; 33 | 34 | @BeforeEach 35 | public void setup() { 36 | try { 37 | workflowContext = new MockWorkflowContext(); 38 | modelManager = new ModelManager(workflowContext); 39 | workflowContext.loadBPMNModelFromFile("/bpmn/minutes.bpmn"); 40 | model = workflowContext.fetchModel("1.0.0"); 41 | assertNotNull(model); 42 | 43 | } catch (ModelException | PluginException e) { 44 | fail(e.getMessage()); 45 | } 46 | } 47 | 48 | @Test 49 | public void testSimple() throws ModelException { 50 | 51 | Set groups = modelManager.findAllGroupsByModel(model); 52 | // Test Groups 53 | assertFalse(groups.contains("Collaboration")); 54 | assertTrue(groups.contains("Protokoll")); 55 | assertTrue(groups.contains("Protokollpunkt")); 56 | 57 | // test count of elements 58 | assertEquals(8, model.findAllActivities().size()); 59 | } 60 | 61 | } 62 | -------------------------------------------------------------------------------- /imixs-workflow-core/src/test/resources/.gitignore: -------------------------------------------------------------------------------- 1 | # ignore test resources 2 | write-example.xml -------------------------------------------------------------------------------- /imixs-workflow-core/src/test/resources/json/corrupted.json: -------------------------------------------------------------------------------- 1 | { 2 | "item":[ 3 | {"name":"$isauthor","value":{"@type":"xs:boolean","$":"true"}}, 4 | {"name":"$readaccess","value":{"@type":"xs:string","$":"Anna"}, 5 | "value":{"@type":"xs:string","$":"worklist"}}, 6 | {"name":"txtlog","value":[ 7 | {"@type":"xs:string","$":"A"}, 8 | {"@type":"xs:string","$":"B"}, 9 | {"@type":"xs:string","$":"C"}] 10 | }, 11 | {"name":"$activityid","value":{"@type":"xs:int","$":"10"}} 12 | ] 13 | } -------------------------------------------------------------------------------- /imixs-workflow-core/src/test/resources/json/multidocuments.json: -------------------------------------------------------------------------------- 1 | {"data": [{ 2 | "item":[ 3 | {"name":"$isauthor","value":{"@type":"xs:boolean","$":"true"}}, 4 | {"name":"$readaccess","value":{"@type":"xs:string","$":"Anna"}}, 5 | {"name":"txtmessage","value":{"@type":"xs:string","$":"worklist"}}, 6 | {"name":"txtlog","value":[ 7 | {"@type":"xs:string","$":"A"}, 8 | {"@type":"xs:string","$":"B"}, 9 | {"@type":"xs:string","$":"C"}] 10 | }, 11 | {"name":"$activityid","value":{"@type":"xs:int","$":"10"}} 12 | ] 13 | }, 14 | 15 | {"item":[ 16 | {"name":"$isauthor","value":{"@type":"xs:boolean","$":"true"}}, 17 | {"name":"$readaccess","value":{"@type":"xs:string","$":"Tom"}}, 18 | {"name":"txtmessage","value":{"@type":"xs:string","$":"worklist"}}, 19 | {"name":"txtlog","value":[ 20 | {"@type":"xs:string","$":"D"}, 21 | {"@type":"xs:string","$":"E"}, 22 | {"@type":"xs:string","$":"F"}] 23 | }, 24 | {"name":"$activityid","value":{"@type":"xs:int","$":"20"}} 25 | ] 26 | } 27 | 28 | ] 29 | } -------------------------------------------------------------------------------- /imixs-workflow-core/src/test/resources/json/simple.json: -------------------------------------------------------------------------------- 1 | { 2 | "item":[ 3 | {"name":"$isauthor","value":{"@type":"xs:boolean","$":"true"}}, 4 | {"name":"$readaccess","value":{"@type":"xs:string","$":"Anna"}}, 5 | {"name":"txtmessage","value":{"@type":"xs:string","$":"worklist"}}, 6 | {"name":"txtlog","value":[ 7 | {"@type":"xs:string","$":"A"}, 8 | {"@type":"xs:string","$":"B"}, 9 | {"@type":"xs:string","$":"C"}] 10 | }, 11 | {"name":"$activityid","value":{"@type":"xs:int","$":"10"}} 12 | ] 13 | } -------------------------------------------------------------------------------- /imixs-workflow-core/src/test/resources/json/simple_content.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": 70805774, 3 | "name": "simple data", 4 | "position": [ 5 | 1004.0, 6 | 288.0, 7 | 1050.0, 8 | 324.0 9 | ], 10 | "content": [ 11 | { 12 | "id": 70805774, 13 | "url": "https://api.com/70805774" 14 | }, 15 | { 16 | "id": 70805799, 17 | "url": "https://api.com/720040/content/70805799" 18 | } 19 | ] 20 | } 21 | 22 | -------------------------------------------------------------------------------- /imixs-workflow-core/src/test/resources/json/simple_numbers.json: -------------------------------------------------------------------------------- 1 | { 2 | "item":[ 3 | {"name":"$isauthor","value":{"@type":"xs:boolean","$":"true"}}, 4 | {"name":"$readaccess","value":{"@type":"xs:string","$":"Anna"}}, 5 | {"name":"txtmessage","value":{"@type":"xs:string","$":"worklist"}}, 6 | {"name":"$activityid","value":{"@type":"xs:int","$":"10"}}, 7 | {"name":"$processid","value":{"@type":"xs:int","$":"100"}} 8 | ] 9 | } -------------------------------------------------------------------------------- /imixs-workflow-engine/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | imixs-workflow 4 | org.imixs.workflow 5 | 6.2.2-SNAPSHOT 6 | 7 | 4.0.0 8 | imixs-workflow-engine 9 | Engine 10 | 11 | 12 | The Imixs Workflow engine is a full featured Workflow Management System (WFMS) based on the 13 | Java EE specification. The project extends the Imixs Workflow Core API 14 | project to fulfill the requirements to a scalable, transactional, robust and simple deployable JEE Workflow 15 | System. The Project provides different service components (EJBs) to be used in any kind of Java EE based business application. 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | org.imixs.workflow 25 | imixs-workflow-core 26 | ${project.version} 27 | 28 | 29 | 30 | 31 | javax.mail 32 | mail 33 | 1.4 34 | test 35 | 36 | 37 | 38 | 39 | 40 | -------------------------------------------------------------------------------- /imixs-workflow-engine/src/main/java/org/imixs/workflow/engine/AsyncEventSchedulerConfig.java: -------------------------------------------------------------------------------- 1 | package org.imixs.workflow.engine; 2 | 3 | public class AsyncEventSchedulerConfig { 4 | public static final String ASYNCEVENT_PROCESSOR_ENABLED = "asyncevent.processor.enabled"; 5 | public static final String ASYNCEVENT_PROCESSOR_INTERVAL = "asyncevent.processor.interval"; 6 | public static final String ASYNCEVENT_PROCESSOR_INITIALDELAY = "asyncevent.processor.initialdelay"; 7 | public static final String ASYNCEVENT_PROCESSOR_DEADLOCK = "asyncevent.processor.deadlock"; 8 | 9 | public static final String EVENTLOG_TOPIC_ASYNC_EVENT = "async.event"; 10 | } 11 | -------------------------------------------------------------------------------- /imixs-workflow-engine/src/main/java/org/imixs/workflow/engine/SetupEvent.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; 30 | 31 | /** 32 | * The SetupEvent provides a CDI observer pattern. The SetupEvent is fired by 33 | * the SetupService EJB. An event Observer can react on this event to extend the 34 | * setup routine. 35 | * 36 | * 37 | * @author Ralph Soika 38 | * @version 1.0 39 | * @see org.imixs.workflow.engine.SetupService 40 | */ 41 | public class SetupEvent { 42 | 43 | public SetupEvent() { 44 | super(); 45 | 46 | } 47 | 48 | } 49 | -------------------------------------------------------------------------------- /imixs-workflow-engine/src/main/java/org/imixs/workflow/engine/WorkflowSchedulerController.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; 30 | 31 | import jakarta.enterprise.context.RequestScoped; 32 | import jakarta.inject.Named; 33 | import org.imixs.workflow.engine.scheduler.SchedulerController; 34 | 35 | /** 36 | * The WorkflowSchedulerController is used to start and stop the standard workflow scheduler. 37 | *

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 . 17 | 18 | 19 | Project: 20 | http://www.imixs.org 21 | 22 | Contributors: 23 | Imixs Software Solutions GmbH - initial API and implementation 24 | Ralph Soika - Software Developer 25 | 26 | 27 | 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /imixs-workflow-engine/src/main/resources/META-INF/beans.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | -------------------------------------------------------------------------------- /imixs-workflow-engine/src/main/resources/META-INF/services/org.eclipse.microprofile.config.spi.ConfigSource: -------------------------------------------------------------------------------- 1 | org.imixs.workflow.engine.ImixsConfigSource -------------------------------------------------------------------------------- /imixs-workflow-engine/src/test/java/org/imixs/workflow/plugins/TestScheduler.java: -------------------------------------------------------------------------------- 1 | package org.imixs.workflow.plugins; 2 | 3 | import static org.junit.jupiter.api.Assertions.assertEquals; 4 | 5 | import java.text.ParseException; 6 | import java.text.SimpleDateFormat; 7 | import java.util.Calendar; 8 | import java.util.Date; 9 | 10 | import org.junit.jupiter.api.Test; 11 | 12 | /** 13 | * Test some date operations 14 | * 15 | * @author rsoika 16 | * 17 | */ 18 | public class TestScheduler { 19 | 20 | @Test 21 | public void testDateFormating() throws ParseException { 22 | String input_date = "2013/06/30"; 23 | SimpleDateFormat format1 = new SimpleDateFormat("yyyy/MM/dd"); 24 | Date dt1 = format1.parse(input_date); 25 | 26 | Calendar c = Calendar.getInstance(); 27 | c.setTime(dt1); 28 | 29 | // sunday = 1 30 | assertEquals(1, c.get(Calendar.DAY_OF_WEEK)); 31 | 32 | } 33 | 34 | } 35 | -------------------------------------------------------------------------------- /imixs-workflow-faces/java/org/imixs/workflow/engine/TestReportService.java: -------------------------------------------------------------------------------- 1 | package org.imixs.workflow.engine; 2 | 3 | import org.junit.Test; 4 | 5 | import org.junit.Assert; 6 | 7 | /** 8 | * Test class for ReportService 9 | * 10 | * This test verifies specific method implementations of the reportService. 11 | * 12 | * @author rsoika 13 | */ 14 | public class TestReportService { 15 | 16 | /** 17 | * Test the customNumberFormat method of the report service. 18 | */ 19 | @Test 20 | public void testFormatNumber() { 21 | ReportService reportService=new ReportService(); 22 | Assert.assertEquals("123,456.789", reportService.customNumberFormat("###,###.###", "en_UK", 123456.789)); 23 | Assert.assertEquals("123,456.789", reportService.customNumberFormat("###,###.###", "en_US", 123456.789)); 24 | Assert.assertEquals("123,456.79", reportService.customNumberFormat("###,##0.00", "en_US", 123456.789)); 25 | Assert.assertEquals("1.456,78", reportService.customNumberFormat("#,###,##0.00", "de_DE", 1456.781)); 26 | Assert.assertEquals("1.456,78 €", reportService.customNumberFormat("#,###,##0.00 €", "de_DE", 1456.781)); 27 | Assert.assertEquals("EUR 1.456,78", reportService.customNumberFormat("EUR #,###,##0.00", "de_DE", 1456.781)); 28 | } 29 | 30 | } 31 | -------------------------------------------------------------------------------- /imixs-workflow-faces/java/org/imixs/workflow/engine/TestSimulationService.java: -------------------------------------------------------------------------------- 1 | package org.imixs.workflow.engine; 2 | 3 | import org.imixs.workflow.ItemCollection; 4 | import org.imixs.workflow.WorkflowKernel; 5 | import org.imixs.workflow.exceptions.AccessDeniedException; 6 | import org.imixs.workflow.exceptions.ModelException; 7 | import org.imixs.workflow.exceptions.PluginException; 8 | import org.imixs.workflow.exceptions.ProcessingErrorException; 9 | import org.junit.Test; 10 | 11 | import org.junit.Assert; 12 | 13 | /** 14 | * Test class for the SimulationService 15 | * 16 | * This test simulates the processing life cycle of a workitem using the 17 | * SimulationService. 18 | * 19 | * @author rsoika 20 | */ 21 | public class TestSimulationService { 22 | 23 | /** 24 | * This test tests the conditional event gateways.... 25 | * 26 | * This is just a simple simulation... 27 | * 28 | * @throws ProcessingErrorException 29 | * @throws AccessDeniedException 30 | * @throws ModelException 31 | */ 32 | @Test 33 | public void testConditionalEvent1() 34 | throws AccessDeniedException, ProcessingErrorException, PluginException, ModelException { 35 | 36 | WorkflowSimulationEnvironment wse = new WorkflowSimulationEnvironment(); 37 | wse.setUp(); 38 | wse.loadModel("/bpmn/conditional_event1.bpmn"); 39 | 40 | // load test workitem 41 | ItemCollection workitem = new ItemCollection(); 42 | workitem.replaceItemValue(WorkflowKernel.MODELVERSION, WorkflowSimulationEnvironment.DEFAULT_MODEL_VERSION); 43 | 44 | // test _budget<100 45 | workitem.setTaskID(1000); 46 | workitem.replaceItemValue("_budget", 99); 47 | workitem.setEventID(10); 48 | workitem = wse.simulationService.processWorkItem(workitem, null); 49 | Assert.assertEquals(1200, workitem.getTaskID()); 50 | 51 | // test _budget>100 52 | workitem.setTaskID(1000); 53 | workitem.replaceItemValue("_budget", 9999); 54 | workitem.setEventID(10); 55 | workitem = wse.simulationService.processWorkItem(workitem, null); 56 | Assert.assertEquals(1100, workitem.getTaskID()); 57 | 58 | } 59 | 60 | } 61 | -------------------------------------------------------------------------------- /imixs-workflow-faces/java/org/imixs/workflow/plugins/TestScheduler.java: -------------------------------------------------------------------------------- 1 | package org.imixs.workflow.plugins; 2 | 3 | import java.text.ParseException; 4 | import java.text.SimpleDateFormat; 5 | import java.util.Calendar; 6 | import java.util.Date; 7 | 8 | import org.junit.Assert; 9 | import org.junit.Test; 10 | 11 | /** 12 | * Test some date operations 13 | * 14 | * @author rsoika 15 | * 16 | */ 17 | public class TestScheduler { 18 | 19 | 20 | 21 | @Test 22 | public void testDateFormating() throws ParseException { 23 | String input_date="2013/06/30"; 24 | SimpleDateFormat format1=new SimpleDateFormat("yyyy/MM/dd"); 25 | Date dt1=format1.parse(input_date); 26 | 27 | Calendar c = Calendar.getInstance(); 28 | c.setTime(dt1); 29 | 30 | // sunday = 1 31 | Assert.assertEquals(1,c.get(Calendar.DAY_OF_WEEK)); 32 | 33 | 34 | // input_date="2013/07/11"; 35 | 36 | // Date convertedDate = dateFormat.parse(confgEntry 37 | // .substring(confgEntry.indexOf('=') + 1)); 38 | // scheduerExpression.start(convertedDate); 39 | 40 | 41 | 42 | 43 | } 44 | 45 | 46 | } 47 | -------------------------------------------------------------------------------- /imixs-workflow-faces/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | imixs-workflow 4 | org.imixs.workflow 5 | 6.2.2-SNAPSHOT 6 | 7 | 4.0.0 8 | imixs-workflow-faces 9 | Web Tools 10 | 11 | 12 | 13 | The Imixs Workflow JSF Utilities simplify the usage of the Java EE components in a web module 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | org.imixs.workflow 24 | imixs-workflow-engine 25 | ${project.version} 26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /imixs-workflow-faces/src/main/java/org/imixs/workflow/faces/util/SelectItemComparator.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.faces.util; 30 | 31 | import java.text.Collator; 32 | import java.util.Comparator; 33 | import java.util.Locale; 34 | 35 | import jakarta.faces.context.FacesContext; 36 | import jakarta.faces.model.SelectItem; 37 | 38 | /** 39 | * Sorts a ArrayList of SelectItems by label 40 | * 41 | * @author rsoika 42 | * 43 | */ 44 | public class SelectItemComparator implements Comparator { 45 | private final Collator collator; 46 | 47 | private final boolean ascending; 48 | 49 | public SelectItemComparator(boolean ascending) { 50 | Locale locale = FacesContext.getCurrentInstance().getViewRoot().getLocale(); 51 | this.collator = Collator.getInstance(locale); 52 | this.ascending = ascending; 53 | } 54 | 55 | public SelectItemComparator(Locale locale, boolean ascending) { 56 | this.collator = Collator.getInstance(locale); 57 | this.ascending = ascending; 58 | } 59 | 60 | public int compare(SelectItem a, SelectItem b) { 61 | int result = this.collator.compare(a.getLabel(), b.getLabel()); 62 | if (!this.ascending) { 63 | result = -result; 64 | } 65 | return result; 66 | } 67 | 68 | } 69 | -------------------------------------------------------------------------------- /imixs-workflow-faces/src/main/java/org/imixs/workflow/faces/util/ValidationException.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.faces.util; 30 | 31 | import org.imixs.workflow.exceptions.PluginException; 32 | import org.imixs.workflow.exceptions.WorkflowException; 33 | 34 | /** 35 | * A ValidationException should be thrown by a JSF managed bean or CDI bean 36 | * 37 | * @see PluginException 38 | * @author rsoika 39 | */ 40 | public class ValidationException extends WorkflowException { 41 | 42 | private static final long serialVersionUID = 1L; 43 | 44 | public ValidationException(String aErrorContext, String aErrorCode, String message) { 45 | super(aErrorContext, aErrorCode, message); 46 | } 47 | 48 | public ValidationException(String aErrorContext, String aErrorCode, String message, Exception e) { 49 | super(aErrorContext, aErrorCode, message, e); 50 | } 51 | 52 | public ValidationException(String aErrorContext, String aErrorCode, String message, Object[] params) { 53 | super(aErrorContext, aErrorCode, message); 54 | this.setErrorParameters(params); 55 | } 56 | 57 | } 58 | -------------------------------------------------------------------------------- /imixs-workflow-faces/src/main/resources/META-INF/ web-fragment.xml: -------------------------------------------------------------------------------- 1 | 5 | 6 | -------------------------------------------------------------------------------- /imixs-workflow-faces/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 . 17 | 18 | 19 | Project: 20 | http://www.imixs.org 21 | 22 | Contributors: 23 | Imixs Software Solutions GmbH - initial API and implementation 24 | Ralph Soika - Software Developer 25 | 26 | 27 | 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /imixs-workflow-faces/src/main/resources/META-INF/beans.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | -------------------------------------------------------------------------------- /imixs-workflow-faces/src/main/resources/META-INF/faces-config.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /imixs-workflow-faces/src/main/resources/META-INF/resources/imixs/css/imixs.css: -------------------------------------------------------------------------------- 1 | /* Fileupload control */ 2 | .imixsfileupload { 3 | display: flex; 4 | flex-wrap: wrap; 5 | align-items: center; 6 | gap: 15px; 7 | } 8 | .imixsfileupload table { 9 | width: 100%; 10 | border-collapse: collapse; 11 | } 12 | .imixsfileupload table, 13 | .imixsfileupload td { 14 | border-bottom: 1px solid #ccc; 15 | text-align: left; 16 | padding: 5px; 17 | } 18 | .imixsfileupload th{ 19 | background-color: #efefef; 20 | border-bottom: 2px solid #206B87; 21 | } 22 | .imixsfileupload table th:last-child, 23 | .imixsfileupload table td:last-child { 24 | width: 30px; 25 | text-align: center; 26 | } 27 | 28 | .imixsfileupload input[type="file"] { 29 | width: 0.1px; 30 | height: 0.1px; 31 | opacity: 0; 32 | overflow: hidden; 33 | position: absolute; 34 | z-index: -1; 35 | font-weight: 700; 36 | } 37 | .imixsfileupload input[type="file"] + label { 38 | font-size: 14px; 39 | font-weight: 600; 40 | color: white; 41 | background-color: #206B87;; 42 | display: inline-block; 43 | padding: 0.35em 0.75em; 44 | border-radius: 4px; 45 | cursor: pointer; 46 | border-radius: 0; 47 | text-align: center; 48 | flex-grow: 1; 49 | } 50 | 51 | .imixsfileupload input[type="file"] + label:hover { 52 | background-color: #206B87;; 53 | } 54 | 55 | .imixsfileupload .drop-area { 56 | border: 2px dashed #ccc; 57 | border-radius: 2px; 58 | padding: 20px; 59 | text-align: center; 60 | padding: 5px 40px; 61 | transition: border-color 0.3s ease; 62 | flex-grow: 1; 63 | min-width: 200px; 64 | } 65 | 66 | .imixsfileupload .drop-area.highlight { 67 | border-color: #4285f4; 68 | background-color: rgba(66, 133, 244, 0.1); 69 | } 70 | 71 | .imixsfileupload .drop-area span { 72 | color: #666; 73 | margin: 0; 74 | } 75 | 76 | .imixsfileupload-table { 77 | flex-grow: 1; 78 | flex-basis: 100%; 79 | } 80 | 81 | .imixsfileupload .remove-link { 82 | cursor: pointer; 83 | } 84 | .imixsfileupload .remove-link:hover { 85 | text-decoration: none; 86 | } -------------------------------------------------------------------------------- /imixs-workflow-faces/src/main/resources/META-INF/resources/imixs/imixsDateInput.xhtml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |

16 | 17 | 18 | 19 | 20 | : 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 |
58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | -------------------------------------------------------------------------------- /imixs-workflow-faces/src/main/resources/META-INF/resources/imixs/imixsHeader.xhtml: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 26 | 27 | 28 | 30 | 31 | 32 | 52 | 53 | -------------------------------------------------------------------------------- /imixs-workflow-faces/src/main/resources/META-INF/resources/imixs/imixsWorkflowActions.xhtml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 8 | 9 | 11 | 12 | 13 | 14 | 15 | 16 | 18 | 21 | 24 | 26 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /imixs-workflow-faces/src/main/resources/META-INF/resources/imixs/jquery/jquery.ui.datepicker-de.js: -------------------------------------------------------------------------------- 1 | /* German initialisation for the jQuery UI date picker plugin. */ 2 | /* Written by Milian Wolff (mail@milianw.de). */ 3 | jQuery(function($){ 4 | $.datepicker.regional['de'] = { 5 | closeText: 'schließen', 6 | prevText: '<zurück', 7 | nextText: 'Vor>', 8 | currentText: 'heute', 9 | monthNames: ['Januar','Februar','März','April','Mai','Juni', 10 | 'Juli','August','September','Oktober','November','Dezember'], 11 | monthNamesShort: ['Jan','Feb','Mär','Apr','Mai','Jun', 12 | 'Jul','Aug','Sep','Okt','Nov','Dez'], 13 | dayNames: ['Sonntag','Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag'], 14 | dayNamesShort: ['So','Mo','Di','Mi','Do','Fr','Sa'], 15 | dayNamesMin: ['So','Mo','Di','Mi','Do','Fr','Sa'], 16 | weekHeader: 'KW', 17 | dateFormat: 'dd.mm.yy', 18 | firstDay: 1, 19 | isRTL: false, 20 | showMonthAfterYear: false, 21 | yearSuffix: ''}; 22 | $.datepicker.setDefaults($.datepicker.regional['de']); 23 | }); 24 | -------------------------------------------------------------------------------- /imixs-workflow-faces/src/main/resources/META-INF/resources/imixs/jquery/themes/imixs/LICENSE.txt: -------------------------------------------------------------------------------- 1 | Copyright jQuery Foundation and other contributors, https://jquery.org/ 2 | 3 | This software consists of voluntary contributions made by many 4 | individuals. For exact contribution history, see the revision history 5 | available at https://github.com/jquery/jquery-ui 6 | 7 | The following license applies to all parts of this software except as 8 | documented below: 9 | 10 | ==== 11 | 12 | Permission is hereby granted, free of charge, to any person obtaining 13 | a copy of this software and associated documentation files (the 14 | "Software"), to deal in the Software without restriction, including 15 | without limitation the rights to use, copy, modify, merge, publish, 16 | distribute, sublicense, and/or sell copies of the Software, and to 17 | permit persons to whom the Software is furnished to do so, subject to 18 | the following conditions: 19 | 20 | The above copyright notice and this permission notice shall be 21 | included in all copies or substantial portions of the Software. 22 | 23 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 24 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 25 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 26 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 27 | LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 28 | OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 29 | WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 30 | 31 | ==== 32 | 33 | Copyright and related rights for sample code are waived via CC0. Sample 34 | code is defined as all source code contained within the demos directory. 35 | 36 | CC0: http://creativecommons.org/publicdomain/zero/1.0/ 37 | 38 | ==== 39 | 40 | All files located in the node_modules and external directories are 41 | externally maintained libraries used by this software which have their 42 | own licenses; we recommend you read them, as their terms may differ from 43 | the terms above. 44 | -------------------------------------------------------------------------------- /imixs-workflow-faces/src/main/resources/META-INF/resources/imixs/jquery/themes/imixs/README: -------------------------------------------------------------------------------- 1 | 2 | # Creation of JQuery-UI Theme for Imixs-Office-Workflow 3 | 4 | 5 | ######################## 6 | # Main Colors 7 | ######################## 8 | 9 | main: #61B1D0 10 | light: #ECF3F8 11 | dark: #206B87 (buttons) 12 | 13 | contrast: #FAA732 14 | #22A976 15 | 16 | 17 | 18 | ######################## 19 | # Theme Roller: 20 | ######################## 21 | 22 | https://jqueryui.templersmc.net/ 23 | 24 | Font: 25 | ==================================== 26 | font-weight: normal 27 | font-size: 1.0 28 | 29 | 30 | Corner-Radius: 31 | ==================================== 32 | 0px 33 | 34 | 35 | 36 | Header toolbar 37 | ==================================== 38 | background #fff 39 | border #fff; 40 | text: #333333 41 | 42 | 43 | Content: 44 | ==================================== 45 | background: #fff 46 | icon #fff 47 | text: #333 48 | 49 | 50 | Clickable-default: 51 | ==================================== 52 | #206B87 , none , 0% 53 | Text: #fff 54 | border: #206B87 55 | icon: #fff 56 | 57 | 58 | Clickable-hover: 59 | ==================================== 60 | #2a8aad 61 | border : #2a8aad 62 | text: #fff 63 | 64 | Clickable-Activ 65 | ==================================== 66 | #faa732 67 | border : #faa732 68 | text: #fff 69 | 70 | 71 | 72 | Higlight: 73 | ==================================== 74 | 75 | background: #ECF3F8 76 | border: #206B87 77 | text #333333 78 | icon #206B87 79 | 80 | 81 | Error: 82 | ==================================== 83 | 84 | background: #ffa4a7 85 | text #333333 86 | border: #cc0000 87 | icon: #cc0000 88 | -------------------------------------------------------------------------------- /imixs-workflow-faces/src/main/resources/META-INF/resources/imixs/jquery/themes/imixs/images/ui-icons_206B87_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imixs/imixs-workflow/78a4a8ae007a3e03c0c405ab4f38174c58236ace/imixs-workflow-faces/src/main/resources/META-INF/resources/imixs/jquery/themes/imixs/images/ui-icons_206B87_256x240.png -------------------------------------------------------------------------------- /imixs-workflow-faces/src/main/resources/META-INF/resources/imixs/jquery/themes/imixs/images/ui-icons_333333_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imixs/imixs-workflow/78a4a8ae007a3e03c0c405ab4f38174c58236ace/imixs-workflow-faces/src/main/resources/META-INF/resources/imixs/jquery/themes/imixs/images/ui-icons_333333_256x240.png -------------------------------------------------------------------------------- /imixs-workflow-faces/src/main/resources/META-INF/resources/imixs/jquery/themes/imixs/images/ui-icons_cc0000_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imixs/imixs-workflow/78a4a8ae007a3e03c0c405ab4f38174c58236ace/imixs-workflow-faces/src/main/resources/META-INF/resources/imixs/jquery/themes/imixs/images/ui-icons_cc0000_256x240.png -------------------------------------------------------------------------------- /imixs-workflow-faces/src/main/resources/META-INF/resources/imixs/jquery/themes/imixs/images/ui-icons_fff_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imixs/imixs-workflow/78a4a8ae007a3e03c0c405ab4f38174c58236ace/imixs-workflow-faces/src/main/resources/META-INF/resources/imixs/jquery/themes/imixs/images/ui-icons_fff_256x240.png -------------------------------------------------------------------------------- /imixs-workflow-faces/src/main/resources/META-INF/resources/imixs/jquery/themes/imixs/images/ui-icons_ffffff_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imixs/imixs-workflow/78a4a8ae007a3e03c0c405ab4f38174c58236ace/imixs-workflow-faces/src/main/resources/META-INF/resources/imixs/jquery/themes/imixs/images/ui-icons_ffffff_256x240.png -------------------------------------------------------------------------------- /imixs-workflow-faces/src/main/resources/META-INF/resources/imixs/jquery/themes/imixs/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "jquery-ui", 3 | "title": "jQuery UI", 4 | "description": "A curated set of user interface interactions, effects, widgets, and themes built on top of the jQuery JavaScript Library.", 5 | "version": "1.12.1", 6 | "homepage": "http://jqueryui.com", 7 | "author": { 8 | "name": "jQuery Foundation and other contributors", 9 | "url": "https://github.com/jquery/jquery-ui/blob/1.12.1/AUTHORS.txt" 10 | }, 11 | "main": "ui/widget.js", 12 | "maintainers": [ 13 | { 14 | "name": "Scott González", 15 | "email": "scott.gonzalez@gmail.com", 16 | "url": "http://scottgonzalez.com" 17 | }, 18 | { 19 | "name": "Jörn Zaefferer", 20 | "email": "joern.zaefferer@gmail.com", 21 | "url": "http://bassistance.de" 22 | }, 23 | { 24 | "name": "Mike Sherov", 25 | "email": "mike.sherov@gmail.com", 26 | "url": "http://mike.sherov.com" 27 | }, 28 | { 29 | "name": "TJ VanToll", 30 | "email": "tj.vantoll@gmail.com", 31 | "url": "http://tjvantoll.com" 32 | }, 33 | { 34 | "name": "Felix Nagel", 35 | "email": "info@felixnagel.com", 36 | "url": "http://www.felixnagel.com" 37 | }, 38 | { 39 | "name": "Alex Schmitz", 40 | "email": "arschmitz@gmail.com", 41 | "url": "https://github.com/arschmitz" 42 | } 43 | ], 44 | "repository": { 45 | "type": "git", 46 | "url": "git://github.com/jquery/jquery-ui.git" 47 | }, 48 | "bugs": "https://bugs.jqueryui.com/", 49 | "license": "MIT", 50 | "scripts": { 51 | "test": "grunt" 52 | }, 53 | "dependencies": {}, 54 | "devDependencies": { 55 | "commitplease": "2.3.0", 56 | "grunt": "1.5.3", 57 | "grunt-bowercopy": "1.2.4", 58 | "grunt-cli": "0.1.13", 59 | "grunt-compare-size": "0.4.0", 60 | "grunt-contrib-concat": "0.5.1", 61 | "grunt-contrib-csslint": "0.5.0", 62 | "grunt-contrib-jshint": "0.12.0", 63 | "grunt-contrib-qunit": "1.0.1", 64 | "grunt-contrib-requirejs": "0.4.4", 65 | "grunt-contrib-uglify": "0.11.1", 66 | "grunt-git-authors": "3.1.0", 67 | "grunt-html": "6.0.0", 68 | "grunt-jscs": "2.1.0", 69 | "load-grunt-tasks": "3.4.0", 70 | "rimraf": "2.5.1", 71 | "testswarm": "1.1.0" 72 | }, 73 | "keywords": [] 74 | } 75 | -------------------------------------------------------------------------------- /imixs-workflow-faces/src/main/resources/META-INF/resources/imixs/test.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 44 | 45 | 46 | 47 | 48 | 51 | 52 | 53 | -------------------------------------------------------------------------------- /imixs-workflow-faces/src/test/java/org/imixs/workflow/jee/faces/workitem/DataControllerTest.java: -------------------------------------------------------------------------------- 1 | package org.imixs.workflow.jee.faces.workitem; 2 | 3 | import static org.junit.jupiter.api.Assertions.assertFalse; 4 | import static org.junit.jupiter.api.Assertions.assertTrue; 5 | 6 | import java.util.Calendar; 7 | import java.util.Date; 8 | 9 | import org.imixs.workflow.ItemCollection; 10 | import org.imixs.workflow.faces.data.DocumentController; 11 | import org.junit.jupiter.api.BeforeEach; 12 | import org.junit.jupiter.api.Test; 13 | 14 | /** 15 | * Test class for the DataController 16 | * 17 | * @author rsoika 18 | * 19 | */ 20 | public class DataControllerTest { 21 | 22 | DocumentController dataController = null; 23 | 24 | @BeforeEach 25 | public void before() { 26 | dataController = new DocumentController(); 27 | } 28 | 29 | @Test 30 | public void testBasic() { 31 | ItemCollection workitem = new ItemCollection(); 32 | // test is new 33 | 34 | dataController.setDocument(workitem); 35 | assertTrue(dataController.isNewWorkitem()); 36 | 37 | Date someDate = new Date(); 38 | workitem.replaceItemValue("$Modified", someDate); 39 | workitem.replaceItemValue("$Created", someDate); 40 | dataController.setDocument(workitem); 41 | assertFalse(dataController.isNewWorkitem()); 42 | 43 | someDate = new Date(); 44 | Calendar cal = Calendar.getInstance(); 45 | cal.setTime(someDate); 46 | cal.add(Calendar.SECOND, +1); 47 | workitem.replaceItemValue("$Modified", cal.getTime()); 48 | dataController.setDocument(workitem); 49 | assertFalse(dataController.isNewWorkitem()); 50 | 51 | } 52 | 53 | } 54 | -------------------------------------------------------------------------------- /imixs-workflow-index-lucene/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 4.0.0 3 | 4 | org.imixs.workflow 5 | imixs-workflow 6 | 6.2.2-SNAPSHOT 7 | 8 | imixs-workflow-index-lucene 9 | Search Index Apache Lucene 10 | 11 | 12 | 13 | 14 | 15 | org.imixs.workflow 16 | imixs-workflow-core 17 | ${project.version} 18 | 19 | 20 | org.imixs.workflow 21 | imixs-workflow-engine 22 | ${project.version} 23 | 24 | 25 | 26 | 27 | org.apache.lucene 28 | lucene-core 29 | ${lucene.version} 30 | 31 | 32 | org.apache.lucene 33 | lucene-analyzers-common 34 | ${lucene.version} 35 | 36 | 37 | org.apache.lucene 38 | lucene-queryparser 39 | ${lucene.version} 40 | 41 | 42 | lucene-facet 43 | org.apache.lucene 44 | ${lucene.version} 45 | 46 | 47 | Serach Index based on Apache Lucene Core 48 | -------------------------------------------------------------------------------- /imixs-workflow-index-lucene/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 . 17 | 18 | 19 | Project: 20 | http://www.imixs.org 21 | 22 | Contributors: 23 | Imixs Software Solutions GmbH - initial API and implementation 24 | Ralph Soika - Software Developer 25 | 26 | 27 | 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /imixs-workflow-index-lucene/src/main/resources/META-INF/beans.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | -------------------------------------------------------------------------------- /imixs-workflow-index-solr/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 4.0.0 3 | 4 | org.imixs.workflow 5 | imixs-workflow 6 | 6.2.2-SNAPSHOT 7 | 8 | imixs-workflow-index-solr 9 | Search Index Apache Solr 10 | 11 | 12 | 13 | 14 | 15 | 16 | org.imixs.workflow 17 | imixs-workflow-core 18 | ${project.version} 19 | 20 | 21 | org.imixs.workflow 22 | imixs-workflow-engine 23 | ${project.version} 24 | 25 | 26 | Search index based on Apache Lucene Solr 27 | -------------------------------------------------------------------------------- /imixs-workflow-index-solr/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 . 17 | 18 | 19 | Project: 20 | http://www.imixs.org 21 | 22 | Contributors: 23 | Imixs Software Solutions GmbH - initial API and implementation 24 | Ralph Soika - Software Developer 25 | 26 | 27 | 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /imixs-workflow-index-solr/src/main/resources/META-INF/beans.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | -------------------------------------------------------------------------------- /imixs-workflow-index-solr/src/test/java/org/imixs/workflow/engine/solr/TestStripInvalidCharacters.java: -------------------------------------------------------------------------------- 1 | package org.imixs.workflow.engine.solr; 2 | 3 | import static org.junit.jupiter.api.Assertions.assertEquals; 4 | 5 | import org.imixs.workflow.exceptions.ModelException; 6 | import org.imixs.workflow.exceptions.PluginException; 7 | import org.junit.jupiter.api.BeforeEach; 8 | import org.junit.jupiter.api.Test; 9 | 10 | /** 11 | * Test striping invalid characters 12 | * 13 | * @author rsoika 14 | * 15 | */ 16 | public class TestStripInvalidCharacters { 17 | SolrIndexService solrIndexService; 18 | 19 | @BeforeEach 20 | public void setUp() throws PluginException, ModelException { 21 | solrIndexService = new SolrIndexService(); 22 | } 23 | 24 | /** 25 | * Test 26 | * 27 | */ 28 | @Test 29 | public void testCDATA() { 30 | 31 | String testString = "Hello ....]]> Data!"; 32 | 33 | String result = solrIndexService.stripCDATA(testString); 34 | 35 | assertEquals("Hello .... Data!", result); 36 | 37 | } 38 | 39 | } 40 | -------------------------------------------------------------------------------- /imixs-workflow-jax-rs/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | imixs-workflow 4 | org.imixs.workflow 5 | 6.2.2-SNAPSHOT 6 | 7 | 4.0.0 8 | imixs-workflow-jax-rs 9 | Rest API 10 | Imixs Workflow REST Service API provides a servlet implementation for the Imixs JEE Workflow Components. 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | org.imixs.workflow 19 | imixs-workflow-engine 20 | ${project.version} 21 | provided 22 | 23 | 24 | 30 | 31 | 37 | 38 | 39 | 40 | org.apache.xmlgraphics 41 | fop 42 | 2.5 43 | provided 44 | 45 | 46 | 47 | 48 | 49 | -------------------------------------------------------------------------------- /imixs-workflow-jax-rs/src/main/java/org/imixs/workflow/jaxrs/RestAPIUtil.java: -------------------------------------------------------------------------------- 1 | package org.imixs.workflow.jaxrs; 2 | 3 | import java.util.List; 4 | import java.util.StringTokenizer; 5 | import java.util.Vector; 6 | 7 | /** 8 | * This Utility class provides methods to convert Item Values in Rest API calls. 9 | */ 10 | public class RestAPIUtil { 11 | 12 | /** 13 | * This method returns a List object from a given comma separated string. The 14 | * method returns null if no elements are found. The provided parameter looks 15 | * typical like this: 16 | * txtWorkflowStatus,numProcessID,txtName 17 | * 18 | * 19 | * @param items 20 | * @return 21 | */ 22 | public static List getItemList(String items) { 23 | if (items == null || "".equals(items)) 24 | return null; 25 | Vector v = new Vector(); 26 | StringTokenizer st = new StringTokenizer(items, ","); 27 | while (st.hasMoreTokens()) 28 | v.add(st.nextToken()); 29 | return v; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /imixs-workflow-jax-rs/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 . 17 | 18 | 19 | Project: 20 | http://www.imixs.org 21 | 22 | Contributors: 23 | Imixs Software Solutions GmbH - initial API and implementation 24 | Ralph Soika - Software Developer 25 | 26 | 27 | 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /imixs-workflow-jax-rs/src/main/resources/META-INF/beans.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | -------------------------------------------------------------------------------- /imixs-workflow-jax-rs/src/main/webapp/WEB-INF/README: -------------------------------------------------------------------------------- 1 | Configuration 2 | ============= 3 | 4 | The WEB-INF Folder contains a sample configuration for a web module using the 5 | imixs-workflow-jax-rs implementation. 6 | Simply copy the web.xml or the servlet configuration contained in this folder into your 7 | web project to configure the imixs-workflow-jax-rs service. 8 | 9 | See details and documentation : 10 | http://www.imixs.org/ -------------------------------------------------------------------------------- /imixs-workflow-jax-rs/src/main/webapp/WEB-INF/sun-web.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | org.imixs.ACCESSLEVEL.NOACCESS 7 | IMIXS-WORKFLOW-Noaccess 8 | 9 | 10 | 11 | org.imixs.ACCESSLEVEL.READERACCESS 12 | IMIXS-WORKFLOW-Reader 13 | 14 | 15 | 16 | org.imixs.ACCESSLEVEL.AUTHORACCESS 17 | IMIXS-WORKFLOW-Author 18 | 19 | 20 | 21 | org.imixs.ACCESSLEVEL.EDITORACCESS 22 | IMIXS-WORKFLOW-Editor 23 | 24 | 25 | 26 | org.imixs.ACCESSLEVEL.MANAGERACCESS 27 | IMIXS-WORKFLOW-Manager 28 | workflowuser 29 | 30 | 31 | 32 | 33 | 34 | Keep a copy of the generated servlet class java 35 | code. 36 | 37 | 38 | -------------------------------------------------------------------------------- /imixs-workflow-jax-rs/src/main/webapp/WEB-INF/web.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | org.imixs.workflow.jax-rs 7 | 8 | 9 | Jersey Web Application 10 | com.sun.jersey.spi.container.servlet.ServletContainer 11 | 12 | com.sun.jersey.config.property.packages 13 | org.imixs.workflow.jaxrs 14 | 15 | 1 16 | 17 | 18 | Jersey Web Application 19 | /* 20 | 21 | 22 | 23 | 24 | 25 | BASIC 26 | imixsrealm 27 | 28 | 29 | 30 | 31 | restricted 32 | /* 33 | GET 34 | POST 35 | PUT 36 | 37 | 38 | org.imixs.ACCESSLEVEL.READERACCESS 39 | org.imixs.ACCESSLEVEL.AUTHORACCESS 40 | org.imixs.ACCESSLEVEL.EDITORACCESS 41 | org.imixs.ACCESSLEVEL.MANAGERACCESS 42 | 43 | 44 | 45 | 46 | org.imixs.ACCESSLEVEL.NOACCESS 47 | 48 | 49 | org.imixs.ACCESSLEVEL.READERACCESS 50 | 51 | 52 | org.imixs.ACCESSLEVEL.AUTHORACCESS 53 | 54 | 55 | org.imixs.ACCESSLEVEL.EDITORACCESS 56 | 57 | 58 | org.imixs.ACCESSLEVEL.MANAGERACCESS 59 | 60 | -------------------------------------------------------------------------------- /jakarta_ee_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imixs/imixs-workflow/78a4a8ae007a3e03c0c405ab4f38174c58236ace/jakarta_ee_logo.png -------------------------------------------------------------------------------- /screen_001.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imixs/imixs-workflow/78a4a8ae007a3e03c0c405ab4f38174c58236ace/screen_001.png -------------------------------------------------------------------------------- /screen_002.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imixs/imixs-workflow/78a4a8ae007a3e03c0c405ab4f38174c58236ace/screen_002.png -------------------------------------------------------------------------------- /screen_003.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imixs/imixs-workflow/78a4a8ae007a3e03c0c405ab4f38174c58236ace/screen_003.png -------------------------------------------------------------------------------- /small_h-trans.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imixs/imixs-workflow/78a4a8ae007a3e03c0c405ab4f38174c58236ace/small_h-trans.png -------------------------------------------------------------------------------- /src/site/README.md: -------------------------------------------------------------------------------- 1 | # Imixs-Workflow Documenation 2 | 3 | Imixs-Workflow documentation is generated using the maven site plugin in the parent project. 4 | The pages are written using markdown. 5 | 6 | ## Generate Site 7 | 8 | $ mvn clean site 9 | 10 | 11 | 12 | 13 | ## open tasks: 14 | 15 | review workflowservice.md 16 | 17 | 18 | 19 | (review finished: plugin-api.md) 20 | 21 | 22 | 23 | ## Plant UML 24 | 25 | java -jar plantuml.jar -verbose plugin_api.uml 26 | 27 | java -jar plantuml.jar -verbose adapter_api.uml 28 | 29 | java -jar plantuml.jar -verbose analysisplugin.uml -------------------------------------------------------------------------------- /src/site/REVIEW.md: -------------------------------------------------------------------------------- 1 | # Goals 2 | 3 | * Keep it short 4 | * Say what you really mean - figure out your true meaning 5 | * Start boldly - get rid of introductory warm up text 6 | 7 | # Review Process 8 | 9 | sub_microservice.html 2018-09-21 10 | sub_security.html 2018-09-22 11 | --------- 12 | 13 | Index.md 2018-09-22 14 | core/ 15 | ├── index.md 2019-02-04 16 | ├── xml/ 17 | ├── index.md 2018-11-08 18 | ├── adapter.md 2018-11-08 19 | deployment/ 20 | ├── index.md 2019-02-06 21 | engine/ 22 | ├── index.md 2019-02-24 23 | ├── acl.md 2018-10.16 24 | ├── plugins/ 25 | ├── splitandjoinplugin.html 2019-01-27 26 | ├── query.md 2019-03-01 27 | ├── luceneservice.md 2019-03-01 28 | modelling/ 29 | ├── index.md 2018-09-21 30 | ├── activities.md 2018-09-24 31 | ├── process.md 2019-03-24 32 | quickstart/ 33 | ├── workflowengine.md 2018-10-07 34 | maven.md 2019-02-06 35 | quistart.md 2019-01-31 36 | sampleapplication.md 2019-02-08 37 | administration.md 2019-02-08 38 | 39 | -------------------------------------------------------------------------------- /src/site/markdown/architecture/microservice.md: -------------------------------------------------------------------------------- 1 | # Microservices and External APIs 2 | 3 | Imixs-Workflow supports a great Microservice-Architecture and a powerful Rest-API. Make use of this architecture in all cases you need to integrate external APIs. 4 | 5 | Normally, you would first add an external API via a Maven dependency and then implement it in a plugin or adapter class. Yes, this works, but it also creates unnecessary dependencies in your core application. A better way to connect external APIs is to implement them in a separate microservice and then establish a communication via the Imixs Event-Log API. 6 | 7 | 8 | 9 | This makes your application lean and more maintainable as you avoid a big single monolithic application artefact. 10 | -------------------------------------------------------------------------------- /src/site/markdown/core/xml/adapter.md: -------------------------------------------------------------------------------- 1 | # XML Adapter Classes 2 | 3 | The Imixs-Core API provides adapter classes to transform a Imixs ItemCollection into a XML object and vice versa. 4 | 5 | ## XMLDocumentAdapter 6 | 7 | The XMLDocumentAdapter can be used to transform a Imixs ItemCollection in XML or transform a XML source into a ItemCollection: 8 | 9 | ItemCollection workitem; 10 | .... 11 | XMLDocument xmlData = XMLDocumentAdapter.getDocument(workitem); 12 | ... 13 | 14 | 15 | ## XMLDataCollectionAdapter 16 | 17 | The XMLDataCollectionAdapter can be used to transform a List of Imixs ItemCollection elements in XML or transform a XML source into a List of ItemCollection: 18 | 19 | List dataList; 20 | ... 21 | XMLDataCollection xmlData = XMLDataCollectionAdapter.getDataCollection(dataList); 22 | ... 23 | 24 | The next example shows how to read a XML source into a XMLDataCollectionAdapter 25 | 26 | 27 | List col = null; 28 | try { 29 | col = XMLDataCollectionAdapter 30 | .readCollectionFromInputStream(getClass().getResourceAsStream("/document-example.xml")); 31 | } catch (JAXBException e) { 32 | Assert.fail(); 33 | } catch (IOException e) { 34 | Assert.fail(); 35 | } 36 | 37 | You can also write the data into a byte array using the XMLDataCollectionAdapter: 38 | 39 | byte[] data = null; 40 | try { 41 | data = XMLDocumentAdapter.writeItemCollection(itemColSource); 42 | Assert.assertTrue(data.length > 100); 43 | } catch (JAXBException | IOException e) { 44 | Assert.fail(); 45 | } -------------------------------------------------------------------------------- /src/site/markdown/core/xml/marshal.md: -------------------------------------------------------------------------------- 1 | # Marshalling an Imixs Data object 2 | 3 | The JAXB runtime framework provides marshall and unmarshall operations. Marshalling is the process of converting instances of JAXB-annotated classes to XML representations. Likewise, unmarshalling is the process of converting an XML representation to a tree of objects. The following example shows how to marshal an Imixs XMLItemCollection into a XML Stream. 4 | 5 | ..... 6 | // create an simple ItemCollection with some data.... 7 | ItemCollection itemCol=new ItemCollection(); 8 | itemCol.replaceItemValue("txtTitel", "Hello world"); 9 | itemCol.replaceItemValue("numAge", 40); 10 | itemCol.replaceItemValue("keyVisible", true); 11 | 12 | // convert the ItemCollection into a XMLItemcollection... 13 | XMLItemCollection xmlItemCollection= XMLItemCollectionAdapter.putItemCollection(itemCol); 14 | 15 | // marshal the Object into an XML Stream.... 16 | StringWriter writer = new StringWriter(); 17 | JAXBContext context = JAXBContext.newInstance(XMLItemCollection.class); 18 | Marshaller m=context.createMarshaller(); 19 | m.marshal(xmlItemCollection,writer); 20 | System.out.println(writer.toString()); 21 | ..... 22 | 23 | The next example shows how to unmarshal a XML Stream into a Imixs XML Data Object: 24 | 25 | 26 | public void readStream(InputStream isXML) throws Exception { 27 | 28 | ItemCollection itemCollection; 29 | XMLItemCollection entity; 30 | // extract item collections from request stream..... 31 | JAXBContext context = JAXBContext.newInstance(EntityCollection.class); 32 | Unmarshaller u = context.createUnmarshaller(); 33 | EntityCollection ecol = (EntityCollection) u.unmarshal(isXML); 34 | ...... 35 | 36 | 37 | Note: The JAXBContext must always match the XMLRoot Class to be marshaled or unmarshalled. 38 | -------------------------------------------------------------------------------- /src/site/markdown/deployment/concurrency.md: -------------------------------------------------------------------------------- 1 | # Concurrency and Optimistic Locking 2 | 3 | The Imixs-Workflow engine supports an optimistic locking mechanism. Optimistic locking is based on the assumption that most transactions dont't conflict with other transactions, allowing concurrency to be as permissive as possible when allowing transactions to execute. Therefore the Imixs-Workflow engine holds an attribute '$version' providing the version number of the corresponding entity. So in case two users open the same document, change data and call the save() method, optimistic locking will be activated. This means that an OptimisticLockException is thrown when the second user tries to save the document. 4 | 5 | ## How to Disable Optimistic Locking 6 | There are two mechanisms to disable the optimistic locking. Both mechanisms guarantee that both users can save the document. The last call of the save() method wins. This behavior is different to the default behavior as explained before. To disable the build in optimistic locking mechanism an application can either remove the $version property from a document before saved: 7 | 8 | ... 9 | workitem.removeItem("$version"); 10 | workitem=documentService.save(workitem); 11 | .... 12 | 13 | or the global property "DISABLE_OPTIMISTIC_LOCKING" can be set to _true_ by the ejb-jar.xml deplyoment descriptor: 14 | 15 | ... 16 | 17 | DocumentService 18 | 19 | disable optimistic locking 20 | DISABLE_OPTIMISTIC_LOCKING 21 | java.lang.Boolean 22 | true 23 | 24 | 25 | ... 26 | 27 | 28 | -------------------------------------------------------------------------------- /src/site/markdown/engine/eventprocessing.md: -------------------------------------------------------------------------------- 1 | # Event Processing 2 | 3 | The Imixs-Workflow Engine provides sophisticated event processing capabilities that enable asynchronous and transactional processing of business events. This is especially useful for complex business processes where tasks need to be executed independently from the main processing life-cycle. 4 | 5 | ## Overview 6 | 7 | Event processing in Imixs-Workflow is designed for reliability and scalability through: 8 | 9 | - Transactional integrity via the EventLogService 10 | - Clear separation between synchronous and asynchronous processing 11 | - Scalable event handling through the AsyncEventProcessor 12 | - REST API support for distributed systems 13 | 14 | The implementation is based on two main concepts: 15 | 16 | 1. **Event Log Service** - A service to create and manage event log entries within a running transaction. This service implements the Change Data Capture (CDC) pattern, ensuring that events are only processed after successful transaction completion. 17 | 18 | 2. **Async Events** - Special BPMN events that are executed asynchronously after a processing life-cycle is completed. These events are modeled as BPMN Boundary Events and provide a powerful way to handle time-based or conditional processing tasks. 19 | 20 | ## Event Log Service 21 | 22 | The EventLogService is the foundation for asynchronous event processing in Imixs-Workflow. It allows you to: 23 | 24 | - Create event log entries tied to specific transactions 25 | - Process events in a secure and transactional manner 26 | - Implement the Change Data Capture pattern 27 | - Handle event-specific data and timeout configurations 28 | 29 | [Learn more about the EventLogService](eventlogservice.html) 30 | 31 | ## Async Events 32 | 33 | Async Events extend the event processing capabilities by providing: 34 | 35 | - BPMN-based modeling of asynchronous tasks 36 | - Timer-controlled execution 37 | - Transaction-safe processing 38 | - Integration with external systems 39 | 40 | [Learn more about Async Events](asyncevents.html) 41 | 42 | ## REST API 43 | 44 | The EventLogService provides a REST API for managing event logs in distributed systems. The API supports: 45 | 46 | - Fetching event logs by topic 47 | - Locking and unlocking entries 48 | - Deleting event log entries 49 | - Configurable result sets 50 | 51 | [Learn more about the EventLog REST API](../restapi/eventlogservice.html) 52 | -------------------------------------------------------------------------------- /src/site/markdown/engine/lucenerepair.md: -------------------------------------------------------------------------------- 1 | # How to Repair the Lucene index 2 | 3 | While using lucene we are used to a very high reliability. However, there may come a situation that your index is corrupted 4 | 5 | You may see a server error like this: 6 | 7 | ``` 8 | 2025-03-03 11:47:31,483 SEVERE [org.imixs.workflow.engine.lucene.LuceneSearchService] (ServerService Thread Pool -- 82) Lucene index error: checksum failed (hardware problem?) : expected=1f461af3 actual=63ace331 (resource=BufferedChecksumIndexInput(MMapIndexInput(path="/opt/jboss/lucene/index/_pmol.cfs") [slice=_pmol.fnm])) 9 | .... 10 | ``` 11 | 12 | In this situation you can use the Lucene repair tool `checkindex`. 13 | Checkindex is a tool available in the lucene library, which allows you to check the files and create new segments that do not contain problematic entries. This means that this tool, with little loss of data is able to repair a broken index, and thus save you from do the full indexing of all documents with the Imixs-Admin Tool. 14 | 15 | You need to make sure that the lucene core library is available on your machine. Then you can call the following command: 16 | 17 | ``` 18 | -cp lucene-core-7.7.3.jar -ea:org.apache.lucene... org.apache.lucene.index.CheckIndex /opt/jboss/lucene/my-index 19 | ``` 20 | 21 | Make sure the version matches your installation of Imixs-Workflow 22 | -------------------------------------------------------------------------------- /src/site/markdown/engine/plugins/analysisplugin.md: -------------------------------------------------------------------------------- 1 | # Analysis Plugin 2 | 3 | To analyze different phases of a workflow process the ImixsAnalysis PlugIn can be added into a process model: 4 | 5 | ```java 6 | org.imixs.workflow.plugins.AnalysisPlugin 7 | ``` 8 | 9 | The plugin is used to measure the processing time of the different phases during the life cycle of a process instance. Several individual measuring points can be configured in the workflow result of a BPMN event: 10 | 11 | 12 | ### Example: 13 | 14 | ```xml 15 | p1 16 | ``` 17 | defines a start point named 'p1' 18 | 19 | ```xml 20 | p1 21 | ``` 22 | 23 | defines an end point named 'p1'. 24 | 25 | ## Data Analysis 26 | The result of a measuring point will be stored in the following workitem properties: 27 | 28 | * datMeasurePointStart_[NAME] : contains the start time points (lists latest entry on top!) 29 | * datMeasurePointEnd_[NAME] : contains the end time points (list) 30 | * numMeasurePoint_[NAME]: contains the total time in seconds 31 | 32 | The [NAME] suffix will be replaced with the name of the measuring point. It is possible 33 | to define several measuring points in one process model. 34 | 35 | The following diagram illustrates two measuring points in the ticket-workflow: 36 | 37 | 38 | 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 | ReviewTeam 12 | 13 | This result definition will start a new approval process based on the source item 'ReviewTeam'. The source item is holding the users involved in the approver procedure. The plugin creates the following additional items to monitor the approver process: 14 | 15 | * [SOURCEITEMNAME]$Approvers - contains all users who still have to participate in the approval process 16 | * [SOURCEITEMNAME]$ApprovedBy - contains all users who have already completed the approval process 17 | 18 | Within a BPMN model conditions can added to complete an approval process after all users have approved: 19 | 20 | 21 | 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 | ReviewTeam 43 | 44 | 45 | 46 | ## Reset the Approval Process 47 | 48 | 49 | If the attribute 'reset' is set to true, the list [SOURCEITEMNAME]$Approvers 50 | will be reseted and the item [SOURCEITEMNAME]$ApprovedBy will be cleared. This can be usefull in situations where the approving process need to be restarted. 51 | 52 | 53 | ReviewTeam 54 | 55 | 56 | -------------------------------------------------------------------------------- /src/site/markdown/engine/plugins/documentcomposerplugin.md: -------------------------------------------------------------------------------- 1 | # The DocumentComposerPlugin 2 | 3 | The DocumentComposerPlugin provides functionality to create html output stored in an item of the current process instance. 4 | 5 | org.imixs.workflow.engine.plugins.DocumentComposerPlugin 6 | 7 | The Plugin uses XSL transformation based on a XSL templage proivded by an BPMN DataObject assigned to the target task. 8 | 9 | 10 | 11 | The configuration is provided by an BPMN Event result: 12 | 13 | [OUTPUT-ITEM] 14 | 15 | 16 | The following example generates a new item 'html_invoice' with the outcome of the XSL transformation based on a XLS template in the dataobject 'invoice' 17 | 18 | 19 | html_invoice 20 | -------------------------------------------------------------------------------- /src/site/markdown/engine/plugins/historyplugin.md: -------------------------------------------------------------------------------- 1 | # THe History Plugin 2 | 3 | The HistoryPlugin generates a workflow history for each process instance depending on the configuration in the workflow model. 4 | 5 | _Plugin Class Name:_ 6 | 7 | org.imixs.workflow.plugins.HistoryPlugin 8 | 9 | For each workflow step the HistoryPlugin generates a separate entry which is added into the history list (txtworkflowhistory) of the WorkItem. Each history entry provides the following entries: 10 | 11 | * date of creation (Date) 12 | * comment (String) 13 | * userID (String) 14 | 15 | The History entries can be configured in the workflow model using the [Imixs-BPMN Modeler](../../modelling/index.html). 16 | 17 | 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 $currenteditor 28 | 29 | 30 | ## Maximum Length of History 31 | 32 | The number of entries for the history list can be restricted to a maximum number of entries by adding the attribute "numworkflowhistoryLength" into the workitem. The Attribute indicates the maximum number of entries. If lower 0 no limit is set. 33 | 34 | 35 | ## JSF Example 36 | 37 | The following example shows how to output the workflow history list using facelets: 38 | 39 | 40 | 42 | 43 | 44 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | -------------------------------------------------------------------------------- /src/site/markdown/engine/plugins/index.md: -------------------------------------------------------------------------------- 1 | # Plugin-API - Overview 2 | 3 | The **Imixs Plugin-API** is the extension concept of the Imixs-Workflow Engine. The business logic of an application as also technical interfaces can be implemented by plugins which can easily be activated through the workflow model. 4 | 5 | 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 |

4 | Note:This service is deprecated and is replaced since version 5.0.0 by the Microprofile Config API!
See Imixs Config Source.
5 |

6 | 7 | The Imixs Workflow Engine provides a property service to manage application specific properties in a common way. The properties can be stored into a file named `imixs.properties`. The class `PropertyService` provides a service to access the `imxis.property` file. The property file can be packaged together with an application in any ejb module. This in an example how to access the imixs.properties: 8 | 9 | ```java 10 | @Inject 11 | PropertyService propertyService; 12 | @PostConstruct 13 | void init() { 14 | // load configuration 15 | configurationProperties =propertyService.getProperties(); 16 | // skip if no configuration available 17 | if (configurationProperties != null) { 18 | String myProperty=configurationProperties.getProperty("myProperty"); 19 | .... 20 | } 21 | ..... 22 | } 23 | ``` 24 | 25 | The properties are cached for each application using this service. If the properties have changed during runtime an application can reset the cached properties. 26 | 27 | ```java 28 | // change some properties... 29 | ..... 30 | // reset property configuration 31 | propertyService.reset(); 32 | // read new properties 33 | configurationProperties =propertyService.getProperties(); 34 | ``` 35 | -------------------------------------------------------------------------------- /src/site/markdown/engine/remote_lookup.md: -------------------------------------------------------------------------------- 1 | # CDI Support 2 | 3 | Imixs-Workflow supports CDI for all service components which makes it easy to tie different services together. 4 | For example an bean or a Resource can be easily injected into a plugin class by the corresponding annotation. See the following example injecting the `ModelService`: 5 | 6 | ```java 7 | public class DemoPlugin extends AbstractPlugin { 8 | // inject services... 9 | @Inject 10 | ModelService modelService; 11 | ... 12 | } 13 | ``` 14 | 15 | # EJB JNDI Lookup 16 | 17 | In some situations where CDI does not work, it can be necessary to fetch a Service EJB by a JNDI lookup. 18 | The following Example shows a JNDI Lookup for an external Service EJB from the WorkflowService: 19 | 20 | ```java 21 | MyServiceBean myService; 22 | try { 23 | String ejbName="ejb/MyServiceBean"; 24 | InitialContext ic = new InitialContext(); 25 | myService = (MyServiceBean) ic.lookup(ejbName); 26 | } catch (Exception e) { 27 | e.printStackTrace(); 28 | workflowService = null; 29 | } 30 | ``` 31 | 32 | The JNDI Name is defined by the application server. To lookup a EJB or resource by JNDI name, the name need to be configured in ejb-jar.xml. The following example shows the configuration for wildfly: 33 | 34 | 35 | ... 36 | 37 | WorkflowService 38 | org.imixs.workflow.engine.WorkflowService 39 | Stateless 40 | .... 41 | 42 | 43 | ejb/MyServiceBean 44 | Session 45 | org.foo.MyServiceBean 46 | 47 | .... 48 | 49 | 50 | ... 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | -------------------------------------------------------------------------------- /src/site/markdown/goals.md: -------------------------------------------------------------------------------- 1 | # Goals of the project 2 | 3 | Imixs-Workflow is a Framework for building Java Business Applications. The Imixs-Workflow Engine allows you to change your business logic without changing a single line of code. Using Imixs-Workflow you can control the state of any business object in your application. Based on a workflow model Imixs-Workflow sends notifications, logs business transactions and secures your business data. 4 | 5 | The goal of this project is to provide an easy to use java based workflow technology for business applications. Imixs-Workflow is typical used for human-to-human workflows but can also be used for complex technical business process management (BPM) solutions. 6 | 7 | ## Joining the Imixs-Workflow project 8 | 9 | As Imixs-Workflow is an open source project you are free to use the results of this project in your own business application and also for custom implementations of a workflow management system. We invite you to participate as much as you wish. You can add the different components based on Maven in your own project, or you can check out the source code from [GitHub](https://github.com/imixs/imixs-workflow) to test or contribute in different ways. 10 | 11 | In any case, independent if you are joining the project as an observer, tester or committer you can ask questions, report bugs or discuss details about all aspects of the Imixs-Workflow project at [GitHub](https://github.com/imixs/imixs-workflow). Every project obtains its strengths in virtue of the persons involved. The role and responsibility of everybody involved in this project is based on merits - every input counts! 12 | 13 | We invite you to join the Imixs-Workflow project! 14 | -------------------------------------------------------------------------------- /src/site/markdown/javascript/layout.md: -------------------------------------------------------------------------------- 1 | # Layout & UI 2 | 3 | The imixs-ui.js provides some layout methods to apply the jQuery UI widgets to a page section. See the following example to layout a jQuery UI tab navigation 4 | 5 | 6 | 7 | 12 | 13 | ## Tab Navigation 14 | 15 | The jQuery Tab Navigation can be used to split up a form into several sections: 16 | 17 | ... 18 |
19 |
20 | 24 |
25 |

Some data...

26 |
27 |
28 |

Another page...

29 |
30 |
31 | ... 32 | 33 | ## Date Time Picker 34 | 35 | An input field assigend to the class 'imixs-date' will be automatically displayed using the jQuery UI DatePicker component 36 | 37 | 38 |
39 |
Created:
40 |
41 | 42 | - 43 | 44 |
45 |
46 | 47 | Imixs-Script provides also a DateTime component to additional select hours and minutes: 48 | 49 | 50 | 51 | 52 | See the section [Documents](./documents.html) so see how to work with date values. 53 | 54 | -------------------------------------------------------------------------------- /src/site/markdown/javascript/xml.md: -------------------------------------------------------------------------------- 1 | # XML 2 | 3 | The Imixs-Script library IMIXS.org.imixs.xml provides several methods to convert a imixs.ItemCollection into a XML object. XML Objects are used to exchange the data via the Imxixs Rest API. It is recommended to use XML objects instead of the JSON format to support xsi object types. 4 | 5 | The following example shows how to convert a document received form the Imixs Rest API into a imixs.ItemCollection: 6 | 7 | 8 | var url = "http://localhost:8080/workflow/rest-api/workflow/workitem/" + id; 9 | 10 | $.ajax({ 11 | type : "GET", 12 | url : url, 13 | dataType : "xml", 14 | success : function(response) { 15 | console.debug(response); 16 | myDocument = imixsXML.xml2document(response); 17 | } 18 | }); 19 | 20 | The method json2xml can be used to convert a json object (ItemCollection) into a XML object to post to the back-end: 21 | 22 | var myDocument=new imixs.ItemCollection(); 23 | myDocument.setItem('name','Bill'); 24 | .... 25 | // convert to xml 26 | var xmlData = imixsXML.json2xml(myDocument); 27 | var url = "http://localhost:8080/workflow/rest-api/workflow/workitem/"; 28 | 29 | $.ajax({ 30 | type : "POST", 31 | url : url, 32 | data : xmlData, 33 | contentType : "text/xml", 34 | dataType : "xml", 35 | cache : false, 36 | success : function(xml) { 37 | console.debug("success"); 38 | .... 39 | } 40 | }); 41 | 42 | 43 | -------------------------------------------------------------------------------- /src/site/markdown/modelling/create_model.md: -------------------------------------------------------------------------------- 1 | # Create a new BPMN2 file 2 | 3 | Before starting modeling with the Imixs-BPMN Plugin make sure that your current eclipse project is assigned to the Imixs-BPMN runtime. 4 | 5 | 6 | 7 | 8 | The Eclipse New File wizard is used to create a new BPMN2 file. From the Main Menu, click File -> New -> Other… which opens the New File Wizard Dialog box. Navigate to the BPMN2 category and you will see several entries as shown here: 9 | 10 | 11 | 12 | The second entry in the BPMN2 category, Generic BPMN 2.0 Diagram, is contributed by the BPMN2 Modeler plugin, and can be used to create a new, properly initialized Diagram file. This wizard creates a file that is not intended for deployment to any particular BPM process engine (see Target Runtime Extensions for a detailed discussion). Selecting this entry displays the first page of the wizard, as shown here: 13 | 14 | 15 | 16 | 17 | This allows you to select the type of diagram you wish to create. This page contains a brief description of each of the diagram types; pick one by clicking the image next to the description and then click the Next > button. See the Appendix for a more detailed discussion of diagram types. 18 | 19 | 20 | The next page of the wizard asks for a location, file name and a target namespace. These fields are already filled in with reasonable defaults, but you may want to change them as necessary. 21 | 22 | 23 | 24 | The target namespace "http://www.imixs.org/bmpn2" links the Imxs BPMN model elements with the modeler. (The target namespace can also be changed later by the Definitions Properties after the model was created) 25 | 26 | Finally click the Finish button to create a template for the selected Diagram type and open the BPMN2 Modeler. -------------------------------------------------------------------------------- /src/site/markdown/modelling/index.md: -------------------------------------------------------------------------------- 1 | 2 | # The Imixs-BPMN Modeler - User Guide 3 | 4 | Imixs-BPMN is a free modelling tool to create process models for the Imixs-Workflow framework. Imixs-BPMN takes the full advantage of all the capabilities from the BPMN standard and complements them with the requirements to a workflow management system. Imixs-BPMN is based on the Open Source project [Open-BPMN](https://www.open-bpmn.org) and extends this framework with the aspects of a human-centric workflow model executable on the Imixs-Workflow Engine. 5 | 6 | To install Imixs-BPMN please see the [Installation Guide](./install.html). The section [Overview](./overview.html) provides general information about how you can use the Imixs-BPMN modelling tool. 7 | 8 | 9 | 10 | 11 | 12 | ## Examples 13 | 14 | In the section ['How to model'](howto.html) you will find examples how you can model your business logic with Imixs-BPMN. 15 | 16 | 17 | 18 | ## Support & Community 19 | 20 | Imixs-BPMN and Open-BPMN are open source projects. You will find further information about the project here: 21 | 22 | * [Open-BPMN](https://www.open-bpmn.org/) 23 | 24 | * [GitHub](https://github.com/imixs/open-bpmn). 25 | 26 | * [Disussion](https://github.com/imixs/open-bpmn/discussions) 27 | -------------------------------------------------------------------------------- /src/site/markdown/modelling/install.md: -------------------------------------------------------------------------------- 1 | # Installation 2 | 3 | Imixs-BPMN is based on Open-BPMN - a free BPMN 2.0 modelling platform. It can be used in Visual Studio Code, as a Eclipse Plugin or in a Web Browser. Further more, Open BPMN provides an extension mechanism to adapt the modeling platform to the individual requirements in any business process project. Read more about Open BPMN. 5 | 6 | ## Visual Studio Code 7 | 8 | To install Imixs-BPMN in Visual Studio Code (VSCode), go to the 'Extensions Settings' and search for 'Open-BPMN' to install. 9 | 10 | 11 | 12 | After installing the extension you can create and edit .bpmn and .bpmn2 files within your IDE. 13 | ## Eclipse IDE 14 | 15 | For installation of the Imixs-BPMN Modeler in Eclipse. If you do not have an Eclipse installation yet, you can download Eclipse from the [Eclipse website](http://www.eclipse.org/). 16 | 17 | You can install Imixs-BPMN directly from the Eclipse Marketplace by dragging the install button to your running Eclipse workspace: 18 | 19 | Drag to your running Eclipse workspace to install Imixs-BPMN 20 | 21 | ### Installation from the Updatesite 22 | Imixs-BPMN is installed the same way as any other Eclipse plugin.To install the Imixs-BPMN plugin select from the Eclipse Workbench main menu: *Help -> Install New Software*. 23 | 24 | Enter the following update site URL: 25 | 26 | * https://www.imixs.org/org.imixs.eclipse.bpmn2.updatesite/ 27 | 28 | 29 | 30 | 31 | Finally you have to restart your Eclipse IDE. 32 | 33 | You will find additional information about the Eclipse BPMN2 Modeler 34 | plugin at: https://www.eclipse.org/bpmn2-modeler/ 35 | 36 | 37 | -------------------------------------------------------------------------------- /src/site/markdown/quickstart/human.md: -------------------------------------------------------------------------------- 1 | # What Means Human Centric Workflow? 2 | 3 | **Imixs-Workflow** is supporting human skills, activities and relieves collaboration in a task-oriented manner. For this, each process instance can be assigned to different actors. 4 | The main objective is to support the human actors and provide them with relevant information about the business process. The workflow engine ensures that the business process is aligned to predetermined business rules: 5 | 6 | * Who is the owner of a business process 7 | * Who is allowed to access and modify the data 8 | * Who need to be informed next 9 | 10 | In that way Imixs-Workflow help users in starting a new process, finding and processing open tasks and to complete current jobs. The Workflow Engine automatically routes open tasks to the next actor and notifies users about open tasks depending on the current process definition. 11 | 12 | Each business process can involve different users to interact with the Workflow Management System. 13 | These users are called the *actors*. An Actor can either start, update or read a process instance and also the embedded business data 14 | Imixs Workflow allows you to assign any kind of business data with a running process instance. 15 | You can use Imixs workflow to control access to a process instance in a fine-grained way using an ACL. This includes the read and write access for users and roles. The ACL can be defined via the BPMN model for each Task or Event separately. 16 | 17 | 18 | 19 | ## What's Next... 20 | 21 | Continue reading more about: 22 | 23 | * [Imixs-BPMN - The Modeler User Guide](../modelling/index.html) 24 | * [The Imixs-Workflow Plugin API](../engine/plugins/index.html) 25 | * [The Imixs-Workflow Rest API](../restapi/index.html) -------------------------------------------------------------------------------- /src/site/markdown/restapi/adminp.md: -------------------------------------------------------------------------------- 1 | # The AdminP Service 2 | The resource _/adminp_ provides methods to create administrative jobs. Jobs can be monitored with the [Imixs-Admin Client](../administration.html). 3 | 4 | 5 | ## GET Jobs 6 | The GET method is used to read all running ore completed jobs: 7 | 8 | 9 | | URI | Method | Description | 10 | |-------------------------|--------|------------------------------------------------------------| 11 | | /jobs | GET | returns all jobs from the AdminP interface. | 12 | 13 | 14 | 15 | 16 | ## POST/PUT a new job 17 | The methods PUT or POST allow to create a new job: 18 | 19 | 20 | | URI | Method | Description | 21 | |--------------|-------------|------------| 22 | | / | POST, PUT | posts a new job to be processed by the AdminPServcie. The post data is expected in xml format | 23 | 24 | 25 | The following curl example shows how to create a new job to update the Lucene fulltextindex. 26 | 27 | curl --user admin:adminpassword -H "Content-Type: text/xml" -d \ 28 | ' \ 29 | adminp \ 30 | JOB_REBUILD_INDEX \ 31 | 1000 \ 32 | 0 \ 33 | 1 \ 34 | ' \ 35 | http://localhost:8080/api/adminp/jobs 36 | 37 | 38 | 39 | In case the job is not createable the attribute '$error_code' will be returned in the response. 40 | 41 | 42 | ## DELETE a Document 43 | The methods DELETE allow to remove a running or completed job: 44 | 45 | 46 | | URI | Method | Description | 47 | |--------------|-------------|------------| 48 | | /{uniqueid} | DELETE | updates ore deletes a document | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | -------------------------------------------------------------------------------- /src/site/markdown/restapi/eventlogservice.md: -------------------------------------------------------------------------------- 1 | # The EventLog Service 2 | The main resource /eventlog defines a service endpoint to access eventLog entries by topic. 3 | 4 | ## The /eventlog resources GET 5 | The /eventlog GET resource is used to fetch a list of event log entries by its topic: 6 | 7 | 8 | | URI | Description | 9 | |-----------------------------------------------|------------------------------------------------------------------| 10 | | /eventlog/{topic} | all eventLog entries matching a given topic (or set of topics) | 11 | 12 | The topic parma can contain a single topic or a list of topics. In this case the topics need to be separated by swung dash (~). 13 | 14 | 15 | ## The /eventlog resources DELETE 16 | The /eventlog DELETE resource URI is used to delete an eventLog entry: 17 | 18 | 19 | | URI | Description | 20 | |-----------------------------------------------|---------------------------------------------| 21 | | /eventlog/{id} | deletes a specified evenLog entry by its id | 22 | 23 | 24 | 25 | ## The /eventlog resources POST 26 | The /eventlog POST resource URI is used to lock and unlock an eventLog entry: 27 | 28 | 29 | | URI | Description | 30 | |-----------------------------------------------|---------------------------------------------| 31 | | /eventlog/lock/{id} | locks a specified evenLog entry by its id | 32 | | /eventlog/unlock/{id} | unlocks a specified evenLog entry by its id | 33 | 34 | 35 | 36 | 37 | ## Resource Options 38 | You can specify additional URI parameters to access only a subset of entries: 39 | 40 | | option | description | example | 41 | |-------------|---------------------------------------------------------|----------------------------------| 42 | | maxCount | number of eventLog entries returned (default 99) | ..?maxCount=10 | 43 | 44 | 45 | -------------------------------------------------------------------------------- /src/site/markdown/webtools/header.md: -------------------------------------------------------------------------------- 1 | # Imixs Header 2 | 3 | The Imixs-Faces custom tag 'imixsHeader' provides a jQuery UI integration. This tag will automatically add jQuery and jQuery UI functionality to a JSF page. 4 | 5 | 6 | 8 | 13 | 14 | 15 | 16 | 17 | .... 18 | 19 | The imixsHeader tag provides a set of optional properties: 20 | 21 | 22 | | Attribute | Value |Description | 23 | |---------------|------------|-------------------------------------------| 24 | |disablecss | true/false |disables css styles (default= false) | 25 | |disablejquery | true/false | disable jquery (default=false) can be used if a different version of jquery is provided | 26 | |disabletinymce | true/false | can be set to true to disable the tinymce editor | 27 | |dateformat | yyyy-MM-dd | default format for date picker widget | 28 | |theme | URL | deletes an existing workitem by ID | 29 | 30 | 31 | ## jQuery-UI 32 | Imixs-Faces header provides the following additional UI functionality and custom jQuery components: 33 | 34 | * [Imixs Header](./header.html) 35 | * [DatePicker Widget](./datepicker.html) 36 | * [Workflow Actions Toolbar](./workflowactions.html) 37 | * [FileUpload component](./fileupload.html) 38 | * [Tooltips](./tooltip.html) 39 | * [WYSIWYG Editor TinyMCE](./tinymce.html) 40 | 41 | 42 | ### Themes 43 | The ImixsHeader provides a default theme named 'imixs' which is based on the jQuery-UI themes. The theme can be customized by providing a custom jQuery-UI theme. The custom jQuery theme can be placed into a folder of the web application. To activate the custom theme, the path to the theme providing the jQuery UI and css files need to be added into the imixsHeader using the _'theme'_ tag: 44 | 45 | 46 | 47 | 48 | 49 | -------------------------------------------------------------------------------- /src/site/markdown/webtools/resourcebundle.md: -------------------------------------------------------------------------------- 1 | # Imixs ResourceBundleHandler 2 | 3 | With the ui util class '*org.imixs.workflow.faces.util.ResourceBundleHandler*' a CDI Bean or faces page can lookup a label in different bundles. This simplifies the front end implementation as the client does not have to know the bundle a specific resource is located: 4 | 5 | 6 |

#{resourceBundleHandler.findMessage('application_title')}

7 | 8 | The ResourceBundleHandler load the bundles based on the current user locale. Resource bundle instances created by the getBundle factory methods are cached by default, and the factory methods return the same resource bundle instance multiple times if it has been cached. For that reason a RequestScoped bean is used here. 9 | 10 | The class searches for the resource bundles with the base names '*bundle.messages*', '*bundle.app*' and '*bundle.custom*'. You can overwrite the bundle names with the imixs property value 'resourcebundle.names'. 11 | 12 | resourcebundle.names=messages,my-app 13 | 14 | 15 | 16 | ## CDI Integration 17 | 18 | In a CDI bean you can also use the resourceBundleHandler to lookup keys 19 | 20 | ```java 21 | @Inject 22 | protected ResourceBundleHandler resourceBundleHandler = null; 23 | ... 24 | resourceBundleHandler.findMessage("space.manager")); 25 | ``` 26 | 27 | 28 | ## Priority 29 | 30 | The later entries have a higher priority in case a key is stored in multiple bundles. 31 | 32 | -------------------------------------------------------------------------------- /src/site/markdown/webtools/workflowactions.md: -------------------------------------------------------------------------------- 1 | # Imixs-Faces Workflow Actions 2 | The Imixs-Faces custom tag 'workflowactions' provides action toolbar based on the current workflow model. The tag can be used together with a workflowController component. 3 | 4 | 6 | 7 | This tag will automatically provide command buttons for each workflow activity defined in the current workflow model. The component used the workflowController to dertermine the current workflow state. Each command button generated by this custom tag has the style class 'imixs-workflow-action'. This class can be customized to change the design of the buttons. 8 | 9 | ## Tooltips 10 | The Imixs-Faces custom tag 'workflowactions' add a dynamic tooltip feature to display a description text on mouse over. The text can be provided by the workflow model (rtfdescription). The tooltip is rendered by the jQuery UI 'ToolTip' feature. To disable this feature use the attribute 'disabletooltip' 11 | 12 | 13 | 15 | 16 | -------------------------------------------------------------------------------- /src/site/resources/images/adapter_api.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imixs/imixs-workflow/78a4a8ae007a3e03c0c405ab4f38174c58236ace/src/site/resources/images/adapter_api.png -------------------------------------------------------------------------------- /src/site/resources/images/adapter_error_handling.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imixs/imixs-workflow/78a4a8ae007a3e03c0c405ab4f38174c58236ace/src/site/resources/images/adapter_error_handling.png -------------------------------------------------------------------------------- /src/site/resources/images/analysisplugin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imixs/imixs-workflow/78a4a8ae007a3e03c0c405ab4f38174c58236ace/src/site/resources/images/analysisplugin.png -------------------------------------------------------------------------------- /src/site/resources/images/api-architecture.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imixs/imixs-workflow/78a4a8ae007a3e03c0c405ab4f38174c58236ace/src/site/resources/images/api-architecture.gif -------------------------------------------------------------------------------- /src/site/resources/images/approverplugin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imixs/imixs-workflow/78a4a8ae007a3e03c0c405ab4f38174c58236ace/src/site/resources/images/approverplugin.png -------------------------------------------------------------------------------- /src/site/resources/images/bpmn-example01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imixs/imixs-workflow/78a4a8ae007a3e03c0c405ab4f38174c58236ace/src/site/resources/images/bpmn-example01.png -------------------------------------------------------------------------------- /src/site/resources/images/bpmn-example02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imixs/imixs-workflow/78a4a8ae007a3e03c0c405ab4f38174c58236ace/src/site/resources/images/bpmn-example02.png -------------------------------------------------------------------------------- /src/site/resources/images/docker_small_h-trans.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imixs/imixs-workflow/78a4a8ae007a3e03c0c405ab4f38174c58236ace/src/site/resources/images/docker_small_h-trans.png -------------------------------------------------------------------------------- /src/site/resources/images/engine/imixs-architecture_jee.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imixs/imixs-workflow/78a4a8ae007a3e03c0c405ab4f38174c58236ace/src/site/resources/images/engine/imixs-architecture_jee.png -------------------------------------------------------------------------------- /src/site/resources/images/engine/imixs-metrics-grafana-768x376.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imixs/imixs-workflow/78a4a8ae007a3e03c0c405ab4f38174c58236ace/src/site/resources/images/engine/imixs-metrics-grafana-768x376.png -------------------------------------------------------------------------------- /src/site/resources/images/engine/imixs-metrics-prometheus-768x448.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imixs/imixs-workflow/78a4a8ae007a3e03c0c405ab4f38174c58236ace/src/site/resources/images/engine/imixs-metrics-prometheus-768x448.png -------------------------------------------------------------------------------- /src/site/resources/images/engine/split-and-join-ref.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imixs/imixs-workflow/78a4a8ae007a3e03c0c405ab4f38174c58236ace/src/site/resources/images/engine/split-and-join-ref.png -------------------------------------------------------------------------------- /src/site/resources/images/imixs-admin-client-01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imixs/imixs-workflow/78a4a8ae007a3e03c0c405ab4f38174c58236ace/src/site/resources/images/imixs-admin-client-01.png -------------------------------------------------------------------------------- /src/site/resources/images/imixs-admin-client-02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imixs/imixs-workflow/78a4a8ae007a3e03c0c405ab4f38174c58236ace/src/site/resources/images/imixs-admin-client-02.png -------------------------------------------------------------------------------- /src/site/resources/images/imixs-admin-client-03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imixs/imixs-workflow/78a4a8ae007a3e03c0c405ab4f38174c58236ace/src/site/resources/images/imixs-admin-client-03.png -------------------------------------------------------------------------------- /src/site/resources/images/imixs-admin-client-04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imixs/imixs-workflow/78a4a8ae007a3e03c0c405ab4f38174c58236ace/src/site/resources/images/imixs-admin-client-04.png -------------------------------------------------------------------------------- /src/site/resources/images/imixs-admin-client-05.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imixs/imixs-workflow/78a4a8ae007a3e03c0c405ab4f38174c58236ace/src/site/resources/images/imixs-admin-client-05.png -------------------------------------------------------------------------------- /src/site/resources/images/imixs-engine.odg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imixs/imixs-workflow/78a4a8ae007a3e03c0c405ab4f38174c58236ace/src/site/resources/images/imixs-engine.odg -------------------------------------------------------------------------------- /src/site/resources/images/imixs-engine.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imixs/imixs-workflow/78a4a8ae007a3e03c0c405ab4f38174c58236ace/src/site/resources/images/imixs-engine.png -------------------------------------------------------------------------------- /src/site/resources/images/imixs-forms-01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imixs/imixs-workflow/78a4a8ae007a3e03c0c405ab4f38174c58236ace/src/site/resources/images/imixs-forms-01.png -------------------------------------------------------------------------------- /src/site/resources/images/imixs-forms-02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imixs/imixs-workflow/78a4a8ae007a3e03c0c405ab4f38174c58236ace/src/site/resources/images/imixs-forms-02.png -------------------------------------------------------------------------------- /src/site/resources/images/imixs-forms-03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imixs/imixs-workflow/78a4a8ae007a3e03c0c405ab4f38174c58236ace/src/site/resources/images/imixs-forms-03.png -------------------------------------------------------------------------------- /src/site/resources/images/imixs-logo-text.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imixs/imixs-workflow/78a4a8ae007a3e03c0c405ab4f38174c58236ace/src/site/resources/images/imixs-logo-text.png -------------------------------------------------------------------------------- /src/site/resources/images/imixs-logo-text_soft.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imixs/imixs-workflow/78a4a8ae007a3e03c0c405ab4f38174c58236ace/src/site/resources/images/imixs-logo-text_soft.png -------------------------------------------------------------------------------- /src/site/resources/images/imixs-overview.odg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imixs/imixs-workflow/78a4a8ae007a3e03c0c405ab4f38174c58236ace/src/site/resources/images/imixs-overview.odg -------------------------------------------------------------------------------- /src/site/resources/images/imixs-overview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imixs/imixs-workflow/78a4a8ae007a3e03c0c405ab4f38174c58236ace/src/site/resources/images/imixs-overview.png -------------------------------------------------------------------------------- /src/site/resources/images/imixs-sample-application-01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imixs/imixs-workflow/78a4a8ae007a3e03c0c405ab4f38174c58236ace/src/site/resources/images/imixs-sample-application-01.png -------------------------------------------------------------------------------- /src/site/resources/images/imixs-tutorial-01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imixs/imixs-workflow/78a4a8ae007a3e03c0c405ab4f38174c58236ace/src/site/resources/images/imixs-tutorial-01.png -------------------------------------------------------------------------------- /src/site/resources/images/imixs-tutorial-02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imixs/imixs-workflow/78a4a8ae007a3e03c0c405ab4f38174c58236ace/src/site/resources/images/imixs-tutorial-02.png -------------------------------------------------------------------------------- /src/site/resources/images/imixs-tutorial-03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imixs/imixs-workflow/78a4a8ae007a3e03c0c405ab4f38174c58236ace/src/site/resources/images/imixs-tutorial-03.png -------------------------------------------------------------------------------- /src/site/resources/images/imixs-tutorial-04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imixs/imixs-workflow/78a4a8ae007a3e03c0c405ab4f38174c58236ace/src/site/resources/images/imixs-tutorial-04.png -------------------------------------------------------------------------------- /src/site/resources/images/imixs-tutorial-05.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imixs/imixs-workflow/78a4a8ae007a3e03c0c405ab4f38174c58236ace/src/site/resources/images/imixs-tutorial-05.png -------------------------------------------------------------------------------- /src/site/resources/images/imixs-tutorial-06.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imixs/imixs-workflow/78a4a8ae007a3e03c0c405ab4f38174c58236ace/src/site/resources/images/imixs-tutorial-06.png -------------------------------------------------------------------------------- /src/site/resources/images/imixs-tutorial-07.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imixs/imixs-workflow/78a4a8ae007a3e03c0c405ab4f38174c58236ace/src/site/resources/images/imixs-tutorial-07.png -------------------------------------------------------------------------------- /src/site/resources/images/imixs-workitem.odg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imixs/imixs-workflow/78a4a8ae007a3e03c0c405ab4f38174c58236ace/src/site/resources/images/imixs-workitem.odg -------------------------------------------------------------------------------- /src/site/resources/images/imixs-workitem.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imixs/imixs-workflow/78a4a8ae007a3e03c0c405ab4f38174c58236ace/src/site/resources/images/imixs-workitem.png -------------------------------------------------------------------------------- /src/site/resources/images/model-ticket.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imixs/imixs-workflow/78a4a8ae007a3e03c0c405ab4f38174c58236ace/src/site/resources/images/model-ticket.png -------------------------------------------------------------------------------- /src/site/resources/images/modelling/bpmn_screen_00.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imixs/imixs-workflow/78a4a8ae007a3e03c0c405ab4f38174c58236ace/src/site/resources/images/modelling/bpmn_screen_00.png -------------------------------------------------------------------------------- /src/site/resources/images/modelling/bpmn_screen_01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imixs/imixs-workflow/78a4a8ae007a3e03c0c405ab4f38174c58236ace/src/site/resources/images/modelling/bpmn_screen_01.png -------------------------------------------------------------------------------- /src/site/resources/images/modelling/bpmn_screen_02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imixs/imixs-workflow/78a4a8ae007a3e03c0c405ab4f38174c58236ace/src/site/resources/images/modelling/bpmn_screen_02.png -------------------------------------------------------------------------------- /src/site/resources/images/modelling/bpmn_screen_03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imixs/imixs-workflow/78a4a8ae007a3e03c0c405ab4f38174c58236ace/src/site/resources/images/modelling/bpmn_screen_03.png -------------------------------------------------------------------------------- /src/site/resources/images/modelling/bpmn_screen_04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imixs/imixs-workflow/78a4a8ae007a3e03c0c405ab4f38174c58236ace/src/site/resources/images/modelling/bpmn_screen_04.png -------------------------------------------------------------------------------- /src/site/resources/images/modelling/bpmn_screen_05.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imixs/imixs-workflow/78a4a8ae007a3e03c0c405ab4f38174c58236ace/src/site/resources/images/modelling/bpmn_screen_05.png -------------------------------------------------------------------------------- /src/site/resources/images/modelling/bpmn_screen_06.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imixs/imixs-workflow/78a4a8ae007a3e03c0c405ab4f38174c58236ace/src/site/resources/images/modelling/bpmn_screen_06.png -------------------------------------------------------------------------------- /src/site/resources/images/modelling/bpmn_screen_07.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imixs/imixs-workflow/78a4a8ae007a3e03c0c405ab4f38174c58236ace/src/site/resources/images/modelling/bpmn_screen_07.png -------------------------------------------------------------------------------- /src/site/resources/images/modelling/bpmn_screen_08.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imixs/imixs-workflow/78a4a8ae007a3e03c0c405ab4f38174c58236ace/src/site/resources/images/modelling/bpmn_screen_08.png -------------------------------------------------------------------------------- /src/site/resources/images/modelling/bpmn_screen_09.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imixs/imixs-workflow/78a4a8ae007a3e03c0c405ab4f38174c58236ace/src/site/resources/images/modelling/bpmn_screen_09.png -------------------------------------------------------------------------------- /src/site/resources/images/modelling/bpmn_screen_10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imixs/imixs-workflow/78a4a8ae007a3e03c0c405ab4f38174c58236ace/src/site/resources/images/modelling/bpmn_screen_10.png -------------------------------------------------------------------------------- /src/site/resources/images/modelling/bpmn_screen_11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imixs/imixs-workflow/78a4a8ae007a3e03c0c405ab4f38174c58236ace/src/site/resources/images/modelling/bpmn_screen_11.png -------------------------------------------------------------------------------- /src/site/resources/images/modelling/bpmn_screen_12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imixs/imixs-workflow/78a4a8ae007a3e03c0c405ab4f38174c58236ace/src/site/resources/images/modelling/bpmn_screen_12.png -------------------------------------------------------------------------------- /src/site/resources/images/modelling/bpmn_screen_13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imixs/imixs-workflow/78a4a8ae007a3e03c0c405ab4f38174c58236ace/src/site/resources/images/modelling/bpmn_screen_13.png -------------------------------------------------------------------------------- /src/site/resources/images/modelling/bpmn_screen_14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imixs/imixs-workflow/78a4a8ae007a3e03c0c405ab4f38174c58236ace/src/site/resources/images/modelling/bpmn_screen_14.png -------------------------------------------------------------------------------- /src/site/resources/images/modelling/bpmn_screen_15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imixs/imixs-workflow/78a4a8ae007a3e03c0c405ab4f38174c58236ace/src/site/resources/images/modelling/bpmn_screen_15.png -------------------------------------------------------------------------------- /src/site/resources/images/modelling/bpmn_screen_16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imixs/imixs-workflow/78a4a8ae007a3e03c0c405ab4f38174c58236ace/src/site/resources/images/modelling/bpmn_screen_16.png -------------------------------------------------------------------------------- /src/site/resources/images/modelling/bpmn_screen_17.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imixs/imixs-workflow/78a4a8ae007a3e03c0c405ab4f38174c58236ace/src/site/resources/images/modelling/bpmn_screen_17.png -------------------------------------------------------------------------------- /src/site/resources/images/modelling/bpmn_screen_18.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imixs/imixs-workflow/78a4a8ae007a3e03c0c405ab4f38174c58236ace/src/site/resources/images/modelling/bpmn_screen_18.png -------------------------------------------------------------------------------- /src/site/resources/images/modelling/bpmn_screen_19.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imixs/imixs-workflow/78a4a8ae007a3e03c0c405ab4f38174c58236ace/src/site/resources/images/modelling/bpmn_screen_19.png -------------------------------------------------------------------------------- /src/site/resources/images/modelling/bpmn_screen_20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imixs/imixs-workflow/78a4a8ae007a3e03c0c405ab4f38174c58236ace/src/site/resources/images/modelling/bpmn_screen_20.png -------------------------------------------------------------------------------- /src/site/resources/images/modelling/bpmn_screen_21.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imixs/imixs-workflow/78a4a8ae007a3e03c0c405ab4f38174c58236ace/src/site/resources/images/modelling/bpmn_screen_21.png -------------------------------------------------------------------------------- /src/site/resources/images/modelling/bpmn_screen_22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imixs/imixs-workflow/78a4a8ae007a3e03c0c405ab4f38174c58236ace/src/site/resources/images/modelling/bpmn_screen_22.png -------------------------------------------------------------------------------- /src/site/resources/images/modelling/bpmn_screen_23.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imixs/imixs-workflow/78a4a8ae007a3e03c0c405ab4f38174c58236ace/src/site/resources/images/modelling/bpmn_screen_23.png -------------------------------------------------------------------------------- /src/site/resources/images/modelling/bpmn_screen_24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imixs/imixs-workflow/78a4a8ae007a3e03c0c405ab4f38174c58236ace/src/site/resources/images/modelling/bpmn_screen_24.png -------------------------------------------------------------------------------- /src/site/resources/images/modelling/bpmn_screen_25.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imixs/imixs-workflow/78a4a8ae007a3e03c0c405ab4f38174c58236ace/src/site/resources/images/modelling/bpmn_screen_25.png -------------------------------------------------------------------------------- /src/site/resources/images/modelling/bpmn_screen_26.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imixs/imixs-workflow/78a4a8ae007a3e03c0c405ab4f38174c58236ace/src/site/resources/images/modelling/bpmn_screen_26.png -------------------------------------------------------------------------------- /src/site/resources/images/modelling/bpmn_screen_27.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imixs/imixs-workflow/78a4a8ae007a3e03c0c405ab4f38174c58236ace/src/site/resources/images/modelling/bpmn_screen_27.png -------------------------------------------------------------------------------- /src/site/resources/images/modelling/bpmn_screen_28.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imixs/imixs-workflow/78a4a8ae007a3e03c0c405ab4f38174c58236ace/src/site/resources/images/modelling/bpmn_screen_28.png -------------------------------------------------------------------------------- /src/site/resources/images/modelling/bpmn_screen_29.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imixs/imixs-workflow/78a4a8ae007a3e03c0c405ab4f38174c58236ace/src/site/resources/images/modelling/bpmn_screen_29.png -------------------------------------------------------------------------------- /src/site/resources/images/modelling/bpmn_screen_30.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imixs/imixs-workflow/78a4a8ae007a3e03c0c405ab4f38174c58236ace/src/site/resources/images/modelling/bpmn_screen_30.png -------------------------------------------------------------------------------- /src/site/resources/images/modelling/bpmn_screen_31.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imixs/imixs-workflow/78a4a8ae007a3e03c0c405ab4f38174c58236ace/src/site/resources/images/modelling/bpmn_screen_31.png -------------------------------------------------------------------------------- /src/site/resources/images/modelling/bpmn_screen_32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imixs/imixs-workflow/78a4a8ae007a3e03c0c405ab4f38174c58236ace/src/site/resources/images/modelling/bpmn_screen_32.png -------------------------------------------------------------------------------- /src/site/resources/images/modelling/bpmn_screen_33.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imixs/imixs-workflow/78a4a8ae007a3e03c0c405ab4f38174c58236ace/src/site/resources/images/modelling/bpmn_screen_33.png -------------------------------------------------------------------------------- /src/site/resources/images/modelling/bpmn_screen_34.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imixs/imixs-workflow/78a4a8ae007a3e03c0c405ab4f38174c58236ace/src/site/resources/images/modelling/bpmn_screen_34.png -------------------------------------------------------------------------------- /src/site/resources/images/modelling/bpmn_screen_35.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imixs/imixs-workflow/78a4a8ae007a3e03c0c405ab4f38174c58236ace/src/site/resources/images/modelling/bpmn_screen_35.png -------------------------------------------------------------------------------- /src/site/resources/images/modelling/bpmn_screen_36.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imixs/imixs-workflow/78a4a8ae007a3e03c0c405ab4f38174c58236ace/src/site/resources/images/modelling/bpmn_screen_36.png -------------------------------------------------------------------------------- /src/site/resources/images/modelling/bpmn_screen_37.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imixs/imixs-workflow/78a4a8ae007a3e03c0c405ab4f38174c58236ace/src/site/resources/images/modelling/bpmn_screen_37.png -------------------------------------------------------------------------------- /src/site/resources/images/modelling/bpmn_screen_38.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imixs/imixs-workflow/78a4a8ae007a3e03c0c405ab4f38174c58236ace/src/site/resources/images/modelling/bpmn_screen_38.png -------------------------------------------------------------------------------- /src/site/resources/images/modelling/example_01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imixs/imixs-workflow/78a4a8ae007a3e03c0c405ab4f38174c58236ace/src/site/resources/images/modelling/example_01.png -------------------------------------------------------------------------------- /src/site/resources/images/modelling/example_02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imixs/imixs-workflow/78a4a8ae007a3e03c0c405ab4f38174c58236ace/src/site/resources/images/modelling/example_02.png -------------------------------------------------------------------------------- /src/site/resources/images/modelling/example_03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imixs/imixs-workflow/78a4a8ae007a3e03c0c405ab4f38174c58236ace/src/site/resources/images/modelling/example_03.png -------------------------------------------------------------------------------- /src/site/resources/images/modelling/example_04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imixs/imixs-workflow/78a4a8ae007a3e03c0c405ab4f38174c58236ace/src/site/resources/images/modelling/example_04.png -------------------------------------------------------------------------------- /src/site/resources/images/modelling/example_05.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imixs/imixs-workflow/78a4a8ae007a3e03c0c405ab4f38174c58236ace/src/site/resources/images/modelling/example_05.png -------------------------------------------------------------------------------- /src/site/resources/images/modelling/example_06.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imixs/imixs-workflow/78a4a8ae007a3e03c0c405ab4f38174c58236ace/src/site/resources/images/modelling/example_06.png -------------------------------------------------------------------------------- /src/site/resources/images/modelling/example_07.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imixs/imixs-workflow/78a4a8ae007a3e03c0c405ab4f38174c58236ace/src/site/resources/images/modelling/example_07.png -------------------------------------------------------------------------------- /src/site/resources/images/modelling/example_08.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imixs/imixs-workflow/78a4a8ae007a3e03c0c405ab4f38174c58236ace/src/site/resources/images/modelling/example_08.png -------------------------------------------------------------------------------- /src/site/resources/images/modelling/example_09.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imixs/imixs-workflow/78a4a8ae007a3e03c0c405ab4f38174c58236ace/src/site/resources/images/modelling/example_09.png -------------------------------------------------------------------------------- /src/site/resources/images/modelling/example_10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imixs/imixs-workflow/78a4a8ae007a3e03c0c405ab4f38174c58236ace/src/site/resources/images/modelling/example_10.png -------------------------------------------------------------------------------- /src/site/resources/images/modelling/example_11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imixs/imixs-workflow/78a4a8ae007a3e03c0c405ab4f38174c58236ace/src/site/resources/images/modelling/example_11.png -------------------------------------------------------------------------------- /src/site/resources/images/modelling/example_12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imixs/imixs-workflow/78a4a8ae007a3e03c0c405ab4f38174c58236ace/src/site/resources/images/modelling/example_12.png -------------------------------------------------------------------------------- /src/site/resources/images/modelling/example_13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imixs/imixs-workflow/78a4a8ae007a3e03c0c405ab4f38174c58236ace/src/site/resources/images/modelling/example_13.png -------------------------------------------------------------------------------- /src/site/resources/images/modelling/example_14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imixs/imixs-workflow/78a4a8ae007a3e03c0c405ab4f38174c58236ace/src/site/resources/images/modelling/example_14.png -------------------------------------------------------------------------------- /src/site/resources/images/modelling/install-vscode-01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imixs/imixs-workflow/78a4a8ae007a3e03c0c405ab4f38174c58236ace/src/site/resources/images/modelling/install-vscode-01.png -------------------------------------------------------------------------------- /src/site/resources/images/modelling/open-bpmn_screen_01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imixs/imixs-workflow/78a4a8ae007a3e03c0c405ab4f38174c58236ace/src/site/resources/images/modelling/open-bpmn_screen_01.png -------------------------------------------------------------------------------- /src/site/resources/images/modelling/order-01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imixs/imixs-workflow/78a4a8ae007a3e03c0c405ab4f38174c58236ace/src/site/resources/images/modelling/order-01.png -------------------------------------------------------------------------------- /src/site/resources/images/modelling/order-02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imixs/imixs-workflow/78a4a8ae007a3e03c0c405ab4f38174c58236ace/src/site/resources/images/modelling/order-02.png -------------------------------------------------------------------------------- /src/site/resources/images/modelling/report-01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imixs/imixs-workflow/78a4a8ae007a3e03c0c405ab4f38174c58236ace/src/site/resources/images/modelling/report-01.png -------------------------------------------------------------------------------- /src/site/resources/images/modelling/report-02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imixs/imixs-workflow/78a4a8ae007a3e03c0c405ab4f38174c58236ace/src/site/resources/images/modelling/report-02.png -------------------------------------------------------------------------------- /src/site/resources/images/modelling/report-03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imixs/imixs-workflow/78a4a8ae007a3e03c0c405ab4f38174c58236ace/src/site/resources/images/modelling/report-03.png -------------------------------------------------------------------------------- /src/site/resources/images/modelling/roles_00.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imixs/imixs-workflow/78a4a8ae007a3e03c0c405ab4f38174c58236ace/src/site/resources/images/modelling/roles_00.png -------------------------------------------------------------------------------- /src/site/resources/images/modelling/roles_01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imixs/imixs-workflow/78a4a8ae007a3e03c0c405ab4f38174c58236ace/src/site/resources/images/modelling/roles_01.png -------------------------------------------------------------------------------- /src/site/resources/images/modelling/roles_02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imixs/imixs-workflow/78a4a8ae007a3e03c0c405ab4f38174c58236ace/src/site/resources/images/modelling/roles_02.png -------------------------------------------------------------------------------- /src/site/resources/images/modelling/roles_03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imixs/imixs-workflow/78a4a8ae007a3e03c0c405ab4f38174c58236ace/src/site/resources/images/modelling/roles_03.png -------------------------------------------------------------------------------- /src/site/resources/images/modelling/roles_04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imixs/imixs-workflow/78a4a8ae007a3e03c0c405ab4f38174c58236ace/src/site/resources/images/modelling/roles_04.png -------------------------------------------------------------------------------- /src/site/resources/images/modelling/roles_05.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imixs/imixs-workflow/78a4a8ae007a3e03c0c405ab4f38174c58236ace/src/site/resources/images/modelling/roles_05.png -------------------------------------------------------------------------------- /src/site/resources/images/modelling/rule_01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imixs/imixs-workflow/78a4a8ae007a3e03c0c405ab4f38174c58236ace/src/site/resources/images/modelling/rule_01.png -------------------------------------------------------------------------------- /src/site/resources/images/modelling/splitandjoin-example-01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imixs/imixs-workflow/78a4a8ae007a3e03c0c405ab4f38174c58236ace/src/site/resources/images/modelling/splitandjoin-example-01.png -------------------------------------------------------------------------------- /src/site/resources/images/plugin_api.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imixs/imixs-workflow/78a4a8ae007a3e03c0c405ab4f38174c58236ace/src/site/resources/images/plugin_api.png -------------------------------------------------------------------------------- /src/site/resources/images/process-manager-001.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imixs/imixs-workflow/78a4a8ae007a3e03c0c405ab4f38174c58236ace/src/site/resources/images/process-manager-001.png -------------------------------------------------------------------------------- /src/site/resources/images/process-manager-002.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imixs/imixs-workflow/78a4a8ae007a3e03c0c405ab4f38174c58236ace/src/site/resources/images/process-manager-002.png -------------------------------------------------------------------------------- /src/site/resources/images/processflow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imixs/imixs-workflow/78a4a8ae007a3e03c0c405ab4f38174c58236ace/src/site/resources/images/processflow.png -------------------------------------------------------------------------------- /src/site/resources/images/script/architecture.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imixs/imixs-workflow/78a4a8ae007a3e03c0c405ab4f38174c58236ace/src/site/resources/images/script/architecture.png -------------------------------------------------------------------------------- /src/site/resources/images/script/imixs-architecture.odg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imixs/imixs-workflow/78a4a8ae007a3e03c0c405ab4f38174c58236ace/src/site/resources/images/script/imixs-architecture.odg -------------------------------------------------------------------------------- /src/site/resources/images/webtools/fileupload-01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imixs/imixs-workflow/78a4a8ae007a3e03c0c405ab4f38174c58236ace/src/site/resources/images/webtools/fileupload-01.png -------------------------------------------------------------------------------- /src/site/resources/images/webtools/fileupload-02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imixs/imixs-workflow/78a4a8ae007a3e03c0c405ab4f38174c58236ace/src/site/resources/images/webtools/fileupload-02.png -------------------------------------------------------------------------------- /src/site/resources/images/webtools/imixs-architecture.odg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imixs/imixs-workflow/78a4a8ae007a3e03c0c405ab4f38174c58236ace/src/site/resources/images/webtools/imixs-architecture.odg -------------------------------------------------------------------------------- /src/site/resources/images/webtools/imixs-architecture_web.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imixs/imixs-workflow/78a4a8ae007a3e03c0c405ab4f38174c58236ace/src/site/resources/images/webtools/imixs-architecture_web.png -------------------------------------------------------------------------------- /src/site/resources/images/webtools/screenshot_001.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imixs/imixs-workflow/78a4a8ae007a3e03c0c405ab4f38174c58236ace/src/site/resources/images/webtools/screenshot_001.png -------------------------------------------------------------------------------- /src/site/resources/images/webtools/screenshot_002.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imixs/imixs-workflow/78a4a8ae007a3e03c0c405ab4f38174c58236ace/src/site/resources/images/webtools/screenshot_002.png -------------------------------------------------------------------------------- /src/site/resources/images/webtools/screenshot_003.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imixs/imixs-workflow/78a4a8ae007a3e03c0c405ab4f38174c58236ace/src/site/resources/images/webtools/screenshot_003.png -------------------------------------------------------------------------------- /src/site/resources/images/xml/xmlDataCollection.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imixs/imixs-workflow/78a4a8ae007a3e03c0c405ab4f38174c58236ace/src/site/resources/images/xml/xmlDataCollection.png -------------------------------------------------------------------------------- /src/site/resources/images/xml/xmlDocument.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imixs/imixs-workflow/78a4a8ae007a3e03c0c405ab4f38174c58236ace/src/site/resources/images/xml/xmlDocument.png -------------------------------------------------------------------------------- /src/site/resources/images/xml/xmlItemArray.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imixs/imixs-workflow/78a4a8ae007a3e03c0c405ab4f38174c58236ace/src/site/resources/images/xml/xmlItemArray.png -------------------------------------------------------------------------------- /src/site/resources/images/xml/xmlitem.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imixs/imixs-workflow/78a4a8ae007a3e03c0c405ab4f38174c58236ace/src/site/resources/images/xml/xmlitem.png -------------------------------------------------------------------------------- /src/site/resources/logos/logo-01_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imixs/imixs-workflow/78a4a8ae007a3e03c0c405ab4f38174c58236ace/src/site/resources/logos/logo-01_black.png -------------------------------------------------------------------------------- /src/site/resources/logos/logo-01_brown.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imixs/imixs-workflow/78a4a8ae007a3e03c0c405ab4f38174c58236ace/src/site/resources/logos/logo-01_brown.png -------------------------------------------------------------------------------- /src/site/resources/logos/logo-01_gray.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imixs/imixs-workflow/78a4a8ae007a3e03c0c405ab4f38174c58236ace/src/site/resources/logos/logo-01_gray.png -------------------------------------------------------------------------------- /src/site/resources/logos/logo-02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imixs/imixs-workflow/78a4a8ae007a3e03c0c405ab4f38174c58236ace/src/site/resources/logos/logo-02.png -------------------------------------------------------------------------------- /src/site/resources/reports/demo.imixs-report: -------------------------------------------------------------------------------- 1 | $createdDate<format locale="IT">EEEE, dd. MMMM YYYY</format>txtworkflowstatusStatus_teamTeamdatdateDateDateEEEE, dd. MMMM YYYYapplication/xmlExample ReportUTF-8demo-report(type:"workitem")demo.xsl -------------------------------------------------------------------------------- /src/site/resources/uml/adapter_api.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imixs/imixs-workflow/78a4a8ae007a3e03c0c405ab4f38174c58236ace/src/site/resources/uml/adapter_api.png -------------------------------------------------------------------------------- /src/site/resources/uml/adapter_api.uml: -------------------------------------------------------------------------------- 1 | @startuml 2 | 3 | autonumber 4 | 5 | participant WorkflowKernel order 1 6 | participant Model order 2 7 | participant SignalAdapter order 3 8 | participant Plugin order 50 9 | participant GenericAdapter order 90 10 | 11 | 12 | hide footbox 13 | 14 | activate WorkflowKernel 15 | 16 | WorkflowKernel -> Model: load BPMN Event 17 | activate Model 18 | Model --> WorkflowKernel: 19 | deactivate Model 20 | 21 | 22 | WorkflowKernel -> SignalAdapter: execute Signal Adapters 23 | activate SignalAdapter 24 | SignalAdapter --> WorkflowKernel 25 | deactivate SignalAdapter 26 | 27 | 28 | 29 | 30 | WorkflowKernel -> Plugin: execute Plug-Ins (run) 31 | activate Plugin 32 | Plugin --> WorkflowKernel: Plug-In (close) 33 | deactivate Plugin 34 | 35 | 36 | WorkflowKernel -> GenericAdapter: execute Generic Adapters 37 | activate GenericAdapter 38 | GenericAdapter -> WorkflowKernel 39 | deactivate GenericAdapter 40 | 41 | 42 | 43 | deactivate WorkflowKernel 44 | 45 | @enduml 46 | -------------------------------------------------------------------------------- /src/site/resources/uml/analysisplugin.uml: -------------------------------------------------------------------------------- 1 | @startuml 2 | autonumber 3 | 4 | 5 | NewTicket -> Open: submit new ticket 6 | note left 7 | Start of Measuring Point P1 8 | 9 | datMeasurePointStart_P1 = timestamp 10 | numMeasurePoint_P1 = duration in sec 11 | end note 12 | activate NewTicket 13 | Open->Accepted: assign ticket 14 | 15 | activate Accepted 16 | 17 | 18 | Accepted -> Solved: solve ticket 19 | note left 20 | Start of Measuring Point P2 21 | 22 | datMeasurePointStart_P2 = timestamp 23 | numMeasurePoint_P2 = duration in sec 24 | end note 25 | 26 | 27 | Solved --> Accepted 28 | 29 | 30 | note right 31 | End of Measuring Point P2 32 | datMeasurePointStop_P2 33 | end note 34 | deactivate Accepted 35 | 36 | 37 | Solved -> Closed: close ticket 38 | 39 | 40 | 41 | 42 | Closed --> NewTicket 43 | 44 | note right 45 | End of Measuring Point P1 46 | datMeasurePointStop_P1 47 | end note 48 | 49 | 50 | deactivate NewTicket 51 | 52 | 53 | @enduml 54 | -------------------------------------------------------------------------------- /src/site/resources/uml/plugin_api.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imixs/imixs-workflow/78a4a8ae007a3e03c0c405ab4f38174c58236ace/src/site/resources/uml/plugin_api.png -------------------------------------------------------------------------------- /src/site/resources/uml/plugin_api.uml: -------------------------------------------------------------------------------- 1 | @startuml 2 | 3 | 4 | 5 | 6 | participant WorkflowKernel order 1 7 | participant Model order 2 8 | collections Plugin order 50 9 | collections Service order 99 10 | 11 | box "Workflow Engine" #White 12 | participant WorkflowKernel 13 | participant Model 14 | participant Plugin 15 | 16 | end box 17 | 18 | box "Microservice" #LightBlue 19 | participant Service 20 | end box 21 | 22 | hide footbox 23 | 24 | activate WorkflowKernel 25 | 26 | WorkflowKernel -> WorkflowKernel: register Plug-In 27 | 28 | WorkflowKernel -> Model: load BPMN Event 29 | activate Model 30 | Model --> WorkflowKernel: 31 | deactivate Model 32 | 33 | 34 | 35 | WorkflowKernel -> Plugin: init Plug-In 36 | activate Plugin 37 | WorkflowKernel -> Plugin: run Plug-In 38 | 39 | Plugin -->o Service: external API Call 40 | activate Service 41 | Service --> Plugin 42 | deactivate Service 43 | 44 | WorkflowKernel -> Plugin: close Plug-In 45 | deactivate Plugin 46 | 47 | 48 | 49 | deactivate WorkflowKernel 50 | 51 | @enduml 52 | -------------------------------------------------------------------------------- /src/site/uml/README.md: -------------------------------------------------------------------------------- 1 | # PlantUML 2 | 3 | The UML sequence diagrams stored here were created with [Plant-UML](http://plantuml.com/sequence-diagram). 4 | 5 | To generate a diagram run: 6 | 7 | java -jar plantuml.jar ~/git/imixs-workflow/src/site/uml/architecture-external-api.uml 8 | 9 | 10 | -------------------------------------------------------------------------------- /src/site/uml/architecture-external-api.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imixs/imixs-workflow/78a4a8ae007a3e03c0c405ab4f38174c58236ace/src/site/uml/architecture-external-api.png -------------------------------------------------------------------------------- /src/site/uml/architecture-external-api.uml: -------------------------------------------------------------------------------- 1 | @startuml 2 | autonumber 3 | 4 | box "Imixs-Workflow Instance" #LightBlue 5 | participant WorkflowService 6 | end box 7 | 8 | box "Imixs Microservice" #EEEEEE 9 | participant AdapterService 10 | end box 11 | 12 | box "External Service API" #EEEEEE 13 | participant RestAPI 14 | end box 15 | 16 | == Workflow Life-Cycle == 17 | 18 | activate WorkflowService #EEEEEE 19 | 20 | WorkflowService -> WorkflowService : process workitem 21 | 22 | WorkflowService --> AdapterService : create event log entry 23 | deactivate WorkflowService #EEEEEE 24 | 25 | 26 | 27 | 28 | 29 | activate AdapterService 30 | AdapterService -> AdapterService : poll event log 31 | AdapterService -> RestAPI : call external RestAPI 32 | 33 | 34 | 35 | activate RestAPI 36 | RestAPI -> RestAPI : execute 37 | RestAPI -> AdapterService: 38 | deactivate RestAPI 39 | 40 | 41 | AdapterService --> WorkflowService : callback 42 | deactivate AdapterService 43 | activate WorkflowService #EEEEEE 44 | WorkflowService -> WorkflowService: update process instance 45 | 46 | 47 | 48 | @enduml 49 | --------------------------------------------------------------------------------