From aiup-alfresco
Validates Alfresco Activiti BPMN 2.0 process definitions and workflow model XML for namespaces, task assignees, variable naming conventions, formKey alignment, and forbidden Flowable patterns. Auto-triggers on *.bpmn or *-workflow-model.xml.
npx claudepluginhub aborroy/aiup-alfrescoThis skill is limited to using the following tools:
Validate the given Alfresco Activiti BPMN process definition (and companion workflow model, if present) against these rules.
Validates Alfresco content model XML files for namespace URI format, structure, types/aspects, property data types, reserved prefixes, unsafe mandatory enforced properties, and Spring context beans. Auto-triggers on *-model.xml or *-context.xml.
Interprets n8n validation errors, warnings, and suggestions; guides fixes for node configs, expressions, references, and workflow validation loops.
Interprets n8n validation errors and warnings from validate_node or validate_workflow calls, identifies false positives, and guides fixes for nodes and workflows.
Share bugs, ideas, or general feedback.
Validate the given Alfresco Activiti BPMN process definition (and companion workflow model, if present) against these rules.
<definitions> with BPMN 2.0 namespace:
xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL"xmlns:activiti="http://activiti.org/bpmn" — must be present; Alfresco Activiti extensions use this namespaceorg.flowable.* class reference in class attributes of <activiti:taskListener>, <activiti:executionListener>, or <serviceTask activiti:class="...">. ACS 26.1 uses Activiti 5.22.x; the Flowable API is not on the classpath.<process> element must have:
id attribute (camelCase identifier)name attribute (human-readable)isExecutable="true"<startEvent> is missing activiti:formKey in a non-trivial process (more than one user task)<userTask> must have either activiti:assignee or activiti:candidateGroups:
activiti:formKey<exclusiveGateway> with multiple outgoing sequence flows must have <conditionExpression> on all but one outgoing flow:
default<serviceTask> must have either activiti:class or activiti:expression or activiti:delegateExpression:
<activiti:string> blocks inside <activiti:field name="script"> elements and inside <conditionExpression> elementsexecution.setVariable(...) or task.getVariableLocal(...) uses a variable name containing a colon (e.g. acme:outcome). The correct form uses underscore (acme_outcome). Alfresco maps content model properties {prefix}wf:{propName} → process variable {prefix}wf_{propName} (colon → underscore).<conditionExpression> references a variable with a colon in the name (e.g. ${acme:count == 2}). Use ${acme_count == 2}.<activiti:taskListener> or <activiti:executionListener> using a class attribute:
org.flowable.*org.alfresco.repo.workflow.activiti.tasklistener.ScriptTaskListener, org.alfresco.repo.workflow.activiti.listener.ScriptExecutionListenerorg.alfresco.*) — confirm it implements org.activiti.engine.delegate.TaskListener<boundaryEvent> containing a <timerEventDefinition> must have:
cancelActivity attribute explicitly set to "true" or "false" — WARNING if missing<timeDuration>: PT{N}S, PT{N}M, PT{N}H, P{N}D, or combinations — ERROR if the format does not match ISO 8601If a companion *-workflow-model.xml exists in the same module's model/ directory:
activiti:formKey value in the BPMN must correspond to a <type name="..."> declared in the workflow model:
bpm namespace:
<import uri="http://www.alfresco.org/model/bpm/1.0" prefix="bpm"/>
bpm:startTask, bpm:activitiOutcomeTask, or bpm:workflowTask:
bpm: parent<mandatory enforced="true"> — the integrity checker fires before addAspect() writes properties, causing a spurious IntegrityExceptionIf a bootstrap-context.xml exists in the module's context/ directory:
<bean> with parent="dictionaryModelBootstrap" that lists a .bpmn file in its models property — BPMN files must be registered via parent="workflowDeployer", not dictionaryModelBootstrapworkflowDeployer bean has <prop key="redeploy">true</prop> — this causes duplicate process definitions on every restartReport all violations with:
If no violations are found, confirm: "BPMN and workflow model are valid for ACS 26.1 / Activiti 5.x."