The Product Idea boards have gotten an update to better integrate them within our Product team's idea cycle! However this update does have a few unique behaviors, if you have any questions about them check out our FAQ.

Alteryx Designer Desktop Ideas

Share your Designer Desktop product ideas - we're listening!
Submitting an Idea?

Be sure to review our Idea Submission Guidelines for more information!

Submission Guidelines

Adjustable Delay for Control Containers

Allow users the ability to add a delay on the connection between Control Container tools. I frequently have to rerun workflows that use the control container because the workflow has not registered that the file was properly closed on outputting from one output tool to the next. The network drives haven't resolved and show that the file is still open while its moved on to the next control container. Users should have an option in the Configuration screen to add a delay before a signal is sent for the next container to run. 

 

In the past I was able to use a CReW tool (Wait a Second) in conjunction with the Block Until Done tool to add the delay in manually. But I have since converted all of my workflows over to Control Containers. Since then half of the times the workflow has run I encounter the following errors.

 

image.png

image.png

3件のコメント
fmvizcaino
17 - Castor
17 - Castor

Great idea!!!!

cjaneczko
パルサー

Is there a work around anyone is aware of? Tired of re running the workflow 5-10 times just to wait for that one flow to run smoothly without any lag between one Control Container to the next. 

NeoInfiniTech
コメット

This would be a good idea to implement, provided that each output tool in the separate control containers are only outputting a single sheet for a given Excel file.

 

Additional implementations would be needed for the scenarios that involve output tools writing to multiple sheets of an Excel files at once, but that would be another subject for a new idea (also a case that I recently encountered for a file that needed to be generated in a network location).

 

For scenarios such as these where each control container outputs a single sheet, I would like to share a sample workflow you can adapt to your use case.

 

While you cannot usually use the Throttle tool with AMP Engine enabled (mandatory when Control Containers are being used), it is still possible to use it given it is placed before a Download tool.

 

In the attached workflow, I set the Throttle tool to process 12 records per minute (1 record every 5 seconds) and pointed the Download tool to a local file, using a file with no spaces in its name, with forward slashes and prefixing the path with "file:///". You can set the speed of the Throttle tool as you need. Each new record you add to the Text Input tool will multiply the waiting time, in this example workflow 10 seconds will pass before the next Control Container activates (2 records * 12 rpm = 10s) which should be enough time.

 

Caveats:

- One sheet output per Output tool

- 2023.1 or higher with the latest patch (to fix all Control Container issues)

