当前位置: 首页>>代码示例>>Java>>正文


Java RouteContext.setNodeInstance方法代码示例

本文整理汇总了Java中org.kuali.rice.kew.engine.RouteContext.setNodeInstance方法的典型用法代码示例。如果您正苦于以下问题:Java RouteContext.setNodeInstance方法的具体用法?Java RouteContext.setNodeInstance怎么用?Java RouteContext.setNodeInstance使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在org.kuali.rice.kew.engine.RouteContext的用法示例。


在下文中一共展示了RouteContext.setNodeInstance方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: establishRouteContext

import org.kuali.rice.kew.engine.RouteContext; //导入方法依赖的package包/类
protected RouteContext establishRouteContext(DocumentRouteHeaderValue document, Throwable throwable) {
	RouteContext routeContext = new RouteContext();
    if (throwable instanceof RouteManagerException) {
        RouteManagerException rmException = (RouteManagerException) throwable;
        routeContext = rmException.getRouteContext();
    } else {
    	routeContext.setDocument(document);
        List<RouteNodeInstance> activeNodeInstances = KEWServiceLocator.getRouteNodeService().getActiveNodeInstances(document.getDocumentId());
        if (!activeNodeInstances.isEmpty()) {
            // take the first active nodeInstance found.
            RouteNodeInstance nodeInstance = (RouteNodeInstance) activeNodeInstances.get(0);
            routeContext.setNodeInstance(nodeInstance);
        }
    }
    if (routeContext.getNodeInstance() == null) {
        // get the initial node instance
        routeContext.setNodeInstance((RouteNodeInstance) document.getInitialRouteNodeInstances().get(0));
    }
    return routeContext;
}
 
开发者ID:kuali,项目名称:kc-rice,代码行数:21,代码来源:ExceptionRoutingServiceImpl.java

示例2: reResolveQualifiedRole

import org.kuali.rice.kew.engine.RouteContext; //导入方法依赖的package包/类
/**
 *
 * route level and then filters in the approriate ones.
 */
public void reResolveQualifiedRole(DocumentRouteHeaderValue routeHeader, String roleName, String qualifiedRoleNameLabel) {
    String infoString = "routeHeader="+(routeHeader == null ? null : routeHeader.getDocumentId())+", role="+roleName+", qualifiedRole="+qualifiedRoleNameLabel;
    if (routeHeader == null ||
            org.apache.commons.lang.StringUtils.isEmpty(roleName) ||
            org.apache.commons.lang.StringUtils.isEmpty(qualifiedRoleNameLabel)) {
        throw new IllegalArgumentException("Cannot pass null arguments to reResolveQualifiedRole: "+infoString);
    }
    LOG.debug("Re-resolving qualified role synchronously for "+infoString);
    List<RouteNodeInstance> nodeInstances = findNodeInstances(routeHeader, roleName);
    int requestsGenerated = 0;
    if (!nodeInstances.isEmpty()) {
        deletePendingRoleRequests(routeHeader.getDocumentId(), roleName, qualifiedRoleNameLabel);
        for (RouteNodeInstance nodeInstance : nodeInstances) {
            RuleTemplateBo ruleTemplate = nodeInstance.getRouteNode().getRuleTemplate();
            FlexRM flexRM = new FlexRM();
    		RouteContext context = RouteContext.getCurrentRouteContext();
    		context.setDocument(routeHeader);
    		context.setNodeInstance(nodeInstance);
    		try {
    			List<ActionRequestValue> actionRequests = flexRM.getActionRequests(routeHeader, nodeInstance, ruleTemplate.getName());
                for (ActionRequestValue actionRequest : actionRequests) {
    				if (roleName.equals(actionRequest.getRoleName()) && qualifiedRoleNameLabel.equals(actionRequest.getQualifiedRoleNameLabel())) {
    					actionRequest = KEWServiceLocator.getActionRequestService().initializeActionRequestGraph(actionRequest, routeHeader, nodeInstance);
    					KEWServiceLocator.getActionRequestService().saveActionRequest(actionRequest);
    					requestsGenerated++;
    				}
    			}
    		} catch (Exception e) {
    			RouteContext.clearCurrentRouteContext();
    		}

        }
    }
    LOG.debug("Generated "+requestsGenerated+" action requests after re-resolve: "+infoString);
    requeueDocument(routeHeader);
}
 
开发者ID:kuali,项目名称:kc-rice,代码行数:41,代码来源:RoleServiceImpl.java

示例3: reResolveRole

