Simplify repetitive logic with sub flows

Create a sub process flow within a process flow to simplify repetitive logic.


00:03

In FlexSim, a sub process flow, or sub flow, is a specific segment of a process that can be reused at multiple points within the process.

00:14

This eliminates the need to recreate repetitive logic.

00:20

Using a sub flow allows for modular process flow designs and enhances the flexibility, efficiency, and scalability of your simulation model.

00:31

In this example, a previously created model shows items moving from conveyors into a warehousing system.

00:40

The ProcessFlow is set up to control the flow and loading of items through the ASRS system to the racks.

00:47

Here, you can see that each ASRS process is set up individually, making for a complicated design that uses repetitive logic.

00:58

While this setup works, you can simplify it by using a sub flow, resulting in a more manageable and efficient design.

01:07

First, Stop the simulation.

01:10

In the SouthSide of the model, begin by grouping the ASRS decision points.

01:17

Right-click a decision point and select Object Groups > Add to a New Group.

01:24

In the Group Properties dialog, enter a name for the Group, such as “SouthDP”.

01:31

Then, use the Sampler to add the rest of the decision points to the group—here, DP1 through DP10.

01:41

Close the Group Properties.

01:43

Select one of the decision points in the model.

01:47

In Properties, under Triggers, click Add, and select On Arrival.

01:55

Then, click Add and select Data > Set Label.

02:03

In the Set Label dialog, change the Label to “ASRS” and the Value to “1”.

02:09

Repeat these steps for the remaining decision points, increasing the Value by one.

02:16

For example, the second decision point will have a Value of 2, the third a Value of 3, and so on.

02:25

The trigger is now set up to add a corresponding label to each item when it arrives at the decision point.

02:32

Next, in the SouthSide ProcessFlow,

02:36

move the ASRS activities down to make space, and then copy and paste one of the repetitive process flows to use as a starting point.

02:46

Open the Source Quick Properties and then click the Object Sampler.

02:52

In the Model, select one of the decision points, then select Group: SouthDP > On Arrival.

03:02

This sets the Source up for the group instead of an individual decision point.

03:07

Back in the Source Quick Properties, under Label Assignment, add a Label Name of “pallet”, and for the Operation, select assign.

03:20

Open the Quick Library and add an Assign Labels activity to the Source.

03:26

In the Assign Labels Quick Properties, set the Name to “ASRS”, and the Value to “token.pallet.ASRS”

03:35

to apply a label to each token that corresponds to its pallet.

03:39

Next, open the Pull from ASRS_1 list Quick Properties, and change the setup from an individual list to a uniform list.

03:49

Click the List Reference Sampler and select a blank spot in the ProcessFlow.

03:55

In Quick Properties, rename the list to “Pull from South ASRS List”.

04:02

Then, in the Toolbox, select ASRS_1, then right-click and select Duplicate.

04:13

Rename the list to “South ASRS List”, then click OK.

04:19

Back in the ProcessFlow, in the List Quick Properties, expand the List drop-down-and select Global List > South ASRS List.

04:33

Next, create a sub flow for the process that finds and assigns slots, and then loads and unloads each item.

04:41

Select this part of the process and move it to the side.

04:46

Open the Quick Library and add a Run Sub Flow, placing it below the Acquire activity.

04:54

Disconnect the Pull from South ASRS List activity from its current activity block, and then add it below Assign Labels.

05:03

When you add a Run Sub Flow activity, you must link it to a sub flow.

05:09

Click the exclamation mark icon next to Run Sub Flow to select the Sampler.

05:15

Click in the ProcessFlow to create a Start activity, then make it the first activity in your sub flow.

05:24

In this example, some of the connections and the adjacent flow are deleted to make room for the sub flow.

05:32

Next, the Decide is separated from its block and the sub flow activities are moved up.

05:39

Then, in the Quick Library, a Finish Sub Flow is selected and placed as the last activity in the sub flow.

05:48

The Decide and connector are removed, and the Move Object block is added below Run Sub Flow.

05:57

The List is moved up closer to the rest of the newly created flow.

06:02

In List Quick Properties, the List is renamed to “South ASRS List”.

06:09

Then, the remaining individual ASRS process flows are deleted, and the Process Flow container is resized to fit the new sub flow.

06:20

In the Run Sub Flow Quick Properties, the Quantity is set to “token.pallet.subnodes.length.”

06:28

In the Acquire Quick Properties, the Query is adjusted to “WHERE ASRSvehicle = puller.ASRS”.

06:38

When the model is Reset and Run, you can see that it accomplishes the same outcome as the previous model.

06:46

However, the ProcessFlow logic has been significantly simplified by adding decision points to a group,

06:53

and by adding labels for the process flow and sub flow to recognize.

06:59

In this example, you can further simplify the design by performing the same steps on the North Side Operations.

07:08

With both processes using sub flows, the overall ProcessFlow design is far more efficient.

