PublishEvent

X will get the default implementation for PublishEvent().

The on execute hook for the PublishEvent in Y contains the following code:

#define CHECK_RET(retval, ...)
^		if retval <> 0 then
^			dal.set.error.message(…)
^			return(DALHOOKERROR)
^		endif

long	request		| PublishEvent request for business object X
long	retl				| return value to be checked
long	duml				| dummy variable (PublishEvent does not return an error value)

retl = replaceBdeNameInRequest(i.request, “X”, request)
CHECK_RET(retl, ...)
retl = exec_dll_function(“oppmmmbl001sb00”, “ppmmm.bl001sb00.PublishEvent”,
			duml, request, o.response, o.result)
| We must dynamically invoke this method, because Y is generated
| from the Business Studio before generating X, so a direct invocation
| of X from Y will not compile
| Note: PublishEvent never returns an error value (instead it publishes an error message if needed)
| so we only need to check whether the load and exec was successful
CHECK_RET(retl, ...)
duml = xmlDelete(request)
return(0) | OK

The implementation for Z is comparable to Y