奥宝工作流

奥宝工作流平台软件介绍(Version 1.1)1.概述奥宝工作流产品系列是北京奥宝软件技术有限责任公司按照WfMC(Workflow Management Coalition)标准开发的工作流软件产品套件,为企事业单位的工作流程(或业务流程)自动化、工作流程(或业务流程)重组提供全面支持,本公司对该产品系列拥有完全知识产权。

奥宝工作流产品系列由奥宝工作流服务器、奥宝工作流流程设计系统、工作流系统管理系统、奥宝工作流工作项管理系统四个部分组成,提供从流程设计、流程执行与调度、集成已有信息系统、工作项(任务)管理等功能,是一套完整的工作流产品系列。

奥宝工作流服务器提供工作流API(应用程序接口),以支持基于工作流的软件开发和工作流系统与其他系统的集成,v1.1版本提供基于JavaRMI和WebService的工作流API。

奥宝工作流产品系列结构关系图2.奥宝工作流流程设计系统奥宝工作流流程设计系统是设计工作流程的图形化工具。

设计者只需通过简单的鼠标拖拽就可以制定一个流程。

我们按照(WfMC)标准,用工作流模型来表示一套完整的工作流定义,一个模型由一个或多个流程定义组成,还包括各流程定义可以共用的一些数据、参与者、应用程序声明、数据类型定义和声明等信息。

流程设计系统建立的对象是工作流模型。

系统提供将工作流模型保存为XPDL文件的功能(XPDL是WfMC基于xml的标准模型文件格式);提供将工作流模型发布到工作流服务器及导出、修改已发布工作流模型的功能。

奥宝工作流产品使用的工作流模型在《奥宝工作流模型说明》中有详细介绍。

流程设计系统特征总结:可视化流程设计采用WFMC标准的工作流模型文件XPDL支持流程发布和导出支持在线设计与离线设计支持并法、同步、选择、子流程、流程块、异常处理等流程特征支持任意复杂程度的路径表达简单易用,只有人工活动、自动活动、子过程活动、块活动、路由活动五种活动类型通过条件表达式、参与者表达式、实际参数表达式支持流程灵活性参与者推迟梆定,模型可迁移提供免客户端安装的Java Web Start版跨平台,国际化支持3.奥宝工作流服务器3.1 系统介绍奥宝工作流服务器是按照工作流模型执行工作流程的多线程服务器系统。

流程设计系统设计的工作流程是工作流程的定义,也叫流程定义;当模型发布到服务器以后,就可以启动工作流程,启动时会创建流程定义的一个实例,也叫流程实例,可以同时启动一个流程定义的多个流程实例。

工作流服务器按照流程定义中规定的路径,驱动每个流程实例去执行不同的活动。

执行活动时根据不同的活动类型执行不同的操作,自动活动调用内部和外部的应用程序,从而集成已有信息系统;人工活动为各个参与者派发工作项,并通过邮件通知参与者;子过程活动启动其它流程,其他活动进行流程内部的路径控制操作。

流程的执行和调度,活动的执行和调度室工作流服务器的内部功能,除了内部功能外工作流服务器还为管理模型、过程、任务、组织机构、用户、权限提供API支持。

工作流服务器提供两套工作流API,一套是全Java的工作流API,为基于Java的二次开发者,提供简单易用和高效率的API;另一套是基于WebService的API,供其它语言二次开发者使用。

3.2 工作流服务器特征总结高效、稳定、可靠、安全的工作流引擎实现“最近最少访问原则” 的内存管理技术,支持无限流程数据,保证响应速度使用数据库连接池,提高数据存取效率使用线程池技术,降低系统开销独创的并发调度技术,以少数几个线程的代价完成所有流程和线程的并发执行采用用户口令和数字证书等安全措施提供基于JavaRMI 和WebService的工作流应用程序接口(API)支持并法、同步、选择、子流程、流程块、异常处理等流程特征自动集成EJB,Java,JavaRMI,WebService,Corba等类型的应用程序直接支持文档签发审批电子邮件任务通知支持MSSQL,Oracle数据库,支持多种操作系统组件式设计,易于扩展3.3 应用程序接口(API)工作流服务器为发布、导出和修改工作流模型提供API。

奥宝工作流流程设计系统就是通过这些API来完成工作流模型的发布、修改等功能。

工作流服务器为流程管理,包括流程启动、流程挂起、流程恢复、流程终止提供API;奥宝工作流系统管理系统就是通过这些API完成流程管理功能。

工作流服务器为基础设施的管理提供API。

奥宝工作流系统管理系统就是通过这些API 完成基础设施的管理。

工作流服务器为工作项的管理提供API。

奥宝工作流工作项管理系统通过这些API完成工作项处理、转发、锁定等功能。

用户可以通过工作流服务器提供的API开发更适合自身需要的系统管理、工作项管理、模型发布等系统,也可以在其它应用程序中通过工作流API来完成与工作流有关的工作。

4.奥宝工作流系统管理系统奥宝工作流系统管理系统是基于Web的管理系统,他通过工作流API对工作流服务器的组织机构(机构、角色和人员)、权限、用户、流程进行管理。

该系统一般由工作流系统管理员使用。

5.奥宝工作流工作项管理系统奥宝工作流工作项管理系统是基于Web的管理系统,它通过工作流API管理用户的工作项,提供处理工作项、转发工作项、锁定竞争工作项等功能。

系统根据流程定义自动生成一个工作项处理界面,这个界面主要是为了加快工作流程调试工作,对于一时来不及开发工作项处理界面的用户也可以直接作为临时的工作项处理界面。

6.奥宝工作流二次开发支持6.1 流程定义开发(流程设计)流程定义开发是工作流最基本的二次开发任务,奥宝工作流流程设计系统是专门用于流程设计的工具。

流程定义开发涉及企事业单位的具体业务流程,一般由业务领域的专家与计算机技术人员一起开发。

企业可以开发其行业通用的业务流程用于销售,或者购买其他单位开发的行业通用流程。

6.2 工作项处理界面的开发工作项处理界面也是基本的二次开发任务,工作项处理界面的开发是在流程定义的基础上进行的,为流程定义中的人工活动开发界面。

由于市面上已有很多Web页面的开发工具,我们不提供直接开发Web页面的工具。

奥宝工作流工作项管理系统为处理工作项提供了一个框架,可以方便的把工作项处理界面嵌入这个框架中。