Video transcript

00:03

In FlexSim, a sub process flow, or sub flow, is a specific segment of a process that can be reused at multiple points within the process.

00:14

This eliminates the need to recreate repetitive logic.

00:20

Using a sub flow allows for modular process flow designs and enhances the flexibility, efficiency, and scalability of your simulation model.

00:31

In this example, a previously created model shows items moving from conveyors into a warehousing system.

00:40

The ProcessFlow is set up to control the flow and loading of items through the ASRS system to the racks.

00:47

Here, you can see that each ASRS process is set up individually, making for a complicated design that uses repetitive logic.

00:58

While this setup works, you can simplify it by using a sub flow, resulting in a more manageable and efficient design.

01:07

First, Stop the simulation.

01:10

In the SouthSide of the model, begin by grouping the ASRS decision points.

01:17

Right-click a decision point and select Object Groups > Add to a New Group.

01:24

In the Group Properties dialog, enter a name for the Group, such as “SouthDP”.

01:31

Then, use the Sampler to add the rest of the decision points to the group—here, DP1 through DP10.

01:41

Close the Group Properties.

01:43

Select one of the decision points in the model.

01:47

In Properties, under Triggers, click Add, and select On Arrival.

01:55

Then, click Add and select Data > Set Label.

02:03

In the Set Label dialog, change the Label to “ASRS” and the Value to “1”.

02:09

Repeat these steps for the remaining decision points, increasing the Value by one.

02:16

For example, the second decision point will have a Value of 2, the third a Value of 3, and so on.

02:25

The trigger is now set up to add a corresponding label to each item when it arrives at the decision point.

02:32

Next, in the SouthSide ProcessFlow,

02:36

move the ASRS activities down to make space, and then copy and paste one of the repetitive process flows to use as a starting point.

02:46

Open the Source Quick Properties and then click the Object Sampler.

02:52

In the Model, select one of the decision points, then select Group: SouthDP > On Arrival.

03:02

This sets the Source up for the group instead of an individual decision point.

03:07

Back in the Source Quick Properties, under Label Assignment, add a Label Name of “pallet”, and for the Operation, select assign.

03:20

Open the Quick Library and add an Assign Labels activity to the Source.

03:26

In the Assign Labels Quick Properties, set the Name to “ASRS”, and the Value to “token.pallet.ASRS”

03:35

to apply a label to each token that corresponds to its pallet.

03:39

Next, open the Pull from ASRS_1 list Quick Properties, and change the setup from an individual list to a uniform list.

03:49

Click the List Reference Sampler and select a blank spot in the ProcessFlow.

03:55

In Quick Properties, rename the list to “Pull from South ASRS List”.

04:02

Then, in the Toolbox, select ASRS_1, then right-click and select Duplicate.

04:13

Rename the list to “South ASRS List”, then click OK.

04:19

Back in the ProcessFlow, in the List Quick Properties, expand the List drop-down-and select Global List > South ASRS List.

04:33

Next, create a sub flow for the process that finds and assigns slots, and then loads and unloads each item.

04:41

Select this part of the process and move it to the side.

04:46

Open the Quick Library and add a Run Sub Flow, placing it below the Acquire activity.

04:54

Disconnect the Pull from South ASRS List activity from its current activity block, and then add it below Assign Labels.

05:03

When you add a Run Sub Flow activity, you must link it to a sub flow.

05:09

Click the exclamation mark icon next to Run Sub Flow to select the Sampler.

05:15

Click in the ProcessFlow to create a Start activity, then make it the first activity in your sub flow.

05:24

In this example, some of the connections and the adjacent flow are deleted to make room for the sub flow.

05:32

Next, the Decide is separated from its block and the sub flow activities are moved up.

05:39

Then, in the Quick Library, a Finish Sub Flow is selected and placed as the last activity in the sub flow.

05:48

The Decide and connector are removed, and the Move Object block is added below Run Sub Flow.

05:57

The List is moved up closer to the rest of the newly created flow.

06:02

In List Quick Properties, the List is renamed to “South ASRS List”.

06:09

Then, the remaining individual ASRS process flows are deleted, and the Process Flow container is resized to fit the new sub flow.

06:20

In the Run Sub Flow Quick Properties, the Quantity is set to “token.pallet.subnodes.length.”

06:28

In the Acquire Quick Properties, the Query is adjusted to “WHERE ASRSvehicle = puller.ASRS”.

06:38

When the model is Reset and Run, you can see that it accomplishes the same outcome as the previous model.

06:46

However, the ProcessFlow logic has been significantly simplified by adding decision points to a group,

06:53

and by adding labels for the process flow and sub flow to recognize.

06:59

In this example, you can further simplify the design by performing the same steps on the North Side Operations.

07:08

With both processes using sub flows, the overall ProcessFlow design is far more efficient.

Was this information helpful?