2020-09-20 19:17发布
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
嗨,
是否可以使作业的Out参数上的过程警报源匹配? 我有一份工作将输出参数设置为后期操作(使用Java),并且我希望过程警报源在该输出参数为某些值时触发,但是当我尝试执行此操作时,似乎看不到 输出参数的值。 似乎只在参数的输入值上触发。
这是预期的吗? 是否有一种方法可以强制从"警报源"实际看到的"后操作"中设置输出参数?
谢谢!
如果我理解得很清楚,那么您可以发出警报,但是它的输出参数应该是某些操作的特定值。
如果确实发出警报,则可以创建"电子邮件警报网关操作预发送"(随后是警报升级),然后覆盖或检查"操作">"通过警报网关预发送"中的值。 甚至您都可以删除不符合要求的警报对象,然后再发送实际警报。
此致
Abhishek
感谢您的回复!
我要完成的工作是仅在关联的作业已生成假脱机时才发送警报。 如果没有生成假脱机,我希望不发送警报。
我尝试的工作是为作业本身创建一个新的Out类型参数,称为" SEND_EMAIL",可以在该作业的"后运行"操作中将其设置为true或false。 然后,我尝试对参数SEND_EMAIL =" true"进行匹配,但似乎没有考虑" Out"参数的值,并且当参数为" true"时也不会发送电子邮件。
那么您的建议是从网关的"发送前"操作中删除警报本身吗?
似乎顺序是:
如果(作业的jcsEmailAlertGatewayPreSendActionContext.getAlert()。getAlertSource()。getSourceObject()实例)
如果是"工作",则将其投放到工作:
工作alertJob = jcsEmailAlertGatewayPreSendActionContext.getAlert()。getAlertSource()。getSourceObject();
然后获取SEND_EMAIL参数:
JobParameter jp = alertJob.getJobParameterByName(" SEND_EMAIL");
,如果它不为null,则检查该值是否为true,否则为
jcsEmailAlertGatewayPreSendActionContext.setSend(false)可以解决这个问题吗?
我不确定该方法的名称,我的API文档虽然有点旧,但是带有" sendSend(boolean send)",但可能只是一个错字。
还是实际上有必要致电:
jcsEmailAlertGatewayPreSendActionContext.getAlert()。deleteObject()?
我将尝试其中的一些方法,看看是否可以使它工作。 再次感谢!
好,不要让任何人都无法解决...
实际方法是" setSend(boolean send)" ..." sendSend(boolean send)"不存在。
这是一个可行的解决方案。 这会检查是否有任何名为* spool *的附件,如果存在,则会发送电子邮件。
编辑后添加:您也可以在网关中进行所有操作,但是我希望由作业创建者来决定该作业是否在不假脱机的情况下禁止发送电子邮件。 这样,可以将代码添加到所有网关,然后仅要抑制电子邮件的作业可以添加该代码块。
以下是作业的代码(要求流程定义具有Out参数SEND_EMAIL):
{ JobParameter jp = jcsJob.getJobParameterByName(" SEND_EMAIL"); 如果(jp == null)抛出新的RuntimeException("无法指定作业参数"); 迭代器= jcsJob.getJobFiles(); while(it.hasNext()){ JobFile jf =(JobFile)it.next(); jcsOut.println("作业文件:" + jf.getName()); 如果(jf.getName()。contains(" spool")){ jcsOut.println("找到假脱机。将SEND_EMAIL设置为true。"); jp.setOutValueString(" true"); 返回; } } jcsOut.println("找不到假脱机。"); jp.setOutValueString(" false"); }
这是网关的代码:
{ 如果(!(jcsEmailAlertGatewayPreSendActionContext.getAlert()。getSourceObject()Job的实例))返回; JobParameter jp =((Job)jcsEmailAlertGatewayPreSendActionContext.getAlert()。getSourceObject())。getJobParameterByName(" SEND_EMAIL"); 如果(jp == null)返回; 字符串sendEmail = jp.getOutValueString(); 如果(sendEmail == null)返回; 如果(sendEmail.equals(" false")){ jcsEmailAlertGatewayPreSendActionContext.setSend(false); jcsEmailAlertGatewayPreSendActionContext.getAlert()。getOperatorMessage()。deleteObject(); jcsEmailAlertGatewayPreSendActionContext.getAlert()。deleteObject(); } }
最多设置5个标签!
如果我理解得很清楚,那么您可以发出警报,但是它的输出参数应该是某些操作的特定值。
如果确实发出警报,则可以创建"电子邮件警报网关操作预发送"(随后是警报升级),然后覆盖或检查"操作">"通过警报网关预发送"中的值。 甚至您都可以删除不符合要求的警报对象,然后再发送实际警报。
此致
Abhishek
感谢您的回复!
我要完成的工作是仅在关联的作业已生成假脱机时才发送警报。 如果没有生成假脱机,我希望不发送警报。
我尝试的工作是为作业本身创建一个新的Out类型参数,称为" SEND_EMAIL",可以在该作业的"后运行"操作中将其设置为true或false。 然后,我尝试对参数SEND_EMAIL =" true"进行匹配,但似乎没有考虑" Out"参数的值,并且当参数为" true"时也不会发送电子邮件。
那么您的建议是从网关的"发送前"操作中删除警报本身吗?
似乎顺序是:
如果(作业的jcsEmailAlertGatewayPreSendActionContext.getAlert()。getAlertSource()。getSourceObject()实例)
如果是"工作",则将其投放到工作:
工作alertJob = jcsEmailAlertGatewayPreSendActionContext.getAlert()。getAlertSource()。getSourceObject();
然后获取SEND_EMAIL参数:
JobParameter jp = alertJob.getJobParameterByName(" SEND_EMAIL");
,如果它不为null,则检查该值是否为true,否则为
jcsEmailAlertGatewayPreSendActionContext.setSend(false)可以解决这个问题吗?
我不确定该方法的名称,我的API文档虽然有点旧,但是带有" sendSend(boolean send)",但可能只是一个错字。
还是实际上有必要致电:
jcsEmailAlertGatewayPreSendActionContext.getAlert()。deleteObject()?
我将尝试其中的一些方法,看看是否可以使它工作。 再次感谢!
好,不要让任何人都无法解决...
实际方法是" setSend(boolean send)" ..." sendSend(boolean send)"不存在。
这是一个可行的解决方案。 这会检查是否有任何名为* spool *的附件,如果存在,则会发送电子邮件。
编辑后添加:您也可以在网关中进行所有操作,但是我希望由作业创建者来决定该作业是否在不假脱机的情况下禁止发送电子邮件。 这样,可以将代码添加到所有网关,然后仅要抑制电子邮件的作业可以添加该代码块。
以下是作业的代码(要求流程定义具有Out参数SEND_EMAIL):
这是网关的代码:
一周热门 更多>