同时,工作项管理系统自动生成一个工作项处理界面,这个界面主要用于调试流程,也可以用于对界面无特殊要求的工作环境。

6.3 应用程序、适配器和驱动器开发为了执行自动活动任务的,可能还需要为自动活动开发应用程序,应用程序也可能已经存在,工作流产品的任务是把这些应用程序集成到业务流程中。

目前系统支持Java、Java RMI、EJB、WebService、CORBA等类型的应用程序集成,对于这些类型的应用程序,用户在流程设计时通过设置一些信息就可以在流程执行时调用这些应用程序。

对于目前不支持的应用程序类型可以通过开发适配器和驱动器来集成,适配器和驱动器是高级的二次开发,一般用户不需要这样的开发。

应用程序适配器是一个普通的Java类型的应用程序,工作流调用应用程序适配器时,由适配器去调用目标程序。

驱动器完成的功能与适配器类似,只是驱动器更为标准和通用,并且在流程设计系统的界面中有专门的设置。

6.4 其他开发工作流服务器提供的作流API,为更广泛的工作流二次开发提供支持。

用户可以在其他应用程序中通过工作流API来完成与工作流有关的工作。

用户也可以通过工作流服务器提供的API开发更适合自身需要的系统管理、工作项管理、模型发布等系统。

7.奥宝工作流运行环境7.1 操作系统支持奥宝工作流产品系列是用Java开发的,由于Java的跨平台特性,奥宝工作流支持不同的操作系统,包括Window、Unix、Linux的各种版本,只要在这些系统上安装JDK1.3或者以上的版本。

7.2 数据库奥宝工作流服务器使用关系数据库来存储流程定义数据、流程实例数据、工作项数据以及各种基础数据。

奥宝工作流目前支持Oracle数据库(8和8i及以上的版本)、MS SQLServer 数据库(7.0及以上的版本)。

奥宝工作流使用JDBC来访问数据库,用户可以配置使用不同的JDBC Driver。

7.3 应用服务器奥宝工作流系统管理系统、工作项管理系统都是标准的J2EE Web应用程序系统,要求发布在支持J2EE Web应用程序(即支持JSP和Servlet)的应用服务器上。

产品携带Tomcat 4.1,用户可以根据自身需要选用各种商业或免费的应用服务器。

7.4 浏览器奥宝工作流系统管理系统、工作项管理系统都是标准的J2EE Web应用程序系统,其用户界面为Web页面,目前版本支持IE 4.0以上,其它浏览器未经测试,我们将在公司网站上发布浏览器支持的最新信息。

7.5 硬件要求硬盘:最小50M ,推荐 100M以上。

内存:服务器最小 128M,推荐 256M。

数据库分区:根据自身数据多少而定。

CPU:建议100M赫兹以上网络:要求支持TCP/IP协议;浏览器与系统管理系统之间100k/s以上浏览器与工作项管理系统间100k/s以上系统管理系统与工作流服务器之间10M网络环境以上工作项管理系统与工作流服务器之间10M网络环境以上流程设计系统与工作流服务器之间10M网络环境以上工作流服务器与数据库之间10M网络环境以上。

合集下载

06-OpenJWeb2.6-工作流系统操作手册概论

06-OpenJWeb2.6-工作流系统操作手册概论

OpenJWeb(v2.6)企业级信息化应用开发平台工作流系统操作手册编写日期:2012-12-25一、工作流系统 (3)1.1流程状态位定义 (3)1.2业务流程设置 (4)1.3工作流审批日志 (6)1.4工作流设计器 (6)1.4示例审批单据 (10)1.5待审批记录 (12)1.61.9版本工作流总结 (12)说明:2.6版本工作流实际为2.0版本,2.6版本未做改动。

3.0版本将对工作流进行全新改版。

一、工作流系统1.1 流程状态位定义菜单位置:业务流程管理->1.9版工作流->流程状态位定义角色:软件开发者功能说明:本功能定义不同业务对象的流程状态位。

1.9版本是用数据库表的flow_status 字段作为流程状态位字段。

下面是功能操作界面:图1-1 流程状态位定义列表页面图1-2 流程状态位定义编辑界面编辑页字段说明:序号输入项是否只读说明1 实体类名数据库表对应的实体类名2 类属性名目前仅支持flowStatus3 状态位编码定义状态位编码4 状态位名称定义状态位名称5 状态位说明定义状态位说明6 入口路由规则指向一个节点的审批线触发状态位改变的调试是全部满足还是有一个满足就可以,如果必须全部满足使用同步聚合。

7 入口路由规则表达式8 出口路由规则暂不使用。

9 路由规则解析器类型10 邮件通知申请人设置为是,则状态改变会通知流程发起人。

1.2 业务流程设置菜单位置:业务流程管理-> 1.9版工作流-> 业务流程设置角色:软件开发者功能说明:本功能定义审批流的前置状态位、后置状态位、审批权限、动作码等。

每个审批在对应的业务操作界面中能生成一个操作按钮,只有分配了审批权限的人才可以显示审批按钮。

下面是功能操作界面:图1-3 业务流程设置列表页面图1-4 业务流程设置编辑界面编辑页字段说明:序号输入项是否只读说明1 实体类名数据库表对应的实体类名2 状态位字段名必须为flowStatus3 前置状态执行审批前的状态位编码4 结果状态执行审批通过后的状态位编码5 动作码在页面中用动作码标识点击的哪个按钮,不同的审批按钮对应不同的审批线。

Teamcenter工作流

Teamcenter工作流

