ImageVerifierCode 换一换
格式:DOCX , 页数:14 ,大小:17.92KB ,
资源ID:8290753      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-8290753.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(简单 C Sharp工作流的实现Word格式.docx)为本站会员(b****3)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

简单 C Sharp工作流的实现Word格式.docx

1、url的设计是由INFOPATH联想到的,微软sharepoint2007可以通过为每个工作流活动指定相应的编辑表单,可以是网页也可以infopath 设计的表单,这样的好处是让工作流的不同活动具有不同的用户界面,sharepoint2007可以在feature.xml里设置,而我这就使用url字段记录一个网页链接,不同工作流活动对应不同的网页。seq是每个工作流运行的顺序,从零开始,依次为0、1、2、3.,这个字段正是为了设置工作流的运行顺序,并行的工作流活动可以设置成相同的运行顺序。可能有人会问怎么标识工作流活动已经完成呢,这个标识正是由statusBit状态位来实现的,每个申请表中都含有

2、一个status字段,这个字段默认为50个0组成的字符串,status字段是为了记录当前申请表哪些工作流活动完成了,1为完成0为未完成,statusBit状态位正是将工作流活动与申请表中的状态联系起来,也许有些朋友会认为让系统自动分配好更好,第一个工作流活动联系第一位状态,第二个工作流活动联系第二位状态,等等。我这么做的好处是考虑到可能会有多个工作流活动只需完成其中一个活动就情况,就像逻辑判断中的“或”一样,在这种情况我们只需将多个工作流活动状态位设置成一样就可以达到目的了。光说而没有实例可能有些朋友不太明白,下面我以项目中工作流流程为例:本系统的流程是这样的(不好意思,linux 下画的图效

3、果没visio好):由流程图得出各工作流实例如下:ID NAME URL SEQ STATUSBIT1 申请人提交申请表 user_main.aspx 0 12 各部门审查 depart_check.aspx 1 23 科技处审查 check_main.aspx 2 34 教务处审查 check_main.aspx 2 45 研究生院审查 check_main.aspx 2 56 人事科审查 check_main.aspx 2 67 人事处审查 recheck.aspx 3 78 专家评议 expert_main.aspx 4 89 完成聘用 null 5 9想必由以上实例应该很容易看出流程图

4、了,看到这应该明白了吧下面是我的工作流类的c#实现:Using System;Using System.Web;Using System.Web.Services;Using System.Web.Services.Protocols;Using System.ComponentModel;Using System.Data;Using System.Data.SqlClient;Using System.Collections.Generic;/工作流类/summaryPublic class WorkflowPrivate int _id;/工作流编号Public int Idgetret

5、urn _id;set_id=value;Private string _name;/工作流名字Public string Namegetreturn _name;set_name=value;Private string _url;/工作流使用网页Public string Urlgetreturn _url;set_url=value;Private int _seq;/工作流运行序号Public int Seqgetreturn _seq;set_seq=value;Private int_statusBit;/状态位Public int StatusBitgetreturn _stat

6、usBit;set_statusBit=value;Public Workflow()Public Workflow (int id,string name,string url,int seq,intstatusBit)this.Id=id;this.Name=name;this.Url=url;this.Seq=seq;this.StatusBit=statusBit;Public Workflow (SqlDataReader dr)this.Id=Convert.ToInt32(drid);this.Name=drname.ToString();this.Url=drurlthis.S

7、eq=Convert.ToInt32(drseqthis.StatusBit=Convert.ToInt32(drstatusBitPublic int Add()stringprocName=pr_AddWorkflow;SqlParameterprams=newSqlParameter(name,SqlDbType.NVarChar,50),newurl,SqlDbType.NVarChar,500),seq,SqlDbType.Int),statusbit,SqlDbType.Int);prams0.Value=Name;prams1.Value=Url;prams2.Value=Seq

8、;prams3.Value=StatusBit;return Database.runExecute(procName,prams);Public int Delete()String procName=pr_DeleteWorkflowid,SqlDbType.BigInt);prams0.Value=Id;Public int Update()pr_UpdateWorkflow,SqlDbType.BigInt),prams1.Value=Name;prams2.Value=Url;prams3.Value=Seq;prams4.Value=StatusBit;/根据工作流编号获得工作流信

9、息paramname=工作流编号returns工作流信息Public static Workflow GetWorkflowById(int id)Workflow wl=new Workflow();pr_GetWorkflowByIdSqlParameter prams=newIdprams0.Value=id;SqlDataReaderdr=Database.runProcGetReader(procName,prams);while(dr.Read()wl=new Workflow(dr);dr.Close();return wl;/根据工作流编号获得工作流网页地址paramRealN

10、ame=workflowId工作流网页地址Public staticstringGetWorkflowUrlById(intworkflowId)pr_GetWorkflowUrlByIdworkflowId,SqlDbType.NVarChar,500);prams0.Value=workflowId;prams1.Direction=ParameterDirection.Output;Database.runExecute(procName,prams);returnprams1.Value.ToString();/返回工作流个数工作流个数Public staticint GetWorkf

11、lowNum()pr_GetWorkflowNumnumprams0.Direction=ParameterDirection.Output;Return Convert.ToInt32(prams0.Value);/设置申请表的工作流完成状态reportId申请表编号status完成状态Public static int SetActivityStatus(intreportId,intworkflowId,boolstatus)pr_SetActivityStatusreportIdstatus,SqlDbType.Bit);prams0.Value=reportId;prams1.Val

12、ue=workflowId;prams2.Value=status;returnDatabase.runExecute(procName,prams);/获得申请表的工作流完成状态publicstaticboolGetActivityStatus(intreportId,intworkflowId)pr_GetActivityStatusprams2.Direction=ParameterDirection.Output;Return Convert.ToBoolean(prams2.Value);/获得工作流中当前活动的下一批运行活动当前活动编号下一批运行活动Public staticLis

13、t GetNextWorkflow(int workflowId)Listworkflows=newList();pr_GetNextWorkflowWorkflowwf=newWorkflow(dr);workflows.Add(wf);returnworkflows;/获得工作流中当前活动的上一批运行活动上一批运行活动 GetPreviousWorkflow(int workflowId)pr_GetPreviousWorkflow/判断申请表进行的上一批工作流是否完成publicstaticboolIsPreviousWorkflowFinished(intworkflowId,intr

14、eportId)boolflag=true;workflows=GetPreviousWorkflow(workflowId);foreach(Workflowwfinworkflows)stringstatus=Reports.GetCurrentStatusById(reportId);if(status.Substring(wf.StatusBit-1,1)=0)flag=false;break;returnflag;/判断申请表进行的下一批工作流是否开始publicstaticboolIsNextWorkflowStarted(intworkflowId,intreportId)boo

15、lflag=false;workflows=GetNextWorkflow(workflowId);1flag=true;/获得工作流中第一个活动第一个活动publicstaticWorkflowGetFirstActivity()Workflowwf=newWorkflow();pr_GetFirstActivitySqlDataReaderdr=Database.runProcGetReader(procName);wf=newWorkflow(dr);returnwf;/获得工作流中最后一个活动最后一个活动/获得所有工作流活动GetAllWorkflow() workflows=newListpr_GetAllWorkflowsworkflows.Add(newWorkflow(dr);/按运行顺序排序接口Public classI SortWorkflows:IComparerPublic int Compare(Workflowx,Workflowy)if(x.Seqy.Seq) return 1;else return 0;

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2