我正在研究Hybris中的WorkFlow。我创建了带有各自工作流程操作和决策的工作流程模板。如果我正在使用adminCockpit并执行操作。然后我的workFlow工作正常。

但是我现在想通过HMC执行相应的操作。假设将Action1分配给用户A。现在,用户A将通过HMC登录并检查其收件箱。他还可以从那里接受或拒绝工作流操作。

通过HMC执行工作流操作时,出现此错误:

de.hybris.platform.workflow.jalo.AutomatedWorkflowActionException: Incorrect type defined for automated workflow. containerCreationJob should implement de.hybris.platform.workflow.jalo.AutomatedWorkflowTemplateJob[HY--1]


代码:

import de.hybris.platform.workflow.jobs.AutomatedWorkflowTemplateJob;
public class AbstractOrderCreationJob implements AutomatedWorkflowTemplateJob
{
        // some code
}


任何人都可以深入研究此错误。请帮助我解决这个问题。

最佳答案

我也面临同样的问题。实际上,每当您通过admincockpit执行操作时,它都会带有相应的de.hybris.platform.workflow.jobs.AutomatedWorkflowTemplateJob动作的perform(final WorkflowActionModel action)界面。

如果您尝试通过HMC执行相同的任务,则它将看起来已弃用de.hybris.platform.workflow.jalo.AutomatedWorkflowTemplateJob界面。因此,对于HMC,您必须实现不推荐使用的AutomatedWorkflowTemplateJob。并且已弃用的接口要求WorkflowAction类重写perform方法。因此,想法是使用modelService将此对象类转换为模型。

您要做的是..


在您的“自动化作业类”中实现了已弃用的AutomatedWorkflowTemplateJob

import de.hybris.platform.workflow.jalo.AutomatedWorkflowTemplateJob;
import de.hybris.platform.workflow.jalo.WorkflowAction;
import de.hybris.platform.workflow.jalo.WorkflowDecision;

public class xyzJob implements AutomatedWorkflowTemplateJob
{
    @Override
    public WorkflowDecision perform(final WorkflowAction action)
    {
        //suppose you want to get Order
        final WorkflowActionModel workflowActionModel = modelService.get(action);
        final OrderModel order = getAttachedOrder(workflowActionModel);
        ........ more code ..........
    }

}

这样,您可以处理折旧的AutomatedWorkflowTemplateJob。这不会给您Incorrect type defined for automated workflow错误。您还可以通过HMC执行相同的操作。


希望这会帮助你。祝好运!

10-08 08:42