创建较复杂的流程模板(2)
– 为初级更改审核及最终更改审核添加审核人员配置文件;
创建较复杂的流程模板(3)
– 选择“初级更改通过”,将其“发放状态”属性改为“Pending”; – 选择“最终更改通过”,将其“发放状态”属性改为“TCM Released”; – 打开“任务处理程序面板”,替换 发布状态
工作流
工作流
• 工作流是一类能够完全或者部分自动执行的经营过程,根 据一系列 过 程规 则,文档、信息或任务能够在不同的执 行者之间传递、执行; • Tc2005提供了一系列用于达到不同特定目的的工作流模 板。 • 通过工作流程设计 器可以定制所需的 流程。
流程中的版本状态
• 通过版本状态可以了解对象在流程中所处的状态; • Tc2005中提供了两种默认的状态
创建新的流程模板(4)
– 确定发布状态
• 左上窗口中选择模板名; • 左下角单击“任务属性面板” ;
• 在“发放状态”下拉菜单中选择“TCM Released”; • 关闭窗口即可。
创建新的流程模板(5)
– “文件”下拉菜单中选择“关闭”,弹出“设置为‘可用阶段模 板’对话框”; – 选择左边窗口中处在修改中的 流程模板,单击 使其变为可 用的模板; – 单击“确定”即可。
使用流程模板(4)
– 选择“批准”,单击“确定”; – 当达到“签发法定人数”时,该流程完成,对象处于发布状态;
创建较复杂的流程模板(1)
• 该流程实现对对象的更改的管理,经过初级更改,最终更 改两个阶段
– “文件”下拉菜单 “新建根节点模板”; – 填写“新根节点模板名称”,并在“基于根节点名称”下拉菜单 中选择“空模板”,单击“确定”; – 增加“Do任务模板”,并将“名称”设为“初级更改”; – 增加“添加状态任务模板”,并将“名称”设为“初级更改通 过”; – 增加“审核任务模板”,并将“名称”设为“初级更改审核” – 同上如下图建立流程框架;

OCAP工作流程

OCAP工作流程

NG NG
OK
3
品保部主導異常會
NG
異常原因分
分析造成
4
析及確認
異常現象
5
開始試做
或返工不
6
擬定臨時對策




OK
擬定永久對策



NG
確定對策 是否有效
1、品
1、品保部進行品質異常原因分析並作進 一步的確認OK進入第5段落; 2、如涉及生產工藝,產品結構設計等問 題則轉技術部協助分析(物隨單走) 3、異常分析為原材料原因進入供應商 改,如是設計不良,設備不良,生產作業 等問題時則由技術部擬定對策;
1、技術部負責對責任部門撰寫臨時改善 對策進行糾正,措施包含原材料,在制 品,成品等的處理方式; 2、如是原材料問題導致品質異常,生管 部採購員負責落實供應應商改善對策及改 善效果追蹤;
1、品保部負責確認生產部或供應商的改 善對策是否有效,驗證OK進入第7段落, NG則逐級返回第5段落重新撰寫臨時/永 久對策;
段落
生產部
東莞聯華照明有限公司 OCAP工作流程圖
品保部
技術部
生管部採購
總經理
作業指導
品質異常
1
聯絡單
異常判定
NG
OK

特性矩陣圖
2
OK
效果驗證
是否已識別
NG 否
1、生產部門主導品質異常的提出; 2、品保部對異常品進行確認,OK繼續生 產,NG進入第2段落; 3、異常標準: 《產品檢驗標準》
1、品保部書面通知生產部停機; 2、技術員識別失控產品特性; 3、對該工序的特性矩陣圖,確定造成產 品特性的過程特性是否已識別; 4、如過程特性識別到失控原因,按CP執 行,並由品保部驗證效果並做記錄,OK 繼續生產,NG進入第3段; 5、如過程特性未識別到失控原因,進入 第3段;

一篇关于工作流与obe的通俗文档

一篇关于工作流与obe的通俗文档

项目组工作流研究------开源产品OBE研究报告作者:小贝2004-2-20 1. OBE中的重要概念1.1. 工作流参考模型工作流参考模型是由WFMC提出来的,对工作流管理系统的实现的一个参考模型。

以下是该模型的一个结构图:下面分别对各个部件进行解释:1.1.1. Work Flow Enactment Service这个组件就是OBE要实现的,主要功能是读取工作流定义、根据定义决定工作流的走向、为客户程序提供接口以驱动工作流。

俗称工作流机或工作流引擎。

1.1.2. Process Definition Tool用于以图形化的方式定义工作流。

目前比较成熟的开源编辑工具为Jawe(),OBE虽然也提供了一个工具,但还没完成。

Process Definition Tool 与Work Flow Enactment Service之间的接口也成为Interface 1,也就是说通过tool生成的文档,Work Flow Enactment Service要可以正确读取。

1.1.3. Work Flow Client Application工作流机的客户端程序。

该程序可为最终用户提供一个定制的用于驱动工作流的接口。

客户端程序通过Interface 2与OBE交互。

这是我们需要开发的。

1.1.4. Invoked Applications在工作流运作的过程中,可能需要调用工作流机之外的功能,这时可通过定义好的Interface 3来完成。

这也是我们需要开发的。

1.1.5. Administration and Monitoring Tools用于管理和监视工作流机。

在OBE中的实现则是OBEWorklist。

1.1.6. 别的Work Flow Enactment ServiceInterface 4用于工作流机之间的协作。

1.2. X PDL对工作流的定义是以XPDL文档的方式存在的。

XPDL是eXtensible Process Definition Language的缩写,且格式为XML的格式。

ofbiz工作流源代码学习(3)--WfProcessMgr接口

