工作流-2(贴自csdn论坛)

本文详细阐述了工作流系统的开发过程,从分析业务需求出发,探讨何时需要建立工作流平台,以及如何选择合适的开发策略。文章还介绍了工作流管理系统的组成,包括工作流引擎、流程管理工具等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  工作流开发中,我们所需解决的第一个问题就是分析业务需求,在业务需求没有出来之前空谈工作流是不切实际的,分析了具体需求以后再来考虑开发中的实际情况,是否需要建立一个稳定的工作流平台等问题,实际上大部分的oa系统中都涉及到了工作流的一些思想,但是他们所谓的工作流相对而言主要是一些面向于文档的工作,如收发文的管理、公文的审批等,这些工作并非一定要建立一个工作流平台才能解决的,实际开发过程中,类似这些简单的流程,可以通过代码在表现层开发的时候直接实现,但是如果在开发政务系统或者商务应用系统项目时,由于这些项目往往涉及到很复杂的流程,而且流程的变化也是没有办法事先估计的,所以此是考虑使用一个稳定的工作流平台才是合理的。以上问题解决以后,再来考虑开发的问题,如果公司人手比较足,技术力量比较雄厚,可以考虑自主开发工作流平台,如果不具有这样的条件,可以考虑一下选择一个比较好的合作伙伴,使用他们的工作流平台,你在他们工作流平台的基础上再来进行二次开发和应用系统的集成。 

 工作流系统开发体系  
  一般的工作流管理系统由三个部分组成:工作流引擎、流程管理工具、流程定义工具(含图形化的建模工具)和客户端。开发的重点在于流程定义工具,工作流引擎可以考虑使用别人的产品。其各个组成部分又包括自己的数据系统,接口与表现形式。最好都开发成图形的可交互操作界面。整个系统的工作流程如下:  
  工作流建模工具建立模型->流程定义工具对已建立的模型进行定义->把已建立的模型自动存入数据库或自动生成XPDL文件->工作流引擎从数据库或者XPDL文件调用工作流定义->执行工作流程->返回执行后的相关数据。  
   
   
  基本开发策略:  
  1、理解工作流的基本概念,工作流技术中所涉及到的概念较多,都不是很容易理解。  
  2、把流程的导航问题做为核心。  
  3、开发过程中遵守一定的标准,例如WFMC的接口1  
   
  工作流引擎部分        
  工作流引擎基本功能  
        1、解释过程定义  
  2、控制过程实例—创建、激活、挂起、终止等  
  3、为过程的活动导航,可能要包含顺序或者平行的操作、最后时间期限、对                 工作流相关数据进行解释  
  4、参与者签名和退出  
  5、确定任务项目,实现用户意图;提供接口,支持用户交互  
  6   、维护工作流控制数据和工作流相关数据,在应用程序间或者用户间传递       工作流相关数据  
  7、提供调用外部程序的接口,连接所有工作流相关数据  
  8   、提供控制、管理和审查功能  
   
  工作流引擎部分,可以自己开发,也可以考虑选用其他公司的产品,但必须保证以上基本的功能  
   
   
  流程管理器  
        流程管理器至少应该包含两个部分:管理部分和监控部分  
        管理部分:提供了完善的用户管理、角色管理、系统设置、系统安全管理、配置文件管理和日志管理,用户的操作权限分布如下:  
    以部门、用户组、角色分别描述组织结构  
  分别基于部门、用户组、角色、用户进行授权,达到最大灵活性  
   
        监控部分:主要实现对工作流程的监控,让管理者可以追踪和控管角色、活动、节点、过程实例的状态和过程实例流经的路径;可以以图形的方式再现已经完成的过程实例的路径、可以显示正在进行中的过程实例,并且提供管理的机制,让监控者得以在必要时终止或暂停某些过程实例。同时,系统亦提供有关工作过程的统计数据和报表,动态改变过程的状态,协调各个部分的关系,并进而提升经营管理的效率。负载平衡提高工作流的工作效率。  
   
   
  流程定义工具  
  这个部分是开发的重点,流程定义工具部分包括:过程建模部分、XPDL自动生成部分、界面设计部分、报表设计和自动生成部分和设计模型的仿真部分。  
  1) 过程建模部分(process   modeling)  
  使用图形化的方法,让开发者用最少的时间设计或修改企业工作流程,建模工具提供相当丰富的流程逻辑表达方式,可以表示非常复杂的流程,和界面设计部分、报表设计部分相结合可以轻易的设定每个流程步骤要执行的功能,和组织机构建模工具相结合,可方便准确地选择每个活动执行的参与者。Process   Designer   最大的优点是:让开发人员在设计与仿真流程的过程中,避免复杂且耗时的流程程序开发过程。  
  基本功能特点如下:  
  1)   图形化拖拽方式建立工作流模型  
  2)   人性化的各种选项设置  
  3)   多窗口的用户界面  
  4)   丰富的过程图形元素  
  5)   过程元素拷贝、粘贴、删除操作  
  6)   支持同时打开多个模型文件进行编辑  
  7)   快速定位过程元素  
  8)   支持图形的分层显示  
  9)   模型文件统一存放、安全管理  
  10)   丰富多样的活动类型可以适应不同的业务处理需求  
  11)   支持多种流程逻辑关系  
  12)   支持子过程设计  
  13)   支持用户自定义类型数据  
  14)   工作流过程的参与者支持各种表达式  
  15)   支持内置块设计  
  16)   可设定工作流过程时限  
  17)   支持工作流程的权限管理  
  18)   模型的合法性检查  
  19)   模型文件的图形输出  
  2)XPDL自动生成部分  
  此部分作用是使已经定义完的图形化的流程模型逻辑自动转变为XPDL文档或者其他通用的形式  
  工作流逻辑的物理形式:  
  1.采用数据库来存放逻辑  
  2.采用WPDL或者XPDL的文件格式存放逻辑  
   
  我的想法:一般来说用数据库来存放可获得更好的内部操作性,而文件格式更有利于系统的封装与对外接口的统一,实现了数据库逻辑后再做文件格式,先将模型中各个元素的属性存在数据库里,再从数据库生成标准的文件,作为标准的接口用,这样挺方便的(或者直接用Java语言生成标准的xml文件)  
   
  工作流流程逻辑实现的关键点:  
  (1)应当具有的接口方法  
  (2)接口对应的逻辑  
  (3)条件判断的实现  
   
   
  3)   界面设计部分(form   designer)  
          此部分提供了类似于页面设计的图形化应用开发工具,用户可以使用图形         化设计方法,开发出动态页面应用,其结果可保存为html或jsp,并具有数据库访问能力。运行时用户将从浏览器上访问到设计结果。它的最大的优点是:让开发人员避免了活动中应用程序的开发过程  
  4)   报表设计及自动生成部分(report   designer)  
  它提供了图形化设计复杂报表页面的能力,可设计非常复杂的报表,并可画出各种统计分析图,能够使用多种形式输出。  
  5)流程模型仿真部分  
  对已经定义好的模型进行仿真和测试  
   
  客户端  
  在客户端执行审批等各种操作,实现流程的具体流转  
   
  流程流转方式:  
  审批、建议、知会、决定、执行  
   
  审批:通过或者不通过,可以给出建议  
  建议:给出相关的建议  
  知会:流程通知事件,不影响流程的流转,可以通过知会的方式通知发文人流程的流转情况  
  决定:可以使流程继续或者终止至某一步,使流程具有重定向的功能  
  执行:在一定时间内可以具有审批的权限,超过了指定时间就可以按照已经指定的方式执行流程  
  最终,形成可由发文人或指定群组的人员可以查看的工作流流程流转报告  

