I am getting CastInvalid Error Message . I verified all the datatypes . It looks good. I dont know where this error is pointing.

Expression evaluation error at function a!forEach [line 104]: Error in a!forEach() expression during iteration 1: Expression evaluation error at function 'cast' [line 106]: Could not cast from COSELM_coselm_eox_information to Number (Integer). Details: CastInvalidCould not cast from COSELM_coselm_eox_information to Number (Integer). Details: CastInvalid

  Discussion posts and replies are publicly visible

Parents Reply Children
  • Thank you :). But in my other expression i am doing casting which is working i am not sure why i am getting error. However this solution works fine. Let me integrate this with process model and see if it actually post the data to db 

      a!forEach(
      items: local!productinfo,
      expression: 
      'type!{urn:com:appian:types:COSELM}COSELM_coselm_eox_information'(
        
          serialNumber: fn!index(fv!item, "EOXInputValue", null),
          createdBy: loggedInUser(),
          createdOn: now(),
          modifiedBy: loggedInUser(),
          modifiedOn: now(),
          eOlproductId: fn!index(fv!item, "EOLProductID", null),
          productIdDescription: fn!index(fv!item, "ProductIDDescription", null),
          productBulletinNumber: fn!index(fv!item, "ProductBulletinNumber", null),
          linkToProductBulletinUrl: fn!index(fv!item, "LinkToProductBulletinURL", null),
          eOxExternalAnnouncementDate: fn!index(fv!item, "EOXExternalAnnouncementDate", null),
          endOfSaleDate: fn!index(fv!item, "EndOfSaleDate", null),
          endOfSwMaintenanceReleases: fn!index(fv!item, "EndOfSWMaintenanceReleases", null),
          endOfSecurityVulSupportDate: fn!index(fv!item, "EndOfSecurityVulSupportDate", ""),
          endOfRoutineFailureAnalysisDate: fn!index(fv!item, "EndOfRoutineFailureAnalysisDate", null),
          endOfServiceContractRenewal: fn!index(fv!item, "EndOfServiceContractRenewal", null),
          lastDateOfSupport: fn!index(fv!item, "LastDateOfSupport", null),
          endOfSvcAttachDate: fn!index(fv!item, "EndOfSvcAttachDate", null),
          updatedTimeStamp: fn!index(fv!item, "UpdatedTimeStamp", null),
          pIdActiveFlag: fn!index(fv!item, "PIDActiveFlag", null),
          migrationProductInfoUrl: fn!index(fv!item, "MigrationProductInfoURL", null),
          migrationInformation: fn!index(fv!item, "MigrationInformation", null),
          migrationProductId: fn!index(fv!item, "MigrationProductId", null),
          migrationProductName: fn!index(fv!item, "MigrationProductName", null),
          migrationStrategy: fn!index(fv!item, "MigrationStrategy", null),
          migrationOption: fn!index(fv!item, "MigrationOption", null),
        
      ),

  • Note: if you want to use CAST (which is valid) you need to lose the () suffix from your type! statement i.e.

    a!forEach(
        items: local!productInfo,
        expression: cast(
          'type!{urn:com:appian:types:COSELM}COSELM_coselm_eox_information',
          {
            /* map your attributes from fv!item to your CDT attributes here*/
          }
        )
      )

    This is because the instruction type!'<myType>'() is a function to create an instance of your CDT, whereas type!'<myType' is a reference to the type number, and CAST requires the type number of a type not an instance of the type.

  • Yup, just need to be aware that if you let Appian auto-complete your type! statement it will add the () function suffix. It's caught me out in the past...

  • Yeah. Learned from mistakes. I never forget.. I was breaking my head all looks good why it was failing. then after remove this "()" it fixed the issue. Anyway i learned two things.. We can cast using cast function else using type function to cast directly. 

    Thanks again :) for your prompt response. Appian community is fast in responding the queries. Exploring Appian..