ofbiz工作流源代码学习(3)--WfProcessMgr接口
} public String version() throws WfException {
return processDef.getString("version"); } public String description() throws WfException {
return processDef.getString("description"); }
if (maxNumber > 0) return newArrayList(processList.subList(0, maxNumber - 1));
return processList; //以sequence方式返回process的List } public erator getIteratorProcess() throws WfException {
代码示例如下:
public String name() throws WfException { return processDef.getString("name"); } public String category() throws WfException { return processDef.getString("category");
Captcha security check
zealware is for sale
Please prove you're
WfProcessMgr接口
工作流管理器(WfProcessMgr)代表了一个特定流程的模板,它用来创建工作流流程的实例。逻辑上讲,它是工作流的创建
工厂和定位器,它能提供一些元信息给外界访问,如流程所需的环境,流程产生的结果等等。

简易OA漫谈之工作流设计(DB实现)

简易OA漫谈之工作流设计(DB实现)

简易OA漫谈之⼯作流设计(DB实现)好久没写博客,没想到⼤家讨论还挻热烈,⾮常感谢⼤家关注和提出的⼀些建议和意见。

⼤家关注的还是两点:1、现实流程会复杂得多;2、流程平台需要复杂的设计(作图)⼯具。

我想说的是我这⾥不是做⼀个“⼤⽽全”的⼯作流平台,只是从最基本的地⽅⼊⼿,通过这样⼀些测试,让初学者发现⼯作流的⼀些原理。

了解这些原理后,你使⽤各种平台(如K2)开发就会清楚⼀些。

上篇算是⼀个概要设计,这篇简单的做⼀个数据库实现,本实现暂不包括“规则处理”,即由调⽤端决定下⼀⼿步骤和处理⼈。

兄弟刚离职,现在正找⼯作,关乎⼀家⼈是否有饭吃,所以时间不多,写得很粗糙,⼤家还请原谅则个!⽤的sql server.1、先建⼀个数据库MyData2、执⾏⼀下结构脚本View CodeUSE [MyData]GO/****** Object: Table [dbo].[BaseUser] Script Date: 08/24/2012 11:50:20 ******/SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOSET ANSI_PADDING ONGOCREATE TABLE [dbo].[BaseUser]([ID] [int] IDENTITY(1,1) NOT NULL,[UserName] [varchar](50) NOT NULL,[PassWord] [varchar](50) NULL,[UserDesc] [nvarchar](200) NULL,[UnitID] [int] NULL,[PostID] [int] NULL,[LocationID] [int] NULL,[Phone] [varchar](50) NULL,[Email] [varchar](100) NULL,[EnableFlag] [bit] NOT NULL,CONSTRAINT [PK_MyUser] PRIMARY KEY CLUSTERED([ID] ASC)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY]GOSET ANSI_PADDING OFFGO/****** Object: Table [dbo].[FlowStep] Script Date: 08/24/2012 11:50:20 ******/SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOSET ANSI_PADDING ONGOCREATE TABLE [dbo].[FlowStep]([ID] [int] IDENTITY(1,1) NOT NULL,[StepID] [int] NOT NULL,[FlowID] [int] NOT NULL,[StepCode] [varchar](50) NOT NULL,[StepName] [nvarchar](50) NOT NULL,[IsJoin] [bit] NULL,[Params] [xml] NULL,[EnabeFlag] [bit] NOT NULL,CONSTRAINT [PK_FlowStep] PRIMARY KEY CLUSTERED([ID] ASC)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY]GOSET ANSI_PADDING OFFGO/****** Object: Table [dbo].[FlowInstance] Script Date: 08/24/2012 11:50:20 ******/SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOSET ANSI_PADDING ONGOCREATE TABLE [dbo].[FlowInstance]([ID] [int] IDENTITY(1,1) NOT NULL,[FlowID] [int] NOT NULL,[FlowName] [varchar](50) NOT NULL,[UserID] [int] NOT NULL,[UserName] [varchar](50) NOT NULL,[ApplyUserName] [varchar](50) NULL,[ApplyDateTime] [datetime] NULL,[EndUserName] [varchar](50) NULL,[EndDateTime] [datetime] NULL,[StatusID] [int] NULL,[StatusName] [varchar](50) NULL,[ApplyStatus] [nvarchar](500) NULL,CONSTRAINT [PK_FlowMain] PRIMARY KEY CLUSTERED([ID] ASC)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY]GOSET ANSI_PADDING OFFGO/****** Object: Table [dbo].[FlowActionTraceData] Script Date: 08/24/2012 11:50:20 ******/SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOCREATE TABLE [dbo].[FlowActionTraceData]([TraceID] [int] NOT NULL,[Data] [xml] NULL,CONSTRAINT [PK_FlowActionTraceData] PRIMARY KEY CLUSTERED([TraceID] ASC)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY]GO/****** Object: Table [dbo].[FlowActionTrace] Script Date: 08/24/2012 11:50:20 ******/SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOSET ANSI_PADDING ONGOCREATE TABLE [dbo].[FlowActionTrace]([ID] [int] IDENTITY(1,1) NOT NULL,[InstanceID] [int] NOT NULL,[FlowID] [int] NOT NULL,[FlowName] [nvarchar](50) NOT NULL,[FlowCode] [varchar](50) NOT NULL,[StepID] [int] NOT NULL,[StepName] [nvarchar](50) NOT NULL,[StepCode] [varchar](50) NOT NULL,[ActionID] [int] NULL,[ActionName] [nvarchar](50) NULL,[ActionCode] [varchar](50) NULL,[OwnerUserID] [int] NOT NULL,[OwnerUserName] [varchar](50) NOT NULL,[OwnerUserDesc] [nvarchar](50) NOT NULL,[SubmitUserID] [int] NULL,[SubmitUserName] [varchar](50) NULL,[SubmitUserDesc] [nvarchar](50) NULL,[ArriveTime] [datetime] NOT NULL,[ReadTime] [datetime] NULL,[SubmitTime] [datetime] NULL,[PreID] [int] NOT NULL,[SubmitMemo] [nvarchar](500) NULL,CONSTRAINT [PK_FlowActionTrace] PRIMARY KEY CLUSTERED([ID] ASC)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY]GOSET ANSI_PADDING OFFGO/****** Object: Table [dbo].[FlowAction] Script Date: 08/24/2012 11:50:20 ******/SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOSET ANSI_PADDING ONGOCREATE TABLE [dbo].[FlowAction]([ID] [int] IDENTITY(1,1) NOT NULL,[ActionID] [int] NOT NULL,[StepID] [int] NOT NULL,[FlowID] [int] NOT NULL,[ActionCode] [varchar](50) NOT NULL,[ActionName] [nvarchar](50) NOT NULL,[Params] [xml] NULL,[EnableFlag] [bit] NOT NULL,CONSTRAINT [PK_FlowAction] PRIMARY KEY CLUSTERED([ID] ASC)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY]GOSET ANSI_PADDING OFFGO/****** Object: Table [dbo].[Flow] Script Date: 08/24/2012 11:50:20 ******/SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOSET ANSI_PADDING ONGOCREATE TABLE [dbo].[Flow]([ID] [int] NOT NULL,[FlowCode] [varchar](50) NOT NULL,[FlowName] [nvarchar](50) NULL,[FlowVersion] [varchar](50) NOT NULL,[Params] [xml] NULL,[EnableFlag] [bit] NOT NULL,CONSTRAINT [PK_Flow_1] PRIMARY KEY CLUSTERED([ID] ASC)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY]GOSET ANSI_PADDING OFFGO/****** Object: UserDefinedFunction [dbo].[f_splitstr] Script Date: 08/24/2012 11:50:20 ******/SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOCREATE function [dbo].[f_splitstr](@SourceSql varchar(8000),@StrSeprate varchar(100))returns @temp table(F1 varchar(100))asbegindeclare @ch as varchar(100)set @SourceSql=@SourceSql+@StrSepratewhile(@SourceSql<>'')beginset @ch=left(@SourceSql,charindex(@StrSeprate,@SourceSql,1)-1)insert @temp values(@ch)set @SourceSql=stuff(@SourceSql,1,charindex(@StrSeprate,@SourceSql,1),'')endreturnendGO/****** Object: UserDefinedFunction [dbo].[f_getstartstatus] Script Date: 08/24/2012 11:50:20 ******/SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGO-- =============================================-- Author: <Author,,Name>-- Create date: <Create Date, ,>-- Description: <Description, ,>-- =============================================CREATE FUNCTION [dbo].[f_getstartstatus](@OwnerUserIDStr varchar(500),@StepName nvarchar(50))RETURNS nvarchar(500)ASBEGINdeclare @ret nvarchar(500)set @ret=''select @ret=@ret+erDesc +'('+@StepName+');'from f_splitstr(@OwnerUserIDStr,',') djoin dbo.BaseUser e on d.f1=e.IDreturn @retENDGO/****** Object: UserDefinedFunction [dbo].[f_getflowstatus] Script Date: 08/24/2012 11:50:20 ******/SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGO-- =============================================-- Author: <Author,,Name>-- Create date: <Create Date, ,>-- Description: <Description, ,>-- =============================================create FUNCTION [dbo].[f_getflowstatus](@instanceid int)RETURNS nvarchar(500)ASBEGINdeclare @ret nvarchar(500)set @ret=''select @ret=@ret+OwnerUserDesc+'('+StepName+');'from dbo.flowactiontracewhere InstanceID=@instanceidand SubmitTime is nullreturn @retENDGO/****** Object: StoredProcedure [dbo].[usp_FlowSubmit] Script Date: 08/24/2012 11:50:18 ******/ SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGO-- =============================================-- Author: <Author,,Name>-- Create date: <Create Date,,>-- Description: <Description,,>-- exec usp_FlowSubmit 10,3,3,0,'4/2,3',null-- =============================================CREATE PROCEDURE [dbo].[usp_FlowSubmit](@TraceID int,--flowactiontrace的id@AcionID int,--操作编号@SubmitUserID int,--提交⼈编号@IsEnd int,--是否结束步骤@NextStr varchar(2000),--'1/3,4;3/5,6'@Data nvarchar(max))ASBEGINSET NOCOUNT ON;declare @flowid intdeclare @stepid intdeclare @actioncode varchar(50)declare @actionname nvarchar(50)declare @instanceid intdeclare @submitusername varchar(50)declare @submituserdesc nvarchar(50)declare @isjoin bitselect @submitusername=username,@submituserdesc=userdescfrom dbo.BaseUserwhere ID=@SubmitUserIDselect @instanceid=instanceid,@flowid=flowid,@stepid=stepidfrom dbo.FlowActionTracewhere ID=@TraceIDselect @actioncode=actioncode,@actionname=actionnamefrom dbo.FlowActionwhere ActionID=@AcionID and StepID=@stepid and FlowID=@flowidselect @isjoin =isjoinfrom dbo.FlowStepwhere StepID=@stepid and FlowID=@flowidbegin tran--提交当前待办update dbo.FlowActionTraceset ActionID=@AcionID,ActionCode=@actioncode,ActionName=@actionname,SubmitUserID=@SubmitUserID,SubmitUserName=@submitusername,SubmitUserDesc=@submituserdesc,SubmitTime=GETDATE()where ID=@TraceIDif(@Data is not null)begininsert into dbo.FlowActionTraceData(TraceID,Data)values(@TraceID,@Data)end--如果不是会审,删除其他待办if(@isjoin=0)begindelete dbo.FlowActionTracewhere StepID=@stepid and FlowID=@flowid and ID<>@TraceIDend--更新主表状态if(@IsEnd=1and (select COUNT(*) from dbo.FlowActionTrace where FlowID=@flowid and SubmitTime is null)=0 )beginupdate dbo.FlowInstanceset EndUserName=@submitusername,EndDateTime=GETDATE(),StatusID=100,StatusName='正常结束',ApplyStatus=''where ID=@instanceidendelse --不是结束时插⼊待办,可能多个路线,⼀个路线可能多⼈begindeclare @next varchar(500)DECLARE db_cursor CURSOR FORselect * FROM dbo.f_splitstr(@NextStr,';')OPEN db_cursorFETCH NEXT FROM db_cursor INTO @nextWHILE @@FETCH_STATUS=0BEGINdeclare @nextstepid int --下⼀步骤declare @OwnerUserIDStr varchar(500) --下⼀步骤处理⼈set @nextstepid=convert(int,left(@next,charindex('/',@next,1)-1))set @OwnerUserIDStr=right(@next,len(@next)-charindex('/',@next,1))declare @nextstepcode varchar(50)declare @nextstepname nvarchar(50)select @nextstepcode=stepcode,@nextstepname =stepnamefrom FlowStep where FlowID=@flowid and StepID=@nextstepid--插⼊待办INSERT INTO [FlowActionTrace]([InstanceID],[FlowID],[FlowName],[FlowCode],[StepID],[StepName],[StepCode],[OwnerUserID],[OwnerUserName],[OwnerUserDesc],[ArriveTime],[PreID])SELECT @instanceid,@FlowID,a.FlowName,a.FlowCode,@nextstepid,@nextstepcode,@nextstepname,b.ID,erName,erDesc,getdate(),@TraceIDFROM dbo.Flow a,(select e.ID,erName,erDescfrom dbo.f_splitstr(@OwnerUserIDStr,',') djoin dbo.BaseUser e on d.f1=e.ID)b WHERE a.id=@flowidFETCH NEXT FROM db_cursor INTO @nextENDCLOSE db_cursorDEALLOCATE db_cursor--更新主表状态update dbo.FlowInstanceset ApplyStatus=dbo.f_getflowstatus(@instanceid)where ID=@instanceidendcommit tranENDGO/****** Object: StoredProcedure [dbo].[usp_FlowStart] Script Date: 08/24/2012 11:50:18 ******/SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGO-- =============================================-- Author: <Author,,Name>-- Create date: <Create Date,,>-- Description: <Description,,>-- exec usp_FlowStart 1,1,1,2,'2,3'-- =============================================CREATE PROCEDURE [dbo].[usp_FlowStart](@FlowID int,--流程模板编号@UserID int,--流程⽤户@ApplyUserID int,--流程申请⽤户@NextStepID int,--下⼀步骤@OwnerUserIDStr varchar(500),--多个下⼿审批⼈,以‘,’分隔@Data nvarchar(max))ASBEGINSET NOCOUNT ON;declare @stepid intdeclare @stepcode varchar(50)declare @stepname nvarchar(50)declare @actionid intdeclare @actioncode varchar(50)declare @actionname nvarchar(50)select @stepid=stepid,@stepcode=stepcode,@stepname=stepnamefrom FlowStep where FlowID=@FlowID and StepID=1select @actionid=actionid,@actioncode=actioncode,@actionname=actionnamefrom FlowAction where FlowID=@FlowID and StepID=1 and ActionID=1declare @nextstepcode varchar(50)declare @nextstepname nvarchar(50)select @nextstepcode=stepcode,@nextstepname=stepnamefrom FlowStep where FlowID=@FlowID and StepID=@NextStepIDbegin trandeclare @instanceid int--插⼊主表INSERT INTO [FlowInstance]([FlowID],[FlowName],[UserID],[UserName],[ApplyUserName],[ApplyDateTime],[StatusID],[StatusName],[ApplyStatus])--待办状态SELECT @FlowID,a.FlowName,@UserID,erName,erName,GETDATE(),1,'流程中',dbo.f_getstartstatus(@OwnerUserIDStr,@nextstepname) FROM dbo.Flow a,dbo.BaseUser b,dbo.BaseUser cWHERE a.id=@FlowID and b.ID=@UserID and c.ID=@ApplyUserID set @instanceid=@@identity--插⼊申请⽇志INSERT INTO [MyData].[dbo].[FlowActionTrace]([InstanceID],[FlowID],[FlowName],[FlowCode],[StepID],[StepName],[StepCode],[ActionID],[ActionName],[ActionCode],[OwnerUserID],[OwnerUserName],[OwnerUserDesc],[SubmitUserID],[SubmitUserName],[SubmitUserDesc],[ArriveTime],[ReadTime],[SubmitTime])SELECT @instanceid,@FlowID,a.FlowName,a.FlowCode,@stepid,@stepcode,@stepname,@actionid,@actioncode,@actionname,b.ID,erName,erDesc,b.ID,erName,erDesc,getdate(),getdate(),getdate()FROM dbo.Flow a,dbo.BaseUser bwhere a.ID=@FlowID and b.ID=@ApplyUserIDdeclare @preid intset @preid=@@IDENTITYif(@Data is not null)begininsert into dbo.FlowActionTraceData(TraceID,Data)values(@preid,@Data)end--插⼊待办INSERT INTO [FlowActionTrace]([InstanceID],[FlowID],[FlowName],[FlowCode],[StepID],[StepName],[StepCode],[OwnerUserID],[OwnerUserName],[OwnerUserDesc],[ArriveTime],[PreID])SELECT @instanceid,@FlowID,a.FlowName,a.FlowCode,@nextstepid,@nextstepcode,@nextstepname,b.ID,erName,erDesc,getdate(),@preidFROM dbo.Flow a,(select e.ID,erName,erDescfrom dbo.f_splitstr(@OwnerUserIDStr,',') djoin dbo.BaseUser e on d.f1=e.ID) bWHERE a.id=@FlowIDcommit tranENDGO/****** Object: Default [DF_MyUser_EnableFlag] Script Date: 08/24/2012 11:50:20 ******/ALTER TABLE [dbo].[BaseUser] ADD CONSTRAINT [DF_MyUser_EnableFlag] DEFAULT ((1)) FOR [EnableFlag]GO/****** Object: Default [DF_FlowActionTrace_PreID] Script Date: 08/24/2012 11:50:20 ******/ALTER TABLE [dbo].[FlowActionTrace] ADD CONSTRAINT [DF_FlowActionTrace_PreID] DEFAULT ((0)) FOR [PreID]GO3、执⾏⼀下数据脚本View Code--插⼊⽤户insert BaseUser(ID,UserName,PassWord,UserDesc,UnitID,PostID,LocationID,Phone,Email,EnableFlag) values( 1 , 'aaa' , '123' , N'王⼩⼆' , NULL , NULL , NULL , NULL , NULL , 1 )insert BaseUser(ID,UserName,PassWord,UserDesc,UnitID,PostID,LocationID,Phone,Email,EnableFlag) values( 2 , 'bbb' , '234' , N'张⽼三' , NULL , NULL , NULL , NULL , NULL , 1 )insert BaseUser(ID,UserName,PassWord,UserDesc,UnitID,PostID,LocationID,Phone,Email,EnableFlag) values( 3 , 'ccc' , '345' , N'李家四' , NULL , NULL , NULL , NULL , NULL , 1 )insert BaseUser(ID,UserName,PassWord,UserDesc,UnitID,PostID,LocationID,Phone,Email,EnableFlag) values( 4 , 'ddd' , '456' , N'刘⼤五' , NULL , NULL , NULL , NULL , NULL , 1 )--插⼊流程模板表insert Flow(ID,FlowCode,FlowName,FlowVersion,Params,EnableFlag) values( 1 , 'qinjia' , N'请假' , '1' , NULL , 1 )insert FlowStep(ID,StepID,FlowID,StepCode,StepName,IsJoin,Params,EnabeFlag) values( 1 , 1 , 1 , 'apply' , N'请假申请' , 0 , NULL , 1 ) insert FlowStep(ID,StepID,FlowID,StepCode,StepName,IsJoin,Params,EnabeFlag) values( 2 , 2 , 1 , 'parent' , N'上级审批' , 0 , NULL , 1 ) insert FlowStep(ID,StepID,FlowID,StepCode,StepName,IsJoin,Params,EnabeFlag) values( 4 , 3 , 1 , 'manager' , N'经理审批' , 1 , NULL , 1 ) insert FlowStep(ID,StepID,FlowID,StepCode,StepName,IsJoin,Params,EnabeFlag) values( 5 , 4 , 1 , 'hrconfirm' , N'HR确认' , 0 , NULL , 1 ) insert FlowAction(ID,ActionID,StepID,FlowID,ActionCode,ActionName,Params,EnableFlag) values( 1 , 1 , 1 , 1 , 'applysubmit' , N'申请提交' , NULL , 1 )insert FlowAction(ID,ActionID,StepID,FlowID,ActionCode,ActionName,Params,EnableFlag) values( 2 , 2 , 1 , 1 , 'applycancel' , N'申请取消' , NULL , 1 )insert FlowAction(ID,ActionID,StepID,FlowID,ActionCode,ActionName,Params,EnableFlag) values( 3 , 3 , 2 , 1 , 'parentsubmit' , N'上级提交' , NULL , 1 )insert FlowAction(ID,ActionID,StepID,FlowID,ActionCode,ActionName,Params,EnableFlag) values( 4 , 4 , 2 , 1 , 'parentreject' , N'上级驳回' , NULL , 1 )insert FlowAction(ID,ActionID,StepID,FlowID,ActionCode,ActionName,Params,EnableFlag) values( 5 , 5 , 2 , 1 , 'parentcancel' , N'上级取消' , NULL , 1 )insert FlowAction(ID,ActionID,StepID,FlowID,ActionCode,ActionName,Params,EnableFlag) values( 6 , 6 , 3 , 1 , 'managersubmit' , N'经理提交' , NULL , 1 )insert FlowAction(ID,ActionID,StepID,FlowID,ActionCode,ActionName,Params,EnableFlag) values( 7 , 7 , 3 , 1 , 'managercancel' , N'经理取消' , NULL , 1 )insert FlowAction(ID,ActionID,StepID,FlowID,ActionCode,ActionName,Params,EnableFlag) values( 10 , 8 , 4 , 1 , 'hrconfirmsubmit' , N'HR确认提交' , NULL , 1 )insert FlowAction(ID,ActionID,StepID,FlowID,ActionCode,ActionName,Params,EnableFlag) values( 11 , 9 , 4 , 1 , 'hrconfirmcancel' , N'HR确认取消' , NULL , 1 )4、发起⼀个流程exec usp_FlowStart 1,1,1,2,'2,3',null参数解释:@FlowID int,--流程模板编号@UserID int,--流程⽤户@ApplyUserID int,--流程申请⽤户@NextStepID int,--下⼀步骤@OwnerUserIDStr varchar(500),--多个下⼿审批⼈,以‘,’分隔@Data nvarchar(max) --表单数据,xml格式5、读⼀下任务信息查看应该可以看到FlowInstance⼀条数据,这是流程实例主表。

品质oba工作流程

品质oba工作流程Quality OBA (Out of Box Audit) is a critical component of ensuring that products meet high standards before they reach the hands of consumers. 品质OBA(开箱即检)是确保产品在到达消费者手中之前达到高标准的关键组成部分。

It involves a meticulous process of inspecting products for defects, ensuring they meet specifications, and providing feedback to manufacturers for continuous improvement. 这涉及对产品进行缜密的检查过程,确保其符合规格,并为制造商提供反馈以进行持续改进。

Implementing a quality OBA workflow requires a well-defined process, trained personnel, and effective communication channels. 实施品质OBA工作流程需要明确定义的流程、受过培训的人员和有效的沟通渠道。

Let's delve into the key aspects of a quality OBA workflow and explore how it can benefit both consumers and manufacturers. 让我们深入探讨品质OBA工作流程的关键方面,探讨它如何使消费者和制造商受益。

First and foremost, a quality OBA workflow begins with establishing clear inspection criteria and standards. 首先,品质OBA工作流程始于确立清晰的检查标准和规范。

泛微OA工作流WebService接口使用说明

泛微OA⼯作流WebService接⼝使⽤说明⼯作流W e b S e r v i c e接⼝使⽤说明⼀、检查部署是否成功:输⼊下⾯的地址(换成实际的地址):8060(实际的端⼝号)/services/,界⾯中有如下服务即可:采⽤Web Serverice技术进⾏协同系统和业务系统进⾏数据交互,由协同系统⽅开发实现Web Serverice服务,业务系统⽅需在本地实现Web Serverice本地代理来进⾏调⽤。

协同系统⽅需提供的服务接⼝如下:1、流程创建接⼝2、流程流转控制接⼝提供流程提交,退回和转发控制接⼝3、需业务系统处理的任务列表根据⽤户id和流程id获取该⼈员需要业务系统处理的任务列表,如果需要获取表单的数据在通过reqestid调⽤获取表单数据接⼝4、获取表单数据接⼝根据协同系统中流程主键requestid获取表单中所有数据5、已归档任务列表根据创建⼈id和流程id获取已经归档的任务列表接⼝对象说明:1)WorkflowRequestInfo ⼯作流请求信息/** * 请求ID*/private String requestId;* 请求标题*/private String requestName;* 请求重要级别*/private String requestLevel;/*** 短信提醒*/private String messageType;/*** 流程类型*/private WorkflowBaseInfo workflowBaseInfo; /** * 当前节点名称*/private String currentNodeName;/*** 当前节点Id*/private String currentNodeId;/*** 流程状态*/private String status;/*** 创建者*/private String creatorId;/*** 创建时间*/private String createTime;/*** 最后操作者名称*/private String lastOperatorName;* 最后操作时间*/private String lastOperateTime;/*** 是否可查看private boolean canView;/*** 是否可编辑*/private boolean canEdit;/*** 签字意见是否必填*/private boolean mustInputRemark;/*** 主表信息*/private WorkflowMainTableInfo workflowMainTableInfo;/*** 明细表信息*/private WorkflowDetailTableInfo[] workflowDetailTableInfos; /*** 流转⽇志信息*/private WorkflowRequestLog[] workflowRequestLogs;/*** HTML显⽰模板* 0 iPad* 1 iPhone*/private String[] WorkflowHtmlTemplete;/*** 解析后的HTML显⽰内容* 1 iPhone*/private String[] WorkflowHtmlShow;/*** 被代理⼈*/private String beagentid;/*** 流程短语*/private String[][] workflowPhrases;2)WorkflowBaseInfo ⼯作流信息/*** ⼯作流ID*/private String workflowId;/*** ⼯作流标题*/private String workflowName;/*** ⼯作流类型ID*/private String workflowTypeId;/*** ⼯作流类型名称*/private String workflowTypeName;根据实际的webservice客户端实现的客户端代码均不相同.以下仅供参考.1)创建流程/***创建流程,⽀持多明细,并且带附件字段--⽬前只⽀持⼀个附件,并且是(http格式的)* @throws Exception*/etFieldName("mutiresource");etFieldValue("111");etView(true);etEdit(true) ;etFieldName("remark");etFieldValue("test"); wrti[1].setView(true);wrti[1].setEdit(true);wrti[2] = new WorkflowRequestTableField();wrti[2].setFieldName("resource_n");etFieldValue("111");wrti[2].setView(true);wrti[2].setEdit(true);wrti[3] = new WorkflowRequestTableField();wrti[3].setFieldName("fj2");etFieldType("");etFieldValue();etView(true);wrti[3].setEdit(true);WorkflowRequestTableRecord[] wrtri = newWorkflowRequestTableRecord[1];etWorkflowRequestTableFields(wrti);WorkflowMainTableInfo wmi = new WorkflowMainTableInfo();(wrtri);etFieldName("sl");etFieldValue("11");wrti[0].setView(true);wrti[0].setEdit(true);wrti[1] = new WorkflowRequestTableField();wrti[1].setFieldName("dj");etFieldValue("2");wrti[1].setView(true);wrti[1].setEdit(true);wrti[2] = new WorkflowRequestTableField();wrti[2].setFieldName("xj");etFieldValue("22");wrti[2].setView(true);wrti[2].setEdit(true);wrtri[0] = new WorkflowRequestTableRecord();wrtri[0].setWorkflowRequestTableFields(wrti);etFieldName("sl");etFieldValue("110");wrti[0].setView(true);wrti[0].setEdit(true);wrti[1] = new WorkflowRequestTableField();wrti[1].setFieldName("dj");etFieldValue("2");wrti[1].setView(true);wrti[1].setEdit(true);wrti[2].setFieldName("xj");etFieldValue("220");wrti[2].setView(true);wrti[2].setEdit(true);wrtri[1] = new WorkflowRequestTableRecord();wrtri[1].setWorkflowRequestTableFields(wrti);wdti[0] = new WorkflowDetailTableInfo();wdti[0].setWorkflowRequestTableRecords(wrtri);etFieldName("cl3");etFieldV alue("11");wrti[0].setView(true);wrti[0].setEdit(true);wrti[1] = new WorkflowRequestTableField();wrti[1].setFieldName("cl1111");etFieldValue("2");wrti[1].setView(true);wrti[1].setEdit(true);wrtri[0] = new WorkflowRequestTableRecord();wrtri[0].setWorkflowRequestTableFields(wrti);wdti[1] = new WorkflowDetailTableInfo();wdti[1].setWorkflowRequestTableRecords(wrtri);//加⼊明细表2的数据//明细表2 endWorkflowBaseInfo wbi = new WorkflowBaseInfo();("5");//workflowid 5 代表内部留⾔WorkflowRequestInfo wri = new WorkflowRequestInfo();//流程基本信息("111");//创建⼈id("2");//0 正常,1重要,2紧急("留⾔测试接⼝");//流程标题(wmi);//添加主字段数据(wbi);(wdti);//执⾏创建流程接⼝WorkflowServicePortTypeProxy WorkflowServicePortTypeProxy = new WorkflowServicePortTypeProxy(); String requestid = (wri, 111);"requestid:"+requestid);。

