Windchill 工作流的提示和技巧
以下提示和技巧汇集了有关工作流的一系列实用研究成果。特别地,对经历其生命周期(由工作流自动化)而成熟的业务对象进行了重点说明。
一般指南:
工作流适用性
工作流通常在业务对象实例的基础上(如文档、部件、变更请求等)与生命周期一起应用。在设计工作流时,请记住进程(工作流的实例)应用于修订版本。这意味着:
也可以独立于业务对象来实例化工作流,但通常不会这样做。通常,使用工作流的诱因是:存在着通过进程路由并且经过一系列状态而成熟的概念数据包。
在 Windchill PDMLink 中,工作流通常在对象创建时启动。在 Windchill ProjectLink 中,专门通过使用路由功能为对象启动工作流,而且也以协调的方式启动以自动执行项目计划。
此外,在 Windchill PDMLink 中,升级功能会启动类似于 Windchill ProjectLink 路由的功能,用于多对象的状态转变管理。
工作流与生命周期
工作流自动执行公司的作业程序,具体做法是定义一组基于用户的和系统自动化的任务,定义任务关联和路由规则,并提供自动交付的用户体验。要看到进程状态,最简单的方法其实是使用生命周期状态。可直接在业务对象上看到生命周期状态,而且该状态可由工作流进程控制。生命周期提供以下功能:
可使用进程监视器以图形方式了解详细的进程测量信息。这些信息非常有用,并且非常丰富。但是,生命周期状态通常传递的是对象在进程中处于哪个位置的经过简化的恰当信息。
生命周期管理的对象
生命周期管理的对象与一个生命周期模板关联,并在每个状态的基础上与一个或多个工作流模板关联。对于报告数据的成熟度、按成熟度控制对该数据的访问,以及为该数据提供基于状态的过滤器而言,生命周期状态很重要。在不需要基于状态的行为时,建议开发继承对象模型中的高层对象的对象。文件夹驻留对象是较简单的对象类的示例。特别是在涉及到大量对象实例的情况下,从尽可能最简单的对象类继承能提供最佳性能。
容器策略
在 Windchill 中,工作流模板可存储在三个基本级别上 — 站点、组织和容器。建议将工作流模板存储在最高的级别上,以便能够重新使用。例如,如果所有组织均可利用某个工作流模板,则应将其存储在站点级别上。工作流模板的重新使用是一个非常有用的概念,因此应对其加以考虑。如果工作流模板确实只在单个存储库中相关,则很可能应在该存储库中管理它。如果工作流模板确实不可重新使用,则将该模板存储在最低的级别上(如存储库)是一个很好的做法,因为这样做减少了可能在整个系统中造成的混乱。
工作流定义:
活动
工作流变量
并行活动
循环链接
在几乎所有工作流实施中,都建议将单个父工作流与生命周期关联,以控制对象的所有可能状态。以下是此建议背后的一些原因:
父工作流不必太大或太复杂。可以将此工作流分解为多个块和子进程,这样就能获得单个父工作流下的重新使用性优点和复杂性降低的优点,就像您在与每个阶段和关口关联的工作流下所获得的这些优点一样。
活动的角色在运行时得到解析,这样就能重新使用工作流。角色解析只是一种指定参与某个活动的行为的机制。
从在该活动中指定的团队按名称或变量来解析角色,或者从对象的团队来解析角色。对象的团队使用团队模板、生命周期模板和上下文团队(对于 Windchill PDMLink 和 Windchill ProjectLink)进行解析。
工作流 Java 代码
请注意,活动的 Java 代码被限制为 2000 个字符,因此将需要创建类才能进行更复杂的处理。
静态代码
异常处理
须正确处理异常,因为不正确的异常处理会:
好的做法是:
测试
同步
工作流测试
wt.org.WTPrincipal creator=(wt.org.WTPrincipal)wtcr.getCreator().getObject(); wt.session.SessionHelper.manager.setPrincipal( creator.getName() );
wt.lifecycle.LifeCycleHelper.service.reassign(wtcr,wt.lifecycle.LifeCycleHelper.service.getLifeCycleTemplateReference(“My Lifecycle Template”));
转:http://www.pisx.com/bbs/topic.php?filename=7347&extra=page%3D57