- Throttle tool must be placed last (or Download tool won't recognize the incoming field from Text Input) or you can copy & paste the entire process as necessary.

 

Of course it would be the best if there was an option to delay Control Container output signal as necessary like it was mentioned in this idea but until such a feature is implemented, I hope this might be of help for your use case.

 

As Ideas post doesn't let users attach a YXMD file, you can copy & paste this into a new TXT file, then change its name to "Control Container Throttling.yxmd" and open it in Alteryx Designer.

 

<?xml version="1.0"?>
<AlteryxDocument yxmdVer="2023.1">
  <Nodes>
    <Node ToolID="3">
      <GuiSettings Plugin="AlteryxBasePluginsGui.TextInput.TextInput">
        <Position x="378" y="210" />
      </GuiSettings>
      <Properties>
        <Configuration>
          <NumRows value="2" />
          <Fields>
            <Field name="PlaceholderURL" />
          </Fields>
          <Data>
            <r>
              <c>file:///C:/Users/SampleUser/Desktop/ToDoList.txt</c>
            </r>
            <r>
              <c>file:///C:/Users/SampleUser/Desktop/ToDoList.txt</c>
            </r>
          </Data>
        </Configuration>
        <Annotation DisplayMode="0">
          <Name />
          <DefaultAnnotationText />
          <Left value="False" />
        </Annotation>
      </Properties>
      <EngineSettings EngineDll="AlteryxBasePluginsEngine.dll" EngineDllEntryPoint="AlteryxTextInput" />
    </Node>
    <Node ToolID="9">
      <GuiSettings Plugin="AlteryxBasePluginsGui.AppendFields.AppendFields">
        <Position x="498" y="90" />
      </GuiSettings>
      <Properties>
        <Configuration>
          <CartesianMode>Error</CartesianMode>
          <SelectConfiguration>
            <Configuration outputConnection="Output">
              <OrderChanged value="False" />
              <CommaDecimal value="False" />
              <SelectFields>
                <SelectField field="*Unknown" selected="True" />
              </SelectFields>
            </Configuration>
          </SelectConfiguration>
        </Configuration>
        <Annotation DisplayMode="0">
          <Name />
          <DefaultAnnotationText />
          <Left value="False" />
        </Annotation>
      </Properties>
      <EngineSettings EngineDll="AlteryxBasePluginsEngine.dll" EngineDllEntryPoint="AlteryxAppendFields" />
    </Node>
    <Node ToolID="10">
      <GuiSettings Plugin="AlteryxBasePluginsGui.Sample.Sample">
        <Position x="390" y="102" />
      </GuiSettings>
      <Properties>
        <Configuration>
          <Mode>First</Mode>
          <N>1</N>
          <GroupFields orderChanged="False" />
        </Configuration>
        <Annotation DisplayMode="0">
          <Name />
          <DefaultAnnotationText>First 1 rows</DefaultAnnotationText>
          <Left value="False" />
        </Annotation>
      </Properties>
      <EngineSettings EngineDll="AlteryxBasePluginsEngine.dll" EngineDllEntryPoint="AlteryxSample" />
    </Node>
    <Node ToolID="11">
      <GuiSettings Plugin="AlteryxConnectorGui.Download.Download">
        <Position x="726" y="90" />
      </GuiSettings>
      <Properties>
        <Configuration>
          <URLField>PlaceholderURL</URLField>
          <OutputMode>String</OutputMode>
          <CodePage>65001</CodePage>
          <EncodeURLs value="True" />
          <Headers>
            <NameValues />
            <Fields orderChanged="False">
              <Field name="PlaceholderURL" selected="False" />
              <Field name="*Unknown" selected="False" />
            </Fields>
          </Headers>
          <Payload>
            <HTTPAction>GET</HTTPAction>
            <QueryStringBodyMode>Compose</QueryStringBodyMode>
            <ComposeNameValues />
            <ComposeFields orderChanged="False">
              <Field name="PlaceholderURL" selected="False" />
              <Field name="*Unknown" selected="False" />
            </ComposeFields>
          </Payload>
          <numConnections>2</numConnections>
          <Timeout>600</Timeout>
          <EnableRPM value="False" />
          <DcmAdvancedAuth value="False" />
          <Password />
          <UserName />
        </Configuration>
        <Annotation DisplayMode="0">
          <Name />
          <DefaultAnnotationText />
          <Left value="False" />
        </Annotation>
      </Properties>
      <EngineSettings EngineDll="AlteryxConnectorEngine.dll" EngineDllEntryPoint="AlteryxDownload" />
    </Node>
    <Node ToolID="12">
      <GuiSettings Plugin="AlteryxBasePluginsGui.Throttle.Throttle">
        <Position x="618" y="90" />
      </GuiSettings>
      <Properties>
        <Configuration>
          <RecordsPerMinute>12</RecordsPerMinute>
        </Configuration>
        <Annotation DisplayMode="0">
          <Name />
          <DefaultAnnotationText>12 Records per minute</DefaultAnnotationText>
          <Left value="False" />
        </Annotation>
      </Properties>
      <EngineSettings EngineDll="AlteryxBasePluginsEngine.dll" EngineDllEntryPoint="AlteryxThrottle" />
    </Node>
    <Node ToolID="15">
      <GuiSettings Plugin="AlteryxGuiToolkit.ControlContainer.ControlContainer">
        <Position x="845" y="101" width="196" height="133" />
      </GuiSettings>
      <Properties>
        <Configuration>
          <Caption>Control Container 15</Caption>
          <Style TextColor="#314c4a" FillColor="#ecf2f2" BorderColor="#314c4a" Transparency="25" Margin="25" />
          <Disabled value="False" />
          <Folded value="False" />
        </Configuration>
        <Annotation DisplayMode="0">
          <Name />
          <DefaultAnnotationText />
          <Left value="False" />
        </Annotation>
      </Properties>
      <ChildNodes>
        <Node ToolID="16">
          <GuiSettings Plugin="AlteryxBasePluginsGui.TextInput.TextInput">
            <Position x="870" y="150" />
          </GuiSettings>
          <Properties>
            <Configuration>
              <NumRows value="1" />
              <Fields>
                <Field name="Field1" />
              </Fields>
              <Data>
                <r>
                  <c>testing456</c>
                </r>
              </Data>
            </Configuration>
            <Annotation DisplayMode="0">
              <Name />
              <DefaultAnnotationText />
              <Left value="False" />
            </Annotation>
          </Properties>
          <EngineSettings EngineDll="AlteryxBasePluginsEngine.dll" EngineDllEntryPoint="AlteryxTextInput" />
        </Node>
      </ChildNodes>
      <EngineSettings EngineDll="AlteryxBasePluginsEngine.dll" EngineDllEntryPoint="AlteryxCtrlContainer" />
    </Node>
    <Node ToolID="7">
      <GuiSettings Plugin="AlteryxGuiToolkit.ControlContainer.ControlContainer">
        <Position x="162" y="126" width="189" height="133" />
      </GuiSettings>
      <Properties>
        <Configuration>
          <Caption>Control Container 7</Caption>
          <Style TextColor="#314c4a" FillColor="#ecf2f2" BorderColor="#314c4a" Transparency="25" Margin="25" />
          <Disabled value="False" />
          <Folded value="False" />
        </Configuration>
        <Annotation DisplayMode="0">
          <Name />
          <DefaultAnnotationText />
          <Left value="False" />
        </Annotation>
      </Properties>
      <ChildNodes>
        <Node ToolID="8">
          <GuiSettings Plugin="AlteryxBasePluginsGui.TextInput.TextInput">
            <Position x="187" y="175" />
          </GuiSettings>
          <Properties>
            <Configuration>
              <NumRows value="1" />
              <Fields>
                <Field name="Field1" />
              </Fields>
              <Data>
                <r>
                  <c>testing123</c>
                </r>
              </Data>
            </Configuration>
            <Annotation DisplayMode="0">
              <Name />
              <DefaultAnnotationText />
              <Left value="False" />
            </Annotation>
          </Properties>
          <EngineSettings EngineDll="AlteryxBasePluginsEngine.dll" EngineDllEntryPoint="AlteryxTextInput" />
        </Node>
      </ChildNodes>
      <EngineSettings EngineDll="AlteryxBasePluginsEngine.dll" EngineDllEntryPoint="AlteryxCtrlContainer" />
    </Node>
  </Nodes>
  <Connections>
    <Connection>
      <Origin ToolID="3" Connection="Output" />
      <Destination ToolID="9" Connection="Targets" />
    </Connection>
    <Connection>
      <Origin ToolID="10" Connection="Output" />
      <Destination ToolID="9" Connection="Source" />
    </Connection>
    <Connection>
      <Origin ToolID="9" Connection="Output" />
      <Destination ToolID="12" Connection="Input" />
    </Connection>
    <Connection>
      <Origin ToolID="11" Connection="Output" />
      <Destination ToolID="15" Connection="Control" />
    </Connection>
    <Connection>
      <Origin ToolID="12" Connection="Output" />
      <Destination ToolID="11" Connection="Input" />
    </Connection>
    <Connection>
      <Origin ToolID="7" Connection="Log" />
      <Destination ToolID="10" Connection="Input" />
    </Connection>
  </Connections>
  <Properties>
    <Memory default="True" />
    <GlobalRecordLimit value="0" />
    <TempFiles default="True" />
    <Annotation on="True" includeToolName="False" />
    <ConvErrorLimit value="10" />
    <ConvErrorLimit_Stop value="False" />
    <CancelOnError value="False" />
    <DisableBrowse value="False" />
    <EnablePerformanceProfiling value="False" />
    <RunWithE2 value="True" />
    <SortedGrouping value="True" />
    <PredictiveToolsCodePage value="1252" />
    <DisableAllOutput value="False" />
    <ShowAllMacroMessages value="False" />
    <ShowConnectionStatusIsOn value="True" />
    <ShowConnectionStatusOnlyWhenRunning value="True" />
    <ZoomLevel value="0" />
    <LayoutType>Horizontal</LayoutType>
    <IsTemplate value="False" />
    <MetaInfo>
      <NameIsFileName value="True" />
      <Name>Control Container Throttling</Name>
      <Description />
      <RootToolName />
      <ToolVersion />
      <ToolInDb value="False" />
      <CategoryName />
      <SearchTags />
      <Author />
      <Company />
      <Copyright />
      <DescriptionLink actual="" displayed="" />
      <Example>
        <Description />
        <File />
      </Example>
    </MetaInfo>
    <Events>
      <Enabled value="True" />
    </Events>
  </Properties>
</AlteryxDocument>