ofbiz工作流

一、工作流引擎指南1、简介OFBiz工作流引擎基于WfMC和OMG规范(看相关文档可以了解这些规范的信息)。

它是服务框架的成员之一,与EntityEngine紧密集成。

工作流引擎把entitymodel_workflow.XML文件找到的实体用作定义信息,而把entitymode_workeffort文件找到的实体用作运行时刻存储。

一个流程或任务(activity)都是实时的。

因此,工作流引擎不是运行在一个线程上,而只是简单的一组API和通用对象在处理流程。

当工作流发生改变时,引擎马上就处理这个变化,处理结束后,引擎返回结果。

因此,当一个应用垮了(或系统重启),重启时工作流接着从停下的位置继续执行。

工作流引擎不是为一个web站点的处理流程而设计的。

这是一个普遍的错误概念。

web站点的流转由控制Servlet处理。

工作流是为了达到一个目标而进行的手动和自动任务(activitie)处理。

OFBiz工作流引擎把XPDL作为自己的流程定义语言。

这是一个开放的标准,十分灵活。

在XPDL规范没有明确或留给厂商实现的地方,我们在XPDL扩展节说明。

2、XPDL扩展工作流使用XPDL进行设计。

本文档不讨论XPDL细节,这些内容在WfMC有详细解释,请看相关文档。

