BPMN transactional subprocess double line

Shows double lines in palette, but only single line when caught and released.

how do i make double lines?

https://gojs.net/latest/projects/bpmn/BPMN.html

The purpose of the “Auto” Panel is to add a border or similar thing to surround some content.

So I would just insert an “Auto” Panel that has a “RoundedRectangle” Shape as its first element around whatever is inside your current “Auto” Panel with a “RoundedRectangle” Shape.

I added but got such a result

the code I added

GO(go.Shape, "RoundedRectangle",
                            {
                                margin: 3,
                                stretch: go.GraphObject.Fill,
                                stroke: ActivityNodeStroke,
                                parameter1: 8 / palscale,
                                fill: null,
                                visible: false
                            },
                    new go.Binding("visible", "isTransaction")),



var subProcessGroupTemplate = GO(go.Group, "Spot",
                {
                    locationSpot: go.Spot.Center,
                    locationObjectName: "PH",
                    selectionChanged: assignGroupLayer,
                    subGraphExpandedChanged: function (grp) {
                        if (grp.isSubGraphExpanded) grp.isSelected = true;
                        assignGroupLayer(grp);
                    },
                    memberValidation: function (group, part) {
                        return !(part instanceof go.Group) ||
                            (part.category !== 'Pool' && part.category !== 'Lane');
                    },
                    mouseDrop: function (e, grp) {
                        if (!(grp instanceof go.Group) || grp.diagram === null)
                            return;
                        var ok = grp.addMembers(grp.diagram.selection, true);
                        if (!ok)
                            grp.diagram.currentTool.doCancel();
                    },
                    mouseEnter: function (e, node) {
                        internalHelper.showSmallPorts(node, true);
                    },
                    mouseLeave: function (e, node) {
                        internalHelper.showSmallPorts(node, false);
                    },
                    contextMenu: activityNodeMenu,
                    itemTemplate: boundaryEventItemTemplate,
                    selectionAdorned: false
                },
                new go.Binding("itemArray", "boundaryEventArray"),
                new go.Binding("location", "loc", go.Point.parse).makeTwoWay(go.Point.stringify),
                new go.Binding("isSubGraphExpanded", "isExpanded").makeTwoWay(),
                GO(go.Panel, "Auto",
                    GO(go.Shape, "RoundedRectangle",
                        {
                            name: "PH", fill: SubprocessNodeFill, stroke: SubprocessNodeStroke,
                            minSize: new go.Size(SubprocessNodeWidth, SubprocessNodeHeight),
                            portId: "", fromLinkable: true, toLinkable: true, cursor: "pointer",
                            fromSpot: go.Spot.RightSide, toSpot: go.Spot.LeftSide
                        },
                        new go.Binding("stroke", "isSelected", function (sel) {
                            if (sel) return "dodgerblue"; else return "black";
                        }).ofObject(""),
                        new go.Binding("fill", "isSelected", function (sel) {
                            if (sel) return "#f0f8ff"; else return "white";
                        }).ofObject(""),
                        new go.Binding("strokeWidth", "isCall", function (s) { return s ? ActivityNodeStrokeWidthIsCall : ActivityNodeStrokeWidth; })
                    ),
					GO(go.Shape, "RoundedRectangle",
                            {
                                margin: 3,
                                stretch: go.GraphObject.Fill,
                                stroke: ActivityNodeStroke,
                                parameter1: 8 / palscale,
                                fill: null,
                                visible: false
                            },
                    new go.Binding("visible", "isTransaction")),		
                    GO(go.Panel, "Vertical",
                        { defaultAlignment: go.Spot.Left },
                        GO(go.TextBlock,
                            { margin: 3, editable: false },
                            new go.Binding("text", "", function (val, node) {
                                var name = "";
                                if (val && val.externalData && val.externalData.Name !== undefined && val.externalData.Name !== null) {
                                    name = val.externalData.Name;
                                }
                                return name == "" ? val.text : name;
                            }).makeTwoWay(),
                            new go.Binding("alignment", "isSubGraphExpanded", function (s) { return s ? go.Spot.TopLeft : go.Spot.Center; })),
                        GO(go.Placeholder,
                            { padding: new go.Margin(5, 5) }),
                        makeMarkerPanel(true, 1)
                    )
                ),
                new go.Binding("movable", "locked", function (val) {
                    return val ? false : true;
                }),
                new go.Binding("deletable", "locked", function (val) {
                    return val ? false : true;
                }),
                new go.Binding("isShadowed", "externalData", function (externalData) {
                    if (externalData.ReferanceProcessId !== undefined && externalData.ReferanceProcessId !== null &&
                        externalData.ReferanceProcessProvStr !== 0) {
                        return true;
                    }
                    return false;
                })
            );

            function fixExpandBtn(panel, subgraphBtn) {
                var sgBtn = panel.findObject(subgraphBtn);
                var border = sgBtn.findObject("ButtonBorder");
                if (border instanceof go.Shape) {
                    border.figure = "Rectangle";
                    border.spot1 = new go.Spot(0, 0, 2, 2);
                    border.spot2 = new go.Spot(1, 1, -2, -2);
                }
            }
            fixExpandBtn(subProcessGroupTemplate, "subExpandBtn");
