【发布时间】:2019-11-22 10:49:53
【问题描述】:
我为 UiPath 开发了一些自定义活动,其中一些用于发送具有一些自定义行为的电子邮件(更改电子邮件的回复收件人,获取所有线程并重新发送...)
问题是,在我们遇到 Outlook 上的安全窗口之前,它没有任何问题,您应该按下“允许”以继续从中发送或接收电子邮件。
此弹出窗口实际上会阻止任何与电子邮件 Outlook 相关的活动(也来自 UiPath)。实际上,我们使用 UiPath 活动的并行活动对其进行了整理。
对于自定义活动,情况有所不同,因为 Interop 的 Send 方法会锁定 CPU/线程/任何东西,不允许并行活动完成其工作。
UiPath自定义activity应该继承或派生自CodeActivity,是同步的,所以我使用了AsyncCodeActivity的实现
protected override IAsyncResult BeginExecute(AsyncCodeActivityContext context, AsyncCallback callback, object state)
protected override void EndExecute(AsyncCodeActivityContext context, IAsyncResult result)
在 BeginExecute 我有我的 Send 方法,它仍然会阻塞进程。 是的,我已经破解了返回与流程本身无关的内容。
bool returnValue = 2 > 1;
Func<int, int, bool> func = (x, y) => x > y;
return func.BeginInvoke(2, 1, callback, state);
如您所见,我并没有真正使用异步或线程相关的编码。 那么,任何人都可以帮助我如何以异步方式发送电子邮件(来自 Outlook,而不是 SMTP 或任何相关的)?似乎 UiPath 活动正在这样做,我想复制。
非常感谢。
亲切的问候,
【问题讨论】:
-
如何让它成为一个单独的工作流并在执行主要工作流时从 Orchestrator 队列中调用?
-
你的意思是在同一台机器上运行 2 个机器人?这是可能的,但如果我没记错的话,我们的基础设施不允许。
-
可以,但不能同时运行。如果在这个过程中不是绝对必须在那个时候发送电子邮件,您也许可以在主机器人之后运行另一个邮件发送机器人?