a!localVariables( local!refreshVar:1, local!loggedInUser: loggedInUser(), local!now: now(), local!isLevelOneApproval: /*if(a!isUserMemberOfGroup( username: local!loggedInUser, groups: cons!AMS_DG_GP_ADMINISTRATORS, ),true(),false()),*/ false(), local!departmentId: if( a!isUserMemberOfGroup( username: local!loggedInUser, groups: { cons!AMS_DG_GP_SURGICAL_DEPARTMENT, cons!AMS_DG_GP_GENERAL_DEPARTMENT }, matchAllGroups: true() ), { cons!AMS_DG_DB_DEPARTMENT_ID[1], cons!AMS_DG_DB_DEPARTMENT_ID[2] }, if( a!isUserMemberOfGroup( username: local!loggedInUser, groups: cons!AMS_DG_GP_SURGICAL_DEPARTMENT, ), cons!AMS_DG_DB_DEPARTMENT_ID[1], cons!AMS_DG_DB_DEPARTMENT_ID[2] ) ), local!appointmentInfo: a!refreshVariable( value: if( or(local!isLevelOneApproval), rule!AMS_DG_GetAppointmentInfo( isDS: false, fields: { { 'recordType!{5746f330-8c31-4ea7-9807-cbbd2fd557eb}AMS_DG Appointment', 'recordType!{5746f330-8c31-4ea7-9807-cbbd2fd557eb}AMS_DG Appointment.relationships.{960b6dcd-9533-4ba9-b203-341ccc7e3abe}doctor.fields.{191b8c9e-b56e-4953-9bb3-cfb4f097a858}doctorName', } }, statusIdArray: { cons!AMS_DG_DB_STATUS_ID[1], cons!AMS_DG_DB_STATUS_ID[8] } ), rule!AMS_DG_GetAppointmentInfo( isDS: false, fields: { 'recordType!{5746f330-8c31-4ea7-9807-cbbd2fd557eb}AMS_DG Appointment', 'recordType!{5746f330-8c31-4ea7-9807-cbbd2fd557eb}AMS_DG Appointment.relationships.{960b6dcd-9533-4ba9-b203-341ccc7e3abe}doctor.fields.{191b8c9e-b56e-4953-9bb3-cfb4f097a858}doctorName' }, statusIdArray: cons!AMS_DG_DB_STATUS_ID[2], deptIdArray: local!departmentId ) ), refreshOnVarChange: local!refreshVar), local!approvedOrRejectedAppointments, a!formLayout( label: "Approve Appointments", contents: { { a!gridLayout( label: "Pending for approval", labelPosition: cons!AMS_DG_LABEL_POSITION[1], headerCells: { a!gridLayoutHeaderCell(label: "Appointment Id"), a!gridLayoutHeaderCell(label: "Patient Name"), a!gridLayoutHeaderCell(label: "Gender"), a!gridLayoutHeaderCell(label: "Age"), a!gridLayoutHeaderCell(label: "Doctor Name"), a!gridLayoutHeaderCell(label: "Appointment Date"), a!gridLayoutHeaderCell(label: "Session"), a!gridLayoutHeaderCell(label: "Created On"), a!gridLayoutHeaderCell(label: "Total appointments",showWhen: not(or(local!isLevelOneApproval))), a!gridLayoutHeaderCell(label: ""), a!gridLayoutHeaderCell(label: "Comment") }, columnConfigs: { a!gridLayoutColumnConfig(width: "DISTRIBUTE") }, rows: { a!forEach( items: local!appointmentInfo, expression: a!gridRowLayout( contents: { a!integerField( value: index( fv!item, 'recordType!{5746f330-8c31-4ea7-9807-cbbd2fd557eb}AMS_DG Appointment.fields.{274539be-ac91-4f4c-95ed-69bd50175dae}appointmentId', null ), readOnly: true() ), a!textField( value: index( fv!item, 'recordType!{5746f330-8c31-4ea7-9807-cbbd2fd557eb}AMS_DG Appointment.fields.{ebbdfb59-46f0-4749-95d2-4ae5866a0b43}patientName', null ), readOnly: true() ), a!textField( value: index( fv!item, 'recordType!{5746f330-8c31-4ea7-9807-cbbd2fd557eb}AMS_DG Appointment.fields.{6467d9c9-119e-43b6-834f-4ae90ff83f2e}patientGender', null ), readOnly: true() ), a!integerField( value: index( fv!item, 'recordType!{5746f330-8c31-4ea7-9807-cbbd2fd557eb}AMS_DG Appointment.fields.{0f20356b-2a82-464a-b422-aa713158404b}patientAge', null ), readOnly: true() ), a!textField( value: index( fv!item, 'recordType!{5746f330-8c31-4ea7-9807-cbbd2fd557eb}AMS_DG Appointment.relationships.{960b6dcd-9533-4ba9-b203-341ccc7e3abe}doctor.fields.{191b8c9e-b56e-4953-9bb3-cfb4f097a858}doctorName', null ), readOnly: true() ), a!dateField( value: index( fv!item, 'recordType!{5746f330-8c31-4ea7-9807-cbbd2fd557eb}AMS_DG Appointment.fields.{5026132f-9111-432f-bd37-6df4c30723f4}appointmentDate', null ), readOnly: true() ), a!textField( value: index( fv!item, 'recordType!{5746f330-8c31-4ea7-9807-cbbd2fd557eb}AMS_DG Appointment.fields.{0097e5d1-71d8-4930-bf32-7f36dbcdfa4a}session', null ), readOnly: true() ), a!dateField( value: index( fv!item, 'recordType!{5746f330-8c31-4ea7-9807-cbbd2fd557eb}AMS_DG Appointment.fields.{19a1f573-e088-4dd7-bc12-285695cf99c0}createdOn', null ), readOnly: true() ), a!textField( showWhen: not(or(local!isLevelOneApproval)), helpTooltip: "Total number of appointment already exist for perticular day, doctor and session", value: rule!AMS_DG_GetAppointmentInfo( isDS: true(), statusIdArray: cons!AMS_DG_DB_STATUS_ID[3], deptIdArray: local!departmentId, sessionArray: index(fv!item,'recordType!{5746f330-8c31-4ea7-9807-cbbd2fd557eb}AMS_DG Appointment.fields.{0097e5d1-71d8-4930-bf32-7f36dbcdfa4a}session',null), doctorIdArray: index(fv!item,'recordType!{5746f330-8c31-4ea7-9807-cbbd2fd557eb}AMS_DG Appointment.fields.{09414ca6-3f27-44c9-8aa8-b2316ed8319c}doctorId',null), appointmentDate: index(fv!item,'recordType!{5746f330-8c31-4ea7-9807-cbbd2fd557eb}AMS_DG Appointment.fields.{5026132f-9111-432f-bd37-6df4c30723f4}appointmentDate',null) ).totalCount, readOnly: true() ), a!radioButtonField( choiceLabels: cons!AMS_DG_CHOICE_LABEL, choiceValues: if(or(local!isLevelOneApproval), { 2, 4 }, { 3, 4 }), value: if( or( contains( { cons!AMS_DG_DB_STATUS_ID[1], cons!AMS_DG_DB_STATUS_ID[8] }, fv!item['recordType!{5746f330-8c31-4ea7-9807-cbbd2fd557eb}AMS_DG Appointment.fields.{b78dde74-0103-4f5c-9980-6c1cc18db8a2}statusId'] ), and( { cons!AMS_DG_DB_STATUS_ID[2] = fv!item['recordType!{5746f330-8c31-4ea7-9807-cbbd2fd557eb}AMS_DG Appointment.fields.{b78dde74-0103-4f5c-9980-6c1cc18db8a2}statusId'] }, not(or(local!isLevelOneApproval)) ) ), {}, index( fv!item, 'recordType!{5746f330-8c31-4ea7-9807-cbbd2fd557eb}AMS_DG Appointment.fields.{b78dde74-0103-4f5c-9980-6c1cc18db8a2}statusId', null ) ), saveInto: { fv!item['recordType!{5746f330-8c31-4ea7-9807-cbbd2fd557eb}AMS_DG Appointment.fields.{b78dde74-0103-4f5c-9980-6c1cc18db8a2}statusId'], a!save(fv!item,remove(fv!item,'recordType!{5746f330-8c31-4ea7-9807-cbbd2fd557eb}AMS_DG Appointment.relationships.{e99aa21c-4dbe-4cb9-943d-e453d2021ea6}comment')) } ), a!textField( value: index(fv!item,'recordType!{5746f330-8c31-4ea7-9807-cbbd2fd557eb}AMS_DG Appointment.relationships.{e99aa21c-4dbe-4cb9-943d-e453d2021ea6}comment.fields.{a8163266-6e90-4df8-b1bf-f5cf7c1a8d01}comment',null), required: or(index(fv!item,'recordType!{5746f330-8c31-4ea7-9807-cbbd2fd557eb}AMS_DG Appointment.fields.{b78dde74-0103-4f5c-9980-6c1cc18db8a2}statusId',null)=cons!AMS_DG_DB_STATUS_ID[4]), disabled: or(index(fv!item,'recordType!{5746f330-8c31-4ea7-9807-cbbd2fd557eb}AMS_DG Appointment.fields.{b78dde74-0103-4f5c-9980-6c1cc18db8a2}statusId',null)<>cons!AMS_DG_DB_STATUS_ID[4]), saveInto: { fv!item['recordType!{5746f330-8c31-4ea7-9807-cbbd2fd557eb}AMS_DG Appointment.relationships.{e99aa21c-4dbe-4cb9-943d-e453d2021ea6}comment.fields.{a8163266-6e90-4df8-b1bf-f5cf7c1a8d01}comment'], a!save(fv!item['recordType!{5746f330-8c31-4ea7-9807-cbbd2fd557eb}AMS_DG Appointment.relationships.{e99aa21c-4dbe-4cb9-943d-e453d2021ea6}comment.fields.{651fe152-a76b-40cd-9799-459ad44bc666}commentedBy'],local!loggedInUser), a!save(fv!item['recordType!{5746f330-8c31-4ea7-9807-cbbd2fd557eb}AMS_DG Appointment.relationships.{e99aa21c-4dbe-4cb9-943d-e453d2021ea6}comment.fields.{d4431660-082a-4388-90d0-46ce685714d8}commentedOn'],local!now) } ) } ) ) }, selectionSaveInto: {}, validations: {}, shadeAlternateRows: true ) } }, buttons: a!buttonLayout( primaryButtons: { a!buttonWidget( label: "Submit", value: true, saveInto: { a!save( local!approvedOrRejectedAppointments, ( remove( local!appointmentInfo, wherecontains( 1, local!appointmentInfo['recordType!{5746f330-8c31-4ea7-9807-cbbd2fd557eb}AMS_DG Appointment.fields.{b78dde74-0103-4f5c-9980-6c1cc18db8a2}statusId'] ) ) ) ), a!startProcess( processModel: cons!AMS_DG_PM_APPROVE, processParameters: { approvedOrRejectedAppointments: local!approvedOrRejectedAppointments, loggedInUser: local!loggedInUser, now: local!now, approvedId: if( or(local!isLevelOneApproval), cons!AMS_DG_DB_STATUS_ID[2], cons!AMS_DG_DB_STATUS_ID[3] ) } ), a!save(local!refreshVar,mod(local!refreshVar+1,2)) }, submit: true, style: cons!AMS_DG_SUBMIT_STYLE[1], loadingIndicator: true ) }, secondaryButtons: { a!buttonWidget( label: "Cancel", value: true, saveInto: {}, submit: true, style: cons!AMS_DG_CANCEL_STYLE[1], validate: false ) } ) ) )
I am working on editable grid. Grid shows multiple rows, user can select any row using radio button as ( approved, reject ). After that approved rows goes in DB and make status as approved while rejected rows goes in DB and make status as rejected. After clicking on submit button this scenario takes place for that I have used a!startProcessModel. The requirement is after clicking on submit button fresh data should come from DB. I have also used refreshAfterOnVarChange but approved rows doesn't filter out.
Any help will be appriciated.
Discussion posts and replies are publicly visible
Check the following conditions met.
1.Activity chaining till Write records node
2.refresh condition on local variable.
I checked your code ,you are trying to save local!refreshvar on button click itself and you used it in refresh condition. Save it onSuccess of startprocess
I would check Activity chaining and also the make use of onSuccess as Venky has mentioned. Also as a precautionary you can make the grid as readOnly when the submit button is clicked and display a button to force refresh as well as a fail safe.
Hello dilipg9160 While implementing Smart service follows activity-chaining, completing only when the activity chain is complete or broken. The smart service then returns the process variables as of the completion of activity chaining through the processInfo.pv output.In your case you might be missing chaining till WriteToDataStore entity node.
I have used the activity chaining and modified the code as suggested. But still not working
a!localVariables( local!refreshVar:1, local!loggedInUser: loggedInUser(), local!now: now(), local!isLevelOneApproval: a!isUserMemberOfGroup( username: local!loggedInUser, groups: cons!AMS_DG_GP_ADMINISTRATORS, ), local!departmentId: if( a!isUserMemberOfGroup( username: local!loggedInUser, groups: { cons!AMS_DG_GP_SURGICAL_DEPARTMENT, cons!AMS_DG_GP_GENERAL_DEPARTMENT }, matchAllGroups: true() ), { cons!AMS_DG_DB_DEPARTMENT_ID[1], cons!AMS_DG_DB_DEPARTMENT_ID[2] }, if( a!isUserMemberOfGroup( username: local!loggedInUser, groups: cons!AMS_DG_GP_SURGICAL_DEPARTMENT, ), cons!AMS_DG_DB_DEPARTMENT_ID[1], cons!AMS_DG_DB_DEPARTMENT_ID[2] ) ), local!appointmentInfo: a!refreshVariable( value: if( or(local!isLevelOneApproval), rule!AMS_DG_GetAppointmentInfo( isDS: false, fields: { { 'recordType!{5746f330-8c31-4ea7-9807-cbbd2fd557eb}AMS_DG Appointment', 'recordType!{5746f330-8c31-4ea7-9807-cbbd2fd557eb}AMS_DG Appointment.relationships.{960b6dcd-9533-4ba9-b203-341ccc7e3abe}doctor.fields.{191b8c9e-b56e-4953-9bb3-cfb4f097a858}doctorName', } }, statusIdArray: { cons!AMS_DG_DB_STATUS_ID[1], cons!AMS_DG_DB_STATUS_ID[8] } ), rule!AMS_DG_GetAppointmentInfo( isDS: false, fields: { 'recordType!{5746f330-8c31-4ea7-9807-cbbd2fd557eb}AMS_DG Appointment', 'recordType!{5746f330-8c31-4ea7-9807-cbbd2fd557eb}AMS_DG Appointment.relationships.{960b6dcd-9533-4ba9-b203-341ccc7e3abe}doctor.fields.{191b8c9e-b56e-4953-9bb3-cfb4f097a858}doctorName' }, statusIdArray: cons!AMS_DG_DB_STATUS_ID[2], deptIdArray: local!departmentId ) ), refreshOnVarChange: local!refreshVar), local!approvedOrRejectedAppointments, a!formLayout( label: "Approve Appointments", contents: { { a!gridLayout( label: "Pending for approval", labelPosition: cons!AMS_DG_LABEL_POSITION[1], headerCells: { a!gridLayoutHeaderCell(label: "Appointment Id"), a!gridLayoutHeaderCell(label: "Patient Name"), a!gridLayoutHeaderCell(label: "Gender"), a!gridLayoutHeaderCell(label: "Age"), a!gridLayoutHeaderCell(label: "Doctor Name"), a!gridLayoutHeaderCell(label: "Appointment Date"), a!gridLayoutHeaderCell(label: "Session"), a!gridLayoutHeaderCell(label: "Created On"), a!gridLayoutHeaderCell(label: "Total appointments",showWhen: not(or(local!isLevelOneApproval))), a!gridLayoutHeaderCell(label: ""), a!gridLayoutHeaderCell(label: "Comment") }, columnConfigs: { a!gridLayoutColumnConfig(width: "DISTRIBUTE") }, rows: { a!forEach( items: local!appointmentInfo, expression: a!gridRowLayout( contents: { a!integerField( value: index( fv!item, 'recordType!{5746f330-8c31-4ea7-9807-cbbd2fd557eb}AMS_DG Appointment.fields.{274539be-ac91-4f4c-95ed-69bd50175dae}appointmentId', null ), readOnly: true() ), a!textField( value: index( fv!item, 'recordType!{5746f330-8c31-4ea7-9807-cbbd2fd557eb}AMS_DG Appointment.fields.{ebbdfb59-46f0-4749-95d2-4ae5866a0b43}patientName', null ), readOnly: true() ), a!textField( value: index( fv!item, 'recordType!{5746f330-8c31-4ea7-9807-cbbd2fd557eb}AMS_DG Appointment.fields.{6467d9c9-119e-43b6-834f-4ae90ff83f2e}patientGender', null ), readOnly: true() ), a!integerField( value: index( fv!item, 'recordType!{5746f330-8c31-4ea7-9807-cbbd2fd557eb}AMS_DG Appointment.fields.{0f20356b-2a82-464a-b422-aa713158404b}patientAge', null ), readOnly: true() ), a!textField( value: index( fv!item, 'recordType!{5746f330-8c31-4ea7-9807-cbbd2fd557eb}AMS_DG Appointment.relationships.{960b6dcd-9533-4ba9-b203-341ccc7e3abe}doctor.fields.{191b8c9e-b56e-4953-9bb3-cfb4f097a858}doctorName', null ), readOnly: true() ), a!dateField( value: index( fv!item, 'recordType!{5746f330-8c31-4ea7-9807-cbbd2fd557eb}AMS_DG Appointment.fields.{5026132f-9111-432f-bd37-6df4c30723f4}appointmentDate', null ), readOnly: true() ), a!textField( value: index( fv!item, 'recordType!{5746f330-8c31-4ea7-9807-cbbd2fd557eb}AMS_DG Appointment.fields.{0097e5d1-71d8-4930-bf32-7f36dbcdfa4a}session', null ), readOnly: true() ), a!dateField( value: index( fv!item, 'recordType!{5746f330-8c31-4ea7-9807-cbbd2fd557eb}AMS_DG Appointment.fields.{19a1f573-e088-4dd7-bc12-285695cf99c0}createdOn', null ), readOnly: true() ), a!textField( showWhen: not(or(local!isLevelOneApproval)), helpTooltip: "Total number of appointment already exist for perticular day, doctor and session", value: rule!AMS_DG_GetAppointmentInfo( isDS: true(), statusIdArray: cons!AMS_DG_DB_STATUS_ID[3], deptIdArray: local!departmentId, sessionArray: index(fv!item,'recordType!{5746f330-8c31-4ea7-9807-cbbd2fd557eb}AMS_DG Appointment.fields.{0097e5d1-71d8-4930-bf32-7f36dbcdfa4a}session',null), doctorIdArray: index(fv!item,'recordType!{5746f330-8c31-4ea7-9807-cbbd2fd557eb}AMS_DG Appointment.fields.{09414ca6-3f27-44c9-8aa8-b2316ed8319c}doctorId',null), appointmentDate: index(fv!item,'recordType!{5746f330-8c31-4ea7-9807-cbbd2fd557eb}AMS_DG Appointment.fields.{5026132f-9111-432f-bd37-6df4c30723f4}appointmentDate',null) ).totalCount, readOnly: true() ), a!radioButtonField( choiceLabels: cons!AMS_DG_CHOICE_LABEL, choiceValues: if(or(local!isLevelOneApproval), { 2, 4 }, { 3, 4 }), value: if( or( contains( { cons!AMS_DG_DB_STATUS_ID[1], cons!AMS_DG_DB_STATUS_ID[8] }, fv!item['recordType!{5746f330-8c31-4ea7-9807-cbbd2fd557eb}AMS_DG Appointment.fields.{b78dde74-0103-4f5c-9980-6c1cc18db8a2}statusId'] ), and( { cons!AMS_DG_DB_STATUS_ID[2] = fv!item['recordType!{5746f330-8c31-4ea7-9807-cbbd2fd557eb}AMS_DG Appointment.fields.{b78dde74-0103-4f5c-9980-6c1cc18db8a2}statusId'] }, not(or(local!isLevelOneApproval)) ) ), {}, index( fv!item, 'recordType!{5746f330-8c31-4ea7-9807-cbbd2fd557eb}AMS_DG Appointment.fields.{b78dde74-0103-4f5c-9980-6c1cc18db8a2}statusId', null ) ), saveInto: { fv!item['recordType!{5746f330-8c31-4ea7-9807-cbbd2fd557eb}AMS_DG Appointment.fields.{b78dde74-0103-4f5c-9980-6c1cc18db8a2}statusId'], a!save(fv!item,remove(fv!item,'recordType!{5746f330-8c31-4ea7-9807-cbbd2fd557eb}AMS_DG Appointment.relationships.{e99aa21c-4dbe-4cb9-943d-e453d2021ea6}comment')) } ), a!textField( value: index(fv!item,'recordType!{5746f330-8c31-4ea7-9807-cbbd2fd557eb}AMS_DG Appointment.relationships.{e99aa21c-4dbe-4cb9-943d-e453d2021ea6}comment.fields.{a8163266-6e90-4df8-b1bf-f5cf7c1a8d01}comment',null), required: or(index(fv!item,'recordType!{5746f330-8c31-4ea7-9807-cbbd2fd557eb}AMS_DG Appointment.fields.{b78dde74-0103-4f5c-9980-6c1cc18db8a2}statusId',null)=cons!AMS_DG_DB_STATUS_ID[4]), disabled: or(index(fv!item,'recordType!{5746f330-8c31-4ea7-9807-cbbd2fd557eb}AMS_DG Appointment.fields.{b78dde74-0103-4f5c-9980-6c1cc18db8a2}statusId',null)<>cons!AMS_DG_DB_STATUS_ID[4]), saveInto: { fv!item['recordType!{5746f330-8c31-4ea7-9807-cbbd2fd557eb}AMS_DG Appointment.relationships.{e99aa21c-4dbe-4cb9-943d-e453d2021ea6}comment.fields.{a8163266-6e90-4df8-b1bf-f5cf7c1a8d01}comment'], a!save(fv!item['recordType!{5746f330-8c31-4ea7-9807-cbbd2fd557eb}AMS_DG Appointment.relationships.{e99aa21c-4dbe-4cb9-943d-e453d2021ea6}comment.fields.{651fe152-a76b-40cd-9799-459ad44bc666}commentedBy'],local!loggedInUser), a!save(fv!item['recordType!{5746f330-8c31-4ea7-9807-cbbd2fd557eb}AMS_DG Appointment.relationships.{e99aa21c-4dbe-4cb9-943d-e453d2021ea6}comment.fields.{d4431660-082a-4388-90d0-46ce685714d8}commentedOn'],local!now) } ) } ) ) }, selectionSaveInto: {}, validations: {}, shadeAlternateRows: true ) } }, buttons: a!buttonLayout( primaryButtons: { a!buttonWidget( label: "Submit", value: true, saveInto: { a!save( local!approvedOrRejectedAppointments, ( remove( local!appointmentInfo, wherecontains( 1, local!appointmentInfo['recordType!{5746f330-8c31-4ea7-9807-cbbd2fd557eb}AMS_DG Appointment.fields.{b78dde74-0103-4f5c-9980-6c1cc18db8a2}statusId'] ) ) ) ), a!startProcess( processModel: cons!AMS_DG_PM_APPROVE, processParameters: { approvedOrRejectedAppointments: local!approvedOrRejectedAppointments, loggedInUser: local!loggedInUser, now: local!now, approvedId: if( or(local!isLevelOneApproval), cons!AMS_DG_DB_STATUS_ID[2], cons!AMS_DG_DB_STATUS_ID[3] ) }, onSuccess: a!save(local!refreshVar,mod(local!refreshVar+1,2)) ), }, submit: true, style: cons!AMS_DG_SUBMIT_STYLE[1], loadingIndicator: true ) }, secondaryButtons: { a!buttonWidget( label: "Cancel", value: true, saveInto: {}, submit: true, style: cons!AMS_DG_CANCEL_STYLE[1], validate: false ) } ) ) )
I have used activity chaining and updated code as mentioned.
But still not working