Panel, "Auto'
    Shape, "RoundedRectangle"
    Panel, "Auto"
        Shape, "RoundedRectangle"
        . . .

problem persists when expanded

image

I added this code

GO(go.Panel, "Auto",
                        GO(go.Shape, "RoundedRectangle",
                            {
                                margin: 3,
                                stretch: go.GraphObject.Fill,
                                stroke: ActivityNodeStroke,
                                minSize: new go.Size(SubprocessNodeWidth, SubprocessNodeHeight),
                                fill: null,
                                visible: false
                            },
                            new go.Binding("visible", "isTransaction")
                        )
                    ),
               var subProcessGroupTemplate = GO(go.Group, "Spot",
                {
                    locationSpot: go.Spot.Center,
                    locationObjectName: "PH",
                    selectionChanged: assignGroupLayer,
                    subGraphExpandedChanged: function (grp) {
                        if (grp.isSubGraphExpanded) grp.isSelected = true;
                        assignGroupLayer(grp);
                    },
                    memberValidation: function (group, part) {
                        return !(part instanceof go.Group) ||
                            (part.category !== 'Pool' && part.category !== 'Lane');
                    },
                    mouseDrop: function (e, grp) {
                        if (!(grp instanceof go.Group) || grp.diagram === null)
                            return;
                        var ok = grp.addMembers(grp.diagram.selection, true);
                        if (!ok)
                            grp.diagram.currentTool.doCancel();
                    },
                    mouseEnter: function (e, node) {
                        internalHelper.showSmallPorts(node, true);
                    },
                    mouseLeave: function (e, node) {
                        internalHelper.showSmallPorts(node, false);
                    },
                    contextMenu: activityNodeMenu,
                    itemTemplate: boundaryEventItemTemplate,
                    selectionAdorned: false
                },
                new go.Binding("itemArray", "boundaryEventArray"),
                new go.Binding("location", "loc", go.Point.parse).makeTwoWay(go.Point.stringify),
                new go.Binding("isSubGraphExpanded", "isExpanded").makeTwoWay(),
                GO(go.Panel, "Auto",
                    GO(go.Shape, "RoundedRectangle",
                        {
                            name: "PH", fill: SubprocessNodeFill, stroke: SubprocessNodeStroke,
                            minSize: new go.Size(SubprocessNodeWidth, SubprocessNodeHeight),
                            portId: "", fromLinkable: true, toLinkable: true, cursor: "pointer",
                            fromSpot: go.Spot.RightSide, toSpot: go.Spot.LeftSide
                        },
                        new go.Binding("stroke", "isSelected", function (sel) {
                            if (sel) return "dodgerblue"; else return "black";
                        }).ofObject(""),
                        new go.Binding("fill", "isSelected", function (sel) {
                            if (sel) return "#f0f8ff"; else return "white";
                        }).ofObject(""),
                        new go.Binding("strokeWidth", "isCall", function (s) { return s ? ActivityNodeStrokeWidthIsCall : ActivityNodeStrokeWidth; })
                    ),
                    GO(go.Panel, "Auto",
                        GO(go.Shape, "RoundedRectangle",
                            {
                                margin: 3,
                                stretch: go.GraphObject.Fill,
                                stroke: ActivityNodeStroke,
                                minSize: new go.Size(SubprocessNodeWidth, SubprocessNodeHeight),
                                fill: null,
                                visible: false
                            },
                            new go.Binding("visible", "isTransaction")
                        )
                    ),
                    GO(go.Panel, "Vertical",
                        { defaultAlignment: go.Spot.Left },
                        GO(go.TextBlock,
                            { margin: 3, editable: false },
                            new go.Binding("text", "", function (val, node) {
                                var name = "";
                                if (val && val.externalData && val.externalData.Name !== undefined && val.externalData.Name !== null) {
                                    name = val.externalData.Name;
                                }
                                return name == "" ? val.text : name;
                            }).makeTwoWay(),
                            new go.Binding("alignment", "isSubGraphExpanded", function (s) { return s ? go.Spot.TopLeft : go.Spot.Center; })),
                        GO(go.Placeholder,
                            { padding: new go.Margin(5, 5) }),
                        makeMarkerPanel(true, 1)
                    )
                ),
                new go.Binding("movable", "locked", function (val) {
                    return val ? false : true;
                }),
                new go.Binding("deletable", "locked", function (val) {
                    return val ? false : true;
                })
            );

            function fixExpandBtn(panel, subgraphBtn) {
                var sgBtn = panel.findObject(subgraphBtn);
                var border = sgBtn.findObject("ButtonBorder");
                if (border instanceof go.Shape) {
                    border.figure = "Rectangle";
                    border.spot1 = new go.Spot(0, 0, 2, 2);
                    border.spot2 = new go.Spot(1, 1, -2, -2);
                }
            }
            fixExpandBtn(subProcessGroupTemplate, "subExpandBtn");

You have to have nested “Auto” Panels, as I specified above:

Your template has doesn’t put the “Vertical” Panel inside the inner “Auto” Panel.