I would drop a marker into /tmp then restart if the marker exists and Xvnc is not running.
classes:
"restart_xrdp_needed" expression => fileexists("/tmp/xrdp_needs_restart");
files:
"/my/xrdp.config"
copy_from => secure_cp("/repo/path/xrdp.config","$(sys.policy_hub)"),
classes => if_repaired("restart_xrdp_needed");
restart_xrdp_needed::
"/tmp/xrdp_needs_restart" create => "true";
"Xvnc" process_stop => "/usr/bin/false",
classes => if_notkept("xvnc_is_running");
!xvnc_is_running.restart_xrdp_needed::
"xrdp" signals => { "hup" };