Simple Publish

The simple-publish workflow is provided out-of-the-box to support Publishing
within Cloud CMS.

{
    "id": "simple-publish",
    "title": "Simple Publish",
    "handlers": {
        "START": [{
            "type": "script",
            "config": {
                "script": "workflowData.originalChangesetIds = {}; for (var i = 0; i < documents.length; i++) { workflowData.originalChangesetIds[documents[i].id] = documents[i].changesetId; }"
            }
        }]
    },
    "nodes": {
        "start": {
            "type": "start",
            "transitions": {
                "start": "decision1"
            }
        },
        "decision1": {
            "type": "decision",
            "transitions": {
                "already-in-draft": {
                    "when": "documents[0].getFeature('f:publishable').state === 'draft'",
                    "transition": "publish-to-live"
                },
                "default": "work_on_draft"
            }
        },
        "work_on_draft": {
            "type": "participant",
            "title": "Work on Draft Content",
            "swimlane": "initiator",
            "transitions": {
                "publish": "publish-to-live",
                "cancel": "cancel"
            },
            "handlers": {
                "ENTER": [
                    {
                        "type": "setProperties",
                        "config": {
                            "properties": [
                                {
                                    "name": "_features/f:publishable/state",
                                    "value": "draft"
                                }
                            ]
                        }
                    }
                ]
            }
        },
        "publish-to-live": {
            "type": "passthru",
            "title": "Publish to Live",
            "transitions": {
                "next": "end"
            },
            "handlers": {
                "ENTER": [
                    {
                        "type": "setProperties",
                        "config": {
                            "properties": [
                                {
                                    "name": "_features/f:publishable/state",
                                    "value": "live"
                                }
                            ]
                        }
                    }
                ]
            }
        },
        "cancel": {
            "type": "passthru",
            "title": "Cancel",
            "transitions": {
                "next": "end"
            },
            "handlers": {
                "ENTER": [
                    {
                        "type": "script",
                        "config": {
                            "script": "for (var i = 0; i < documents.length; i++) { var originalChangesetId = workflowData.originalChangesetIds[documents[i].id]; if (originalChangesetId) { documents[i].restoreFromVersion(originalChangesetId); } }"
                        }
                    }
                ]
            }
        },
        "end": {
            "type": "end"
        }
    }
}