import org.kuali.rice.kew.engine.RouteContext; //导入方法依赖的package包/类
public void reResolveRole(DocumentRouteHeaderValue routeHeader, String roleName) {
	String infoString = "routeHeader="+(routeHeader == null ? null : routeHeader.getDocumentId())+", role="+roleName;
    if (routeHeader == null ||
            org.apache.commons.lang.StringUtils.isEmpty(roleName)) {
        throw new RiceIllegalArgumentException("Cannot pass null arguments to reResolveQualifiedRole: "+infoString);
    }
    LOG.debug("Re-resolving role synchronously for "+infoString);
    List<RouteNodeInstance> nodeInstances = findNodeInstances(routeHeader, roleName);
    int requestsGenerated = 0;
    if (!nodeInstances.isEmpty()) {
        deletePendingRoleRequests(routeHeader.getDocumentId(), roleName, null);
        for (RouteNodeInstance nodeInstance : nodeInstances) {
            RuleTemplateBo ruleTemplate = nodeInstance.getRouteNode().getRuleTemplate();
            FlexRM flexRM = new FlexRM();
    		RouteContext context = RouteContext.getCurrentRouteContext();
    		context.setDocument(routeHeader);
    		context.setNodeInstance(nodeInstance);
    		try {
    			List<ActionRequestValue> actionRequests = flexRM.getActionRequests(routeHeader, nodeInstance, ruleTemplate.getName());
                for (ActionRequestValue actionRequest : actionRequests) {
    				if (roleName.equals(actionRequest.getRoleName())) {
    					actionRequest = KEWServiceLocator.getActionRequestService().initializeActionRequestGraph(actionRequest, routeHeader, nodeInstance);
    					KEWServiceLocator.getActionRequestService().saveActionRequest(actionRequest);
    					requestsGenerated++;
    				}
    			}
    		} finally {
    			RouteContext.clearCurrentRouteContext();
    		}
        }
    }
    LOG.debug("Generated "+requestsGenerated+" action requests after re-resolve: "+infoString);
    requeueDocument(routeHeader);
}
 
开发者ID:kuali,项目名称:kc-rice,代码行数:35,代码来源:RoleServiceImpl.java

示例4: selectRules

import org.kuali.rice.kew.engine.RouteContext; //导入方法依赖的package包/类
public List<Rule> selectRules(RouteContext context, DocumentRouteHeaderValue routeHeader, RouteNodeInstance nodeInstance, String selectionCriterion, Timestamp effectiveDate) {
    // for TemplateRuleSelector, the criterion is taken as a ruletemplate name
    final String ruleTemplateName = selectionCriterion;

    Set<MassRuleAttribute> massRules = new HashSet<MassRuleAttribute>();
    RuleTemplate template = KewApiServiceLocator.getRuleService().getRuleTemplateByName(ruleTemplateName);
    if (template == null) {
        throw new WorkflowRuntimeException("Could not locate the rule template with name " + ruleTemplateName + " on document " + routeHeader.getDocumentId());
    }
    for (RuleTemplateAttribute templateAttribute : template.getActiveRuleTemplateAttributes()) {
        String ruleAttributeName = templateAttribute.getRuleAttribute().getName();
        if (!RuleAttribute.isWorkflowAttribute(templateAttribute.getRuleAttribute().getType())) {
            continue;
        }
        ExtensionDefinition extensionDefinition = KewApiServiceLocator.getExtensionRepositoryService().getExtensionByName(ruleAttributeName);
        Object attribute = ExtensionUtils.loadExtension(extensionDefinition);
        if (attribute == null) {
            throw new RiceIllegalArgumentException("Failed to load WorkflowRuleAttribute for: " + extensionDefinition);
        }
        if (!WorkflowRuleAttribute.class.isAssignableFrom(attribute.getClass())) {
            throw new RiceIllegalArgumentException("Failed to locate a WorkflowRuleAttribute with the given name: " + ruleAttributeName);
        }
        if (attribute instanceof XmlConfiguredAttribute) {
            ((XmlConfiguredAttribute)attribute).setExtensionDefinition(extensionDefinition);
        }

        WorkflowRuleAttribute ruleAttribute = (WorkflowRuleAttribute)attribute;
        if (ruleAttribute instanceof MassRuleAttribute) {
            massRules.add((MassRuleAttribute) attribute);
        }

    }

    List<org.kuali.rice.kew.api.rule.Rule> rules;
    if (effectiveDate == null) {
        rules = KewApiServiceLocator.getRuleService()
                .getRulesByTemplateNameAndDocumentTypeName(ruleTemplateName,
                        routeHeader.getDocumentType().getName());
    } else {
        rules = KewApiServiceLocator.getRuleService()
                .getRulesByTemplateNameAndDocumentTypeNameAndEffectiveDate(ruleTemplateName,
                        routeHeader.getDocumentType().getName(), new DateTime(effectiveDate.getTime()));
    }
    numberOfSelectedRules = rules.size();

    // TODO really the route context just needs to be able to support nested create and clears
    // (i.e. a Stack model similar to transaction intercepting in Spring) and we wouldn't have to do this
    if (context.getDocument() == null) {
        context.setDocument(routeHeader);
    }
    if (context.getNodeInstance() == null) {
        context.setNodeInstance(nodeInstance);
    }
    DocumentContent documentContent = context.getDocumentContent();
    PerformanceLogger performanceLogger = new PerformanceLogger();
    // have all mass rule attributes filter the list of non applicable rules
    for (MassRuleAttribute massRuleAttribute : massRules) {
        rules = massRuleAttribute.filterNonMatchingRules(context, rules);
    }
    performanceLogger.log("Time to filter massRules for template " + template.getName());

    List<Rule> ruleList = new ArrayList<Rule>(rules.size());
    for (org.kuali.rice.kew.api.rule.Rule ruleDefinition: rules) {
        ruleList.add(new RuleImpl(ruleDefinition));
    }
    return ruleList;
}
 