### 关于优快云博客中粉色材质问题的解决方案 在计算机图形学领域,尤其是使用Unity引擎时,“粉色材质”通常指的是当纹理丢失或未正确加载时,Unity会默认显示一种粉红色的颜色来提示开发者存在资源缺失的情况。这种现象通常是由于以下几个原因之一引起的: 1. **缺少纹理文件**:如果指定的纹理文件不存在或者路径错误,则会出现粉色材质的现象[^3]。 2. **导入设置不匹配**:有时即使纹理文件存在于项目目录下,但如果其导入设置不符合需求(例如压缩格式不对),也可能导致渲染异常并呈现为粉色材质。 3. **打包发布后的资源损坏**:对于已经发布的应用而言,在某些情况下可能会因为资源被打包过程中出现问题而导致运行时无法找到对应的图资产。 针对以上提到的原因可以采取如下措施解决问题: #### 方法一: 检查素材是否存在以及路径是否正确 确认所使用的模型及其关联的所有纹理都已添加到工程当中, 并且它们之间的链接关系保持完好无损。可以通过重新导入整个FBX文件夹来修复潜在断裂连接. #### 方法二: 调整Texture Import Settings 进入 Unity 编辑器中的 `Assets -> Import Settings` 对话框里查看 Texture 的具体参数设定情况。确保选择了合适的平台兼容选项 (如 Android/iOS), 同时关闭不必要的优化开关比如 Strip Metadata 和 Compress Textures 如果怀疑这些功能干扰到了正常表现效果的话。 #### 方法三: 使用 Placeholder Shader 替代 Standard Surface Shaders 有时候标准表面着色器可能并不支持特定类型的材质属性表达方式(特别是自定义PBR工作流下的特殊反射特性). 可尝试切换成更灵活可扩展性强一些的基础颜色传递型shader作为临时替代品直到原生实现完善为止. 下面给出一段简单的脚本来帮助自动检测场景内的所有Mesh Renderer组件并将他们的Material替换为我们预设好的安全版本: ```csharp using UnityEngine; public class FixPinkMaterials : MonoBehaviour { public Material safeMaterial; void Start(){ MeshRenderer[] renderers = FindObjectsOfType<MeshRenderer>(); foreach(MeshRenderer renderer in renderers){ if(renderer.sharedMaterial.color == new Color(0.98f, 0.76f, 0.89f)){ renderer.material = safeMaterial; } } } } ``` 通过执行此代码片段可以在启动阶段快速定位那些因故变成奇怪色调的对象们进而给予及时纠正处理。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值