我正在研究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执行相同的操作。希望这会帮助你。祝好运!