开发者ID:kuali,项目名称:kc-rice,代码行数:68,代码来源:TemplateRuleSelector.java

示例5: getActionRequests

import org.kuali.rice.kew.engine.RouteContext; //导入方法依赖的package包/类
/**
 * Generates action requests
 * @param routeHeader the document route header
 * @param routeNodeDef the RouteNode definition of the route node instance
 * @param nodeInstance the route node instance; this may be null!
 * @param ruleTemplateName the rule template
 * @return list of action requests
 * @throws WorkflowException
 */
public List<ActionRequestValue> getActionRequests(DocumentRouteHeaderValue routeHeader, RouteNode routeNodeDef, RouteNodeInstance nodeInstance, String ruleTemplateName) {
	RouteContext context = RouteContext.getCurrentRouteContext();
	// TODO really the route context just needs to be able to support nested create and clears
	// (i.e. a Stack model similar to transaction intercepting in Spring) and we wouldn't have to do this
	if (context.getDocument() == null) {
		context.setDocument(routeHeader);
	}
	if (context.getNodeInstance() == null) {
		context.setNodeInstance(nodeInstance);
	}

	LOG.debug("Making action requests for document " + routeHeader.getDocumentId());

	RuleSelector ruleSelector = loadRuleSelector(routeNodeDef, nodeInstance);

	List<Rule> rules = ruleSelector.selectRules(context, routeHeader, nodeInstance, ruleTemplateName, effectiveDate);

	// XXX: FIXME: this is a special case hack to expose info from the default selection implementation
	// this is used in exactly one place, RoutingReportAction, to make a distinction between no rules being
	// selected, and no rules actually matching when evaluated
	// if (numberOfRules == 0) {
	//   errors.add(new WorkflowServiceErrorImpl("There are no rules.", "routereport.noRules"));
	// } else {
	//   errors.add(new WorkflowServiceErrorImpl("There are rules, but no matches.", "routereport.noMatchingRules"));
	// }
	if (ruleSelector instanceof TemplateRuleSelector) {
		selectedRules += ((TemplateRuleSelector) ruleSelector).getNumberOfSelectedRules();
	}

	PerformanceLogger performanceLogger = new PerformanceLogger();

	ActionRequestFactory arFactory = new ActionRequestFactory(routeHeader, context.getNodeInstance());

	List<ActionRequestValue> actionRequests = new ArrayList<ActionRequestValue>();
	if (rules != null) {
		LOG.info("Total number of rules selected by RuleSelector for documentType=" + routeHeader.getDocumentType().getName() + " and ruleTemplate=" + ruleTemplateName + ": " + rules.size());
		for (Rule rule: rules) {
			RuleExpressionResult result = rule.evaluate(rule, context);
			if (result.isSuccess() && result.getResponsibilities() != null) {
				// actionRequests.addAll(makeActionRequests(context, rule, routeHeader, null, null));
                   org.kuali.rice.kew.api.rule.Rule ruleDef = org.kuali.rice.kew.api.rule.Rule.Builder.create(rule.getDefinition()).build();
				makeActionRequests(arFactory, result.getResponsibilities(), context, ruleDef, routeHeader, null, null);
			}
		}
	}
	actionRequests = new ArrayList<ActionRequestValue>(arFactory.getRequestGraphs());
	performanceLogger.log("Time to make action request for template " + ruleTemplateName);

	return actionRequests;
}
 
开发者ID:kuali,项目名称:kc-rice,代码行数:60,代码来源:FlexRM.java


注:本文中的org.kuali.rice.kew.engine.RouteContext.setNodeInstance方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。