Help with Event is not getting created!

gemini17
Kilo Guru

I created the business rule in the developer program, training.   I lost the original Marketing Event application, so I had to start all over and created a similar M_Events application.

My script for the business rule is:

function onAfter(current, previous) {

  //This function will be automatically called when this rule is processed.

  //Add event when attendee inserted

  if(current.operation() == 'insert' && current.marketing_event.changes()) {

  gs.eventQueue('x_19025_m_events_a_attendee.added', current,

  current.marketing_event, current.email);

  }

  //Add event when marketing event changes

  if(current.operation() == 'update' && current.marketing_event.changes()) {

  gs.eventQueue('x_19025_m_events_a_attendee.deleted', previous,

  previous.marketing_event, previous.email);

  gs.eventQueue('x_19025_m_events_a_attendee.added', current,

  current.marketing_event, current.email);

  }

  //Add event when attendee deleted

  if(current.operation() == 'delete') {

  gs.eventQueue('x_19025_m_events_a_attendee.deleted', current,

  current.marketing_event, current.email);

  }

}

when I try to add attendees< I get error:

Access to event 'x_19025_m_events_a_attendee.added' from scope 'M_Events_Application' has been refused. The event is not defined.

Any help is appreciated.

Kind regards

Danny Raj

15 REPLIES 15

Hey Corey:



Thanks for taking the time, to explain.



Kind regards


Danny Raj


Hello,



I have the same issue in the developer program in this part of events.



My issue is that when I search for my events in the event log, I don't see the names that i was should suppose to see.


My business rule is like this:



function onAfter(current, previous) {


    //This function will be automatically called when this rule is processed.


  //Add event when attendee inserted


  if(current.operation() == 'insert' && current.marketing_event.changes()) {


  gs.eventQueue('x_66095_marketing,attendee.added', current,


current.marketing_event, current.email);


  }


  //Add event when marketing event changes


  if(current.operation() == 'update' && current.marketing_event.changes()) {


  gs.eventQueue('x_66095_marketing,attendee.deleted', previous,


previous.marketing_event, previous.email);


  gs.eventQueue('x_66095_marketing,attendee.added', current,


current.marketing_event, current.email);


  }


  //Add event when attendee deleted


  if(current.operation() == 'delete') {


  gs.eventQueue('x_66095_marketing,attendee.deleted', current,


                          current.marketing_event, current.email);


}


}



My table name is:     x_66095_marketing_attendee




and my script action is:


(function addAttendees() {


  //Get marketing event from event


  var id= current.marketing_event;


  var mrkevent = new GlideRecord('x_66095_marketing_marketing_event');


  mrkevent.get(event.parm1);


  //Count attendees for marketing event


  var numOfAttendees = 0;


  var attendees = new GlideAggregate('x_66095_marketing_attendee');


  attendees.addQuery('marketing_event',event.parm1);


  attendees.addAggregate('COUNT');


  attendees.query();


  if(attendees.next())


  numOfAttendees = attendees.getAggregate('COUNT');



  //Set attendees registered field


  mrkevent.number_of_attendees_expected = numOfAttendees;


  mrkevent.update();


}());



I also registered the events in the event registry as;   suffix: attendee.added


and event name : x_66095_marketing.attendee.added



what is wrong in my code that I dont see the proper funcionality? please help


because if I look in the event log for


  1. Add the following filter row. [Name] [starts with] [x_].       I do not get any result like my events are not getting created.

All of your events have a comma in them:



gs.eventQueue('x_66095_marketing--->,<---attendee.deleted', previous,


previous.marketing_event, previous.email);



Is your event registered like that?


Hello Mike,



I updated the comma for dot :


function onAfter(current, previous) {


    //This function will be automatically called when this rule is processed.


  //Add event when attendee inserted


  if(current.operation() == 'insert' && current.marketing_event.changes()) {


  gs.eventQueue('x_66095_marketing.attendee.added', current,


current.marketing_event, current.email);


  }


  //Add event when marketing event changes


  if(current.operation() == 'update' && current.marketing_event.changes()) {


  gs.eventQueue('x_66095_marketing.attendee.deleted', previous,


previous.marketing_event, previous.email);


  gs.eventQueue('x_66095_marketing.attendee.added', current,


current.marketing_event, current.email);


  }


  //Add event when attendee deleted


  if(current.operation() == 'delete') {


  gs.eventQueue('x_66095_marketing.attendee.deleted', current,


                          current.marketing_event, current.email);


}



but still is not working... is not doing my script action:


(function addAttendees() {


  //Get marketing event from event


  var id= current.marketing_event;


  var mrkevent = new GlideRecord('x_66095_marketing_marketing_event');


  mrkevent.get(event.parm1);


  //Count attendees for marketing event


  var numOfAttendees = 0;


  var attendees = new GlideAggregate('x_66095_marketing_attendee');


  attendees.addQuery('marketing_event',event.parm1);


  attendees.addAggregate('COUNT');


  attendees.query();


  if(attendees.next())


  numOfAttendees = attendees.getAggregate('COUNT');



  //Set attendees registered field


  mrkevent.number_of_attendees_expected = numOfAttendees;


  mrkevent.update();


}());



it supposed to update the numOfAttendees field every time I add a new record because of my business rule... but is not working


also when I search in the event log for events starting with x_   there not records...


Are the events making it into the event log?