DX Core publishing vs. Swift publication

DX Core publishing

On DX Core, the default Magnolia publication process follows the four-eye workflow in the Pages app. You can disable the workflow in the Pages app to speed up the publishing process if there are no separate editor and publisher roles.

Disable the publishing workflow in the Pages app

Magnolia ships with publishing approval and rejection workflows. By default, they are only enabled in the Pages app.

Disabling the workflow in the Pages app may be appropriate for a simple site workflow where there are no separate editor and publisher roles.

There are several options to disable the publishing workflow for the Pages app.

  1. Create a DX Core webapp that excludes the Workflow and Personalization modules.

  2. Decorate the pages-app and add a dependency to workflow-pages. The dependency is necessary so that the light module decoration isn’t overridden again.

    Click to see the decorations

    /light-modules/my-module/decorations/pages-app/apps/pages-app.subApps.yaml
    browser:
      actions:
        publish: !override
          icon: icon-publish
          $type: jcrCommandAction
          command: personalizationActivation
          availability:
            writePermissionRequired: true
            rules:
              isPublishable:
                $type: jcrPublishableRule
        publishRecursive: !override
          icon: icon-publish-incl-sub
          $type: jcrCommandAction
          command: personalizationActivation
          params:
            recursive: true
          availability:
            writePermissionRequired: true
            rules:
              isPublishable:
                $type: jcrPublishableRule
    light-modules/my-module/module.yaml
    version: 1.0.2
    displayName: Shareable
    dependencies:
      workflow-pages:
        version: 6.0/*

    Removing a decoration?

    The only way to remove an existing decoration is to either override it with another decoration or remove the whole module with the original decoration.

  3. Delete the content of the workflow-pages decoration. This approach doesn’t persist the changes when an instance is upgraded and involves extra configuration steps.

    Click to see more details

    Editing a resource in the Resources files app creates a copy of the recourse in JCR. This isn’t recommended for deployment and maintenance. For productive environments, you should use a decorator, as described above.


    Resource Files app

    1. Go to the Resource Files app.

    2. Search for pages-app.

    3. Select the file /workflow-pages/decorations/pages-app/apps/pages-app/pages-app.subApps.yaml.

    4. Click Edit file.

      Make a copy of the contents if you need to restore the four-eye workflow actions later.
    5. Delete its contents and Save changes.

    Configuration app

    1. Add the itemTypes property on the /modules/publishing-core/commands/default/publish/publish node as shown below.

      /modules/publishing-core/commands/default/publish/publish
      Node name Value

      ⸬ publish

           ⸬ publish

               ⬩ class

      info.magnolia.publishing.command.PublicationCommand

               ⬩ itemTypes

      mgnl:contentNode,mgnl:componentVariants

Swift publication

This module has yet to be released. If you want to learn more, contact us at swift.publishing@magnolia-cms.com for information on availability and technology previews.

Swift Publication offers a more scalable and efficient method for versioning and publishing content than the default DX Core publishing workflow. It is initially available as a technical preview program for selected customers with the release of Magnolia 6.3. It is delivered as a standalone enterprise module that can be used as a drop-in replacement for DX Core publishing. It requires the provisioning of additional infrastructure (an external version store and a message broker). PaaS users can use it out of the box, while on-premises users must provision the external infrastructure themselves.

Swift Publication stores versions in an external version store, such as S3 or Azure Blob Storage. In production environments, we recommend using a message broker to communicate between author and public instances. When an author publishes changes, the changes are sent to and stored in the external version store. The public instances receive notifications via the message broker and fetch the corresponding version from the version store. For development and testing environments, you can coordinate directly via REST instead of using a message broker.

Swift publication

This architecture provides a couple of advantages over the default DX Core publication process:

  • There is less load on the author instance as versions are maintained externally

  • Better and more flexible scalability regarding the size and frequency of publications, as well as the number of public instances

  • Improved resilience and easier failure recovery

  • Simple transactionality model (eventual consistency amongst public instances)

Remember, these benefits come with the added complexity of provisioning, configuring, and maintaining the external version store and message broker. For smaller sites, you might not consider the extra effort justified.

Feedback

DX Core

×

Location

This widget lets you know where you are on the docs site.

You are currently perusing through the Performance tuning guide docs.

Main doc sections

DX Core Headless PaaS Legacy Cloud Incubator modules