Branching in brxm 14.5.0

Hi all,

I want to understand about brxm branching strategy, we can see at scxml file. I found some term Branch, PublishBranch, Master. Confused to understand, how they work and what are those?.

// branches property method
    def getBranches() {

    // only master available
    def boolean isOnlyMaster() {
// true if the branch from  from DocumentHandle is 'master'
    def boolean isMaster() {
      branches.contains('master') and 'master'.equals(branchId)

    // true if the branch from  from DocumentHandle is NOT 'master'
    def boolean isNotMaster() {

    // true if the branch from  from DocumentHandle exists
    def boolean isBranchExists() {
<!-- this will publish 'master' because no 'branchId' provided -->
          <send event="'**publishBranch**'"/>
<state id="branching">

        <hippo:action action="branch" enabledExpr="!editing and (!!unpublished or !!published) and branches.contains('master')"/>
        <hippo:action action="listBranches" enabledExpr="true"/>
        <hippo:action action="getBranch" enabledExpr="!onlyMaster and branchExists"/>
<state id="checking-out-branch"> .... </state>
<state id="publish-branch"> ... </state>

..... and so on

Above I have picked randomly, any documents that help us to understand the complete branching strategy and also please help me the differences between publish or publish-branch.


this is related to Projects featureā€¦some explanation can be found in this diagram:

Thanks for your response @machak.
Just curious to know about bit differences between publish or publish-branch.!!

Actually I had posted my another query Cannot invoke workflow documentworkflow action publishBranch: action not allowed or undefined

To solve that I had started to understand the scxml. If you can help me on my above issue, would be highly appreciable.