在WfMC规范里,留了很多属性(attribute)给厂商使用。

下面是我们在使用的XPDL扩展:任务(ACTIVITY)扩充属性acceptAllAssignments-这个扩展属性告诉工作流引擎在一个任务开始之前的所有委派都必须接受。

当一个任务有多个参与者,并且要求在任务开始前每个参与者必须接受自己收到的委派时,本属性将会很有用。

(缺省值:NO)completeAllAssignments-类似于acceptAllAssignments属性,告诉工作流引擎在一个任务完成之前的必须完成所有的委派。

例如,在某个薪资任务中,要求所有的员工必须提交自己的时间表后才能进行下一步动作。

bom作业流程

bom作业流程BOM(Bill of Materials,物料清单)作业流程涵盖了从产品设计阶段到生产准备和执行的全过程,以下是简要的BOM作业流程:1. 创建产品结构:- 明确产品的各个组成部分,包括零部件、原材料及其层级关系。

- 在BOM管理系统中建立产品结构树,顶层是最终产品,下层列出所有构成该产品的各级零部件。

2. 录入BOM信息:- 输入每个零部件的信息,如料号、名称、规格、材料供应商、用量、单位、替代料信息等。

- 对于复杂产品,还需区分主用料和备用料(代用料)。

3. 审批与确认:- 完成BOM初始录入后,提交给相关部门审批,确保所有数据准确无误。

- 签署审批流程,可能涉及到设计部门、工程部门、采购部门和生产部门等。

4. 成本计算:- 根据物料成本、制造费用等数据计算产品标准成本,可能包括BOM07标准成本计算流程。

5. BOM变更管理:- 当产品设计变更或物料供应发生变化时,需更新BOM,并发起工程变更单(ECO)。

- 在PLM(产品生命周期管理)系统中修改BOM清单,并关联对应的工程更改单。

6. 系统集成与发布:- 将确认的BOM数据集成到ERP(企业资源计划)系统中,确保生产、采购等部门可以获取最新的物料需求。

- 发布生效后的BOM,以便生产线上根据清单进行物料准备和装配活动。

7. 归档与维护:- 完成上述所有步骤后,将BOM及相关审批文档妥善存档,便于后期追溯和审计。

- 对BOM进行周期性审查和维护,确保其始终反映产品的最新状态。

整个BOM作业流程旨在确保产品制造过程中的物料供应准确无误,有效控制成本,并加快新产品上市速度。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档