Using Rule Inputs Between Interfaces

No longer need assistance, thanks!

  Discussion posts and replies are publicly visible

Parents
  • 0
    Certified Lead Developer

    As Mike mentioned what you say and what your code says is different. Are you able to provide full sale code which help us to provide some answer.

    you can also refer Appian documentation for some use case recipes here https://docs.appian.com/suite/help/23.1/SAIL_Recipes.htmlhttps://docs.appian.com/suite/help/23.1/SAIL_Recipes.html 

  • Your link didn't work for me, and yes here's the full code

    a!localVariables(
      {
        a!gridField(
          data: a!recordData(
            recordType: 'recordType!{ba350028-3b3e-4bca-babd-abe7e223a3e9}DS APR COPY',
            filters: {
              a!queryFilter(
                field: 'recordType!{ba350028-3b3e-4bca-babd-abe7e223a3e9}DS APR COPY.fields.{4cada3be-cfb9-4975-aabf-7a131211805c}requestId',
                operator: "=",
                value: ri!requestId,
                applyWhen: a!isNotNullOrEmpty(ri!requestId)
              ),
              a!queryFilter(
                field: 'recordType!{ba350028-3b3e-4bca-babd-abe7e223a3e9}DS APR COPY.fields.{cc19b7f0-3dc0-469a-b711-93b382ede170}isActive',
                operator: "=",
                value: true()
              )
            }
          ),
          columns: {
          
            a!gridColumn(
              label: "Quality Codes",
              sortField: ri!pkmnChoice,
              value: ri!pkmnChoice,
              align: "CENTER",
              width: "NARROW"
            ),
            a!gridColumn(
              label: "Quantity",
              value: fv!row['recordType!{ba350028-3b3e-4bca-babd-abe7e223a3e9}DS APR COPY.fields.{80bf64db-41ec-407a-83d7-4b0cc8a10c9d}quantity'],
              align: "CENTER",
              width: "NARROW"
            ),
            a!gridColumn(
              label: "UOM",
              value: rule!DS_QE_GetUnitOfMeasureDescriptionFromId(
                fv!row['recordType!{ba350028-3b3e-4bca-babd-abe7e223a3e9}DS APR COPY.fields.{900f2942-bc71-4395-a119-66131a478806}uomID']
              ),
              align: "CENTER",
              width: "NARROW"
            ),
            a!gridColumn(
              label: "Unit Cost",
              value: if(
                a!isNullOrEmpty(
                  fv!row['recordType!{ba350028-3b3e-4bca-babd-abe7e223a3e9}DS APR COPY.fields.{ae629137-5672-4a79-9a06-76e70d68b215}unitCost']
                ),
                dollar("0"),
                dollar(
                  fv!row['recordType!{ba350028-3b3e-4bca-babd-abe7e223a3e9}DS APR COPY.fields.{ae629137-5672-4a79-9a06-76e70d68b215}unitCost']
                )
              ),
              align: "CENTER",
              width: "NARROW_PLUS"
            ),
    
          },
          borderStyle: "LIGHT",
          shadeAlternateRows: true(),
          refreshAlways: true(),
          showSearchBox: false(),
          showRefreshButton: false(),
          showExportButton: false()
        ),
        a!richTextDisplayField(
          label: "Total Cost: ",
          labelPosition: "COLLAPSED",
          value: a!richTextItem(
            text: "Total Cost:   " & dollar(a!defaultValue(ri!totalCost, 0)), style: "STRONG"),
          align: "RIGHT"
          
          
        )
      }
    )

    a!localVariables(
      local!numberOfExistingItems: a!refreshVariable(
        value: if(a!isNullOrEmpty(ri!requestItems), 0, length(ri!requestItems)),
        refreshOnReferencedVarChange: false()
      ),
      local!uomId: rule!APR_QE_GetUnitOfMeasure(),
      local!hardwareTypeList: rule!APR_QR_GetHardwareTypeList(),
      {
        a!gridLayout(
          label: "Material Request Items",
          labelPosition: "COLLAPSED",
          headerCells: {
            a!gridLayoutHeaderCell(
              label: "Item Part Number",
              helpTooltip: "Number to be traced in inventory.",
              align: "CENTER"
            ),
            a!gridLayoutHeaderCell(
              label: "Item Description",
              align: "CENTER"
            ),
            a!gridLayoutHeaderCell(
              label: "Manufacturer/Vendor Part Number",
              align: "CENTER"
            ),
            a!gridLayoutHeaderCell(label: "HW Class", align: "CENTER"),
            a!gridLayoutHeaderCell(label: "Quality Codes", align: "CENTER"),
            a!gridLayoutHeaderCell(label: "Quantity", align: "CENTER"),
            a!gridLayoutHeaderCell(label: "UOM", align: "CENTER"),
            a!gridLayoutHeaderCell(label: "Unit Cost", align: "CENTER"),
            a!gridLayoutHeaderCell(label: "Note", align: "CENTER"),
            a!gridLayoutHeaderCell(label: "Total Cost", align: "LEFT"),
            a!gridLayoutHeaderCell(label: "")
          },
          columnConfigs: {
            /* Item Part Number */
            a!gridLayoutColumnConfig(width: "DISTRIBUTE", weight: 2),
            /* Item Description */
            a!gridLayoutColumnConfig(width: "DISTRIBUTE", weight: 3),
            /* Manufacturer/Vendor Part Number */
            a!gridLayoutColumnConfig(width: "DISTRIBUTE", weight: 2),
            /*Hardware Class*/
            a!gridLayoutColumnConfig(width: "NARROW"),
            /*Quality Codes*/
            a!gridLayoutColumnConfig(width: "DISTRIBUTE", weight: 1),
            /*Quantity*/
            a!gridLayoutColumnConfig(width: "NARROW"),
            /* UOM */
            a!gridLayoutColumnConfig(width: "NARROW"),
            /* Unit Cost */
            a!gridLayoutColumnConfig(width: "DISTRIBUTE", weight: 1),
            /* Note */
            a!gridLayoutColumnConfig(width: "DISTRIBUTE", weight: 2),
            /* Total Cost */
            a!gridLayoutColumnConfig(width: "DISTRIBUTE", weight: 1),
            /* Delete button */
            a!gridLayoutColumnConfig(width: "ICON")
          },
          rows: a!forEach(
            items: ri!requestItems,
            expression: a!gridRowLayout(
              id: fv!index,
              contents: {
                a!textField(
                  value: fv!item.partNumber,
                  saveInto: { fv!item.partNumber },
                  characterLimit: 255,
                  showCharacterCount: false,
                  required: true(),
                  requiredMessage: "Part Number cannot be empty",
                  validationGroup: "Validate_Form"
                  
                ),
                a!textField(
                  value: fv!item.description,
                  saveInto: { fv!item.description },
                  characterLimit: 1000,
                  showCharacterCount: false
                  
                ),
                a!textField(
                  value: fv!item.vendorPartNumber,
                  saveInto: { fv!item.vendorPartNumber },
                  characterLimit: 255,
                  showCharacterCount: false
                  
                ),
                a!dropdownField(
                  placeholder: "HW Class",
                  choiceLabels: index(
                    local!hardwareTypeList,
                    'recordType!{ad3656f4-f6c6-4b61-a1d3-6bdaa55d447c}APR Hardware Type.fields.{3ed3a1fc-1387-4d04-a871-66422d11e684}name'
                  ),
                  choiceValues: index(
                    local!hardwareTypeList,
                    'recordType!{ad3656f4-f6c6-4b61-a1d3-6bdaa55d447c}APR Hardware Type.fields.{37ea6949-fb4c-4209-9ce5-33f3777647b3}hardwareTypeId'
                  ),
                  value: fv!item.hardwareTypeId,
                  saveInto: fv!item.hardwareTypeId
                  
                ),
                a!localVariables(
                  local!PokemonChoice: null,
                  a!multipleDropdownField(
                    label: "Quality Codes",
                    choiceLabels: {
                      "Kabuto",
                      "Kabutops",
                      "Aerodactyl",
                      "Snorlax",
                      "Articuno",
                      "Zapdos",
                      "Moltres",
                      "Dratini",
                      "Dragonair",
                      "Dragonite",
                      "Mewtwo",
                      "Mew",
                    },
                    choiceValues: {
                      "Kabuto",
                      "Kabutops",
                      "Aerodactyl",
                      "Snorlax",
                      "Articuno",
                      "Zapdos",
                      "Moltres",
                      "Dratini",
                      "Dragonair",
                      "Dragonite",
                      "Mewtwo",
                      "Mew",
                    },
                    value: local!PokemonChoice,
                    saveInto: local!PokemonChoice,
                    placeholder: "Select a Pokemon",
                    )
                    ),
                a!integerField(
                  value: a!defaultValue(value: fv!item.quantity, default: 0),
                  saveInto: {
                    fv!item.quantity,
                    a!save(
                      target: fv!item.totalCost,
                      value: rule!APR_UTIL_calculateItemTotalCost(fv!item)
                    )
                  }
                ),
                a!dropdownField(
                  placeholder: "UOM",
                  choiceLabels: index(local!uomId, "description", {}),
                  choiceValues: index(local!uomId, "measureId", {}),
                  value: fv!item.uomId,
                  saveInto: { fv!item.uomId }
                ),
                a!floatingPointField(
                  value: a!defaultValue(value: fv!item.unitCost, default: 0),
                  saveInto: {
                    fv!item.unitCost,
                    a!save(
                      target: fv!item.totalCost,
                      value: rule!APR_UTIL_calculateItemTotalCost(fv!item)
                    )
                  }
                ),
                a!textField(
                  value: fv!item.note,
                  saveInto: fv!item.note,
                  characterLimit: 1000,
                  showCharacterCount: false
                  
                ),
                a!textField(
                  value: if(
                    a!isNullOrEmpty(fv!item.unitCost),
                    dollar("0"),
                    dollar(
                      rule!APR_UTIL_calculateItemTotalCost(fv!item)
                    )
                  ),
                  readOnly: true()
                ),
                if(
                  fv!index > local!numberOfExistingItems,
                  a!richTextDisplayField(
                    value: a!richTextIcon(
                      icon: "close",
                      link: a!dynamicLink(
                        value: fv!index,
                        saveInto: {
                          a!save(
                            ri!requestItems,
                            remove(ri!requestItems, save!value)
                          )
                        }
                      ),
                      linkStyle: "STANDALONE",
                      color: "NEGATIVE"
                    )
                  ),
                  if(
                    fv!item.isActive,
                    a!richTextDisplayField(
                      value: a!richTextIcon(
                        icon: "times",
                        altText: "Remove",
                        caption: "Remove",
                        link: a!dynamicLink(
                          value: false(),
                          saveInto: fv!item.isActive
                        ),
                        linkStyle: "STANDALONE"
                      )
                    ),
                    a!richTextDisplayField(
                      value: a!richTextIcon(
                        icon: "undo",
                        altText: "Undo",
                        Caption: "Undo",
                        link: a!dynamicLink(value: true(), saveInto: fv!item.isActive),
                        linkStyle: "STANDALONE"
                      )
                    )
                  )
                )
              }
            )
          ),
          addRowLink: a!dynamicLink(
            label: "Add Item",
            value: 'type!{urn:com:appian:types:APR}APR_Request_Item'(
              partNumber: "",
              description: "",
              quantity: 0,
              unitCost: 0,
              totalCost: 0,
              isActive: true(),
              createdBy: loggedInUser(),
              createdDate: now()
            ),
            saveInto: {
              a!save(
                ri!requestItems,
                append(ri!requestItems, save!value)
              )
            }
            
          ),
          borderStyle: "LIGHT"
        ),
        a!richTextDisplayField(
          label: "Total Cost: ",
          labelPosition: "COLLAPSED",
          value: a!richTextItem(
            text: "Total Cost:   " & dollar(sum(
              a!forEach(
                items: ri!requestItems,
                expression: if(
                  fv!item.isActive,
                  fv!item.totalCost,
                  0
                )
              )
            )),
            style: "STRONG"
          ),
          align: "RIGHT"
          
        )
      }
    )

  • 0
    Certified Senior Developer
    in reply to davinar9817

    I think, In grid field we have to refer fv!row to display data. You already stored the data in data parameter in grid field. so we can display only whatever data we have given. 

  • Well I'm mostly just trying to pass a rule input into the interface so I can display it.

    I have this error and I'm not sure why

Reply Children
  • 0
    Certified Lead Developer
    in reply to davinar9817

    Well, if your child interface is rule!DS_LocalVarAPRTest() as implied by your screenshot - this is not the syntax you'd use to pass a local variable held by the parent.  This is pretty basic syntax for calling Rules in Appian at this point - honestly you might need to go back and review / re-practice the basics.

    Anyway to answer your question, the proper way to call this child interface assuming it has a variable named ri!pkmnChoice which you want to pass the value of local!PokemonChoice, should look like this:

    rule!DS_LocalVarAPRTest(
      pkmnChoice: local!PokemonChoice
    )