Process

Certified Senior Developer

Hi,

While I am using "Process Start Form" , I am facing an error like "Process Start Form : Neither Variables nor Rules found : expression". Could you please help me to fix it out? Thanks.

  Discussion posts and replies are publicly visible

  • Can you provide a few more details such as the SAIL code for your start form, list of rule inputs, and list of process variables set as parameters?

  • 0
    Certified Senior Developer
    in reply to Danny Verb

    Sure. Thanks a lot for your response.

    SAIL Code 

    a!localVariables(
    local!studata: rule!pass_getStudentDetailsByMailId(emailId: loggedInUser()),

    a!formLayout(
    label: "Online Pass Request - Submission",
    contents: {
    a!sectionLayout(
    contents: rule!pass_requester_details()
    ),
    a!sectionLayout(
    contents: rule!pass_request_details(requestDetapils: ri!requestDetails)
    )
    },
    buttons: a!buttonLayout(
    primaryButtons: {
    a!buttonWidget(
    label: "Submit",
    submit: true,
    style: "PRIMARY",
    saveInto: {
    a!save(ri!requestDetails.stuId, local!studata.stuId)
    }
    )
    },
    secondaryButtons: {
    a!buttonWidget(
    label: "Cancel",
    value: true,
    saveInto: ri!cancel,
    submit: true,
    style: "NORMAL",
    validate: false
    )
    }
    )
    )
    )

    Rule Inputs

    cancel

    requestDetails ("pass_request" CDT)

    Process Parameters

    /resized-image/__size/320x240/__key/communityserver-discussions-components-files/62/pastedimage1589465476396v1.png

    Error

    /resized-image/__size/320x240/__key/communityserver-discussions-components-files/62/pastedimage1589465535038v2.png

  • Your variables look fine. Please also attach the SAIL (Using the code block for readability) for your other interface rules. What I imagine is happening is you have saveinto: saveinto: somewhere by accident

  • 0
    Certified Senior Developer
    in reply to Danny Verb

    rule!pass_requester_details

    a!localVariables(
    local!studata: rule!pass_getStudentDetailsByMailId(
    emailId: loggedInUser()
    ),
    a!boxLayout(
    label: "Student Details",
    contents: {
    a!columnsLayout(
    columns: {
    a!columnLayout(
    contents: {
    a!textField(
    label: "Name",
    labelPosition: "JUSTIFIED",
    value: local!studata.stuName,
    saveInto: {},
    refreshAfter: "UNFOCUS",
    readonly: true,
    validations: {},
    accessibilitytext: "Name of the Student"
    )
    }
    ),
    a!columnLayout(
    contents: {
    a!textField(
    label: "Department",
    labelPosition: "JUSTIFIED",
    value: local!studata.stuDept,
    saveInto: {},
    refreshAfter: "UNFOCUS",
    readonly: true,
    validations: {},
    accessibilitytext: "Department Name"
    )
    }
    ),
    a!columnLayout(
    contents: {
    a!textField(
    label: "ID",
    labelPosition: "JUSTIFIED",
    value: local!studata.stuId,
    saveInto: {},
    refreshAfter: "UNFOCUS",
    readonly: true,
    validations: {},
    accessibilitytext: "Student ID"
    )
    }
    ),
    a!columnLayout(
    contents: {
    a!textField(
    label: "Email",
    labelPosition: "JUSTIFIED",
    value: loggedInUser(),
    saveInto: {},
    refreshAfter: "UNFOCUS",
    readonly: true,
    validations: {},
    accessibilitytext: "Student Email ID"
    )
    }
    ),
    a!columnLayout(
    contents: {
    a!textField(
    label: "Date & Time",
    labelPosition: "JUSTIFIED",
    value: todatetime(
    now()
    ),
    saveInto: {},
    refreshAfter: "UNFOCUS",
    readonly: true,
    validations: {},
    accessibilitytext: "Request Date & Time"
    )
    }
    )
    }
    )
    },
    style: "STANDARD",
    marginBelow: "STANDARD"
    )
    )

    rule!pass_request_details

    {
    a!localVariables(
    /*local!fromDate : ri!requestDetails.passFromDate,*/
    /*local!toDate : ri!requestDetails.passToDate, */
    /*local!datediff : local!toDate-local!fromDate,*/

    local!pickedPurpose,
    local!purposeLabels: {"Outing", "Going Home", "Technical Events", "Cultural Events", "Conferences", "Seminars"},
    local!purposeAbbreviations: {"Outing", "Going Home", "Technical Events", "Cultural Events", "Conferences", "Seminars"},

    a!boxLayout(
    label: "Pass Request Details",
    contents: {
    a!columnsLayout(
    columns: {
    a!columnLayout(
    contents: {
    /*a!textField(*/
    /*label: "Purpose",*/
    /*labelPosition: "ABOVE",*/
    /*placeholder: "Purpose of the Pass",*/
    /*value: ri!requestDetails.passPurpose,*/
    /*saveInto: ri!requestDetails.passPurpose,*/
    /*refreshAfter: "UNFOCUS",*/
    /*required: true,*/
    /*validations: if(*/
    /*len(trim(ri!requestDetails.passPurpose))<4,*/
    /*"Please enter the valid purpose details",*/
    /*null()*/
    /*),*/
    /*accessibilitytext: "Purpose of the OutPass Request"*/
    /*)*/

    a!pickerFieldCustom(
    label: "Purpose",
    placeholder: "Enter the first 2 letters of the purpose of the outpass",
    maxSelections: 1,
    suggestFunction: rule!pass_ucArrayPickerFilter(
    filter:_ ,
    labels: local!purposeLabels,
    identifiers: local!purposeAbbreviations
    ),
    selectedLabels: a!forEach(
    items: local!pickedPurpose,
    expression: expression: index(local!purposeLabels, wherecontains(fv!item, local!purposeAbbreviations))
    ),
    value: local!pickedPurpose,
    saveInto:
    {
    local!pickedPurpose,
    a!save(ri!requestDetails.passPurpose, local!pickedPurpose)
    }
    )

    }
    ),
    a!columnLayout(
    contents: {
    a!dateTimeField(
    label: "Date & Time (FROM)",
    labelPosition: "ABOVE",
    value: ri!requestDetails.passFromDate,
    saveInto: ri!requestDetails.passFromDate,
    required: true,
    validations: if(
    ri!requestDetails.passFromDate<today(),
    "Please select a Future Date & Time",
    if(
    and(
    not(isnull(ri!requestDetails.passFromDate)),
    not(isnull(ri!requestDetails.passToDate))
    ),
    if(
    round((ri!requestDetails.passToDate - ri!requestDetails.passFromDate), 2)<=0,
    "Please select different Date & Time for FROM Details",
    null()
    ),
    null()
    )
    )
    )
    }
    ),
    a!columnLayout(
    contents: {
    a!dateTimeField(
    label: "Date & Time (TO)",
    labelPosition: "ABOVE",
    value: ri!requestDetails.passToDate,
    saveInto: ri!requestDetails.passToDate,
    required: true,
    validations: if(
    ri!requestDetails.passToDate<today(),
    "Please select a Future Date & Time",
    if(
    and(
    not(isnull(ri!requestDetails.passFromDate)),
    not(isnull(ri!requestDetails.passToDate))
    ),
    if(
    round((ri!requestDetails.passToDate - ri!requestDetails.passFromDate), 2)<=0,
    "Please select different Date & Time for TO Details",
    null()
    ),
    null()
    )
    )

    )
    }
    )
    }
    )
    },
    style: "STANDARD",
    marginBelow: "STANDARD"
    )

    )

    }

  • 0
    Appian Employee
    in reply to Danny Verb

    There error you saw is a common error when an interface is missing a comma somewhere

  • 0
    Certified Senior Developer
    in reply to Danny Verb

    Ok. Got it & Corrected. Now it has been fixed. Thanks a lot for your help.

    My doubt is why it did not display this error in the interface itself?

  • 0
    Certified Senior Developer
    in reply to ponnuchamya7980

    Hi, Danny. I want to learn the Appian Development very well. Give me your suggestions in this regard. Actually I was a PHP developer. I have to work on Appian platform now. Any inputs from your end? Thanks a lot.

  • I recommend going to the Training tab in Community and taking multiple courses. It also helps to build simple applications in Appian to get comfortable using the platform.