功能很简单:1 个项目关联 N 个任务,当最后一个任务完成时,给项目经理发通知。
我是这么做的:
把触发器做在任务上,当其完成时,触发其项目的“检查并通知”子流程。
项目“检查并通知”流程的逻辑是,统计所有未完成的任务,数量为 0 就发出通知。
发现的问题是:
当最后一批的 N 个任务同时完成时,项目经理会收到 N 个通知。
问,怎么做才能使项目经理只收到 1 个通知?
功能很简单:1 个项目关联 N 个任务,当最后一个任务完成时,给项目经理发通知。
我是这么做的:
把触发器做在任务上,当其完成时,触发其项目的“检查并通知”子流程。
项目“检查并通知”流程的逻辑是,统计所有未完成的任务,数量为 0 就发出通知。
发现的问题是:
当最后一批的 N 个任务同时完成时,项目经理会收到 N 个通知。
问,怎么做才能使项目经理只收到 1 个通知?
我自己解决了,见:https://bbs.mingdao.net/topic/6089
你搞个中间表,插入一条已完成项目数据,然后中间表的新增设置为窜行,然后新增一条就更新一下对应项目的已完成任务数,如果相等才发通知
更新时不能串行好烦,非得要中间表并行
你搞个中间表,插入一条已完成项目数据,然后中间表的新增设置为窜行,然后新增一条就更新一下对应项目的已完成任务数,如果相等才发通知
2 个任务同时完成时,如何保证“已完成数”是 +2 而不是 +1 ?
关键核心是一样的,要能解决就都不是问题了。
这个我之前问过厂家,更新记录节点--增加好像还是比较稳的,我现在有个类似的功能:子记录占用资源 +1,主记录已占用资源 +1、可用资源-1,主记录的资源吃完后报警,也是这样实现的
项目里任务数,已完成数,子任务增加时,任务数 +1,每完成 1 个已完成数 +1,监听已完成数==任务数发通知
2 个任务同时完成时,如何保证“已完成数”是 +2 而不是 +1 ?
关键核心是一样的,要能解决就都不是问题了。
项目里任务数,已完成数,子任务增加时,任务数 +1,每完成 1 个已完成数 +1,监听已完成数==任务数发通知
Good,的确能解决问题。
但是把适用场景变少了,有时候任务变动不是手动的,而是通过其他工作流改的。
比如,该任务的质检报告被审核通过时,该任务自动完成。
这种是保证不了串行的。可以基于“新增记录”时的流程来串行执行了。 例如任务标记完成后,去提醒表下新增记录写入任务 ID, 在新增触发流程里更新项目 ID(如果项目 ID 在表里存在就跳过),然后检查项目下任务的完成情况进行通知。 可能还有其他细节需要注意。例如项目恢复未完成时要在提醒表里删除项目 ID。
任务的完成通过按钮流程实现:更新任务状态为完成 > 获取项目 > 获取项目下一条未完成的任务 > 无结果分支下进行通知。最后按钮触发的流程设置为串行即可。
Good,的确能解决问题。
但是把适用场景变少了,有时候任务变动不是手动的,而是通过其他工作流改的。
比如,该任务的质检报告被审核通过时,该任务自动完成。
任务的完成通过按钮流程实现:更新任务状态为完成 > 获取项目 > 获取项目下一条未完成的任务 > 无结果分支下进行通知。最后按钮触发的流程设置为串行即可。
你的通知在子流程,N 个任务就有 N 个通知。
通知在子流程外,那就是这整个项目完成(最后一个子任务完成),就只通知一个了
那触发器挂哪里?
挂在项目上的话,任务变动时要么触发不了,要么触发多次,怎么破。
你勾跑子流程结算 会返回主流程继续,这个通知就发一个了
(提示:调用封装必选执行完再进行下一流程才能取回输出参数)
你的通知在子流程,N 个任务就有 N 个通知。
通知在子流程外,那就是这整个项目完成(最后一个子任务完成),就只通知一个了
对,就是这个
你的通知在子流程,N 个任务就有 N 个通知。
通知在子流程外,那就是这整个项目完成(最后一个子任务完成),就只通知一个了