移动审批工作流设计与实现

在企业中,大部分重要的业务需要进行审批,由于具有决定权的领导者事务繁忙或者受环境或低于限制,没法通过互联网进行工作处理。

移动审批,通过手机方便快捷地登陆企业内部网及互联网,即使处于无线的状态下,也能进行远程办公,以此来提高对于突发事件的反应能力,提升企业竞争力。

    这篇文章我将使用iPhone作为移动终端进行设计与实现,iPhone引入了基于大型多触点显示屏和领先性新软件的全新用户界面,让用户用手指即可控制iPhone。iPhone还开创了移动设备软件尖端功能的新纪元,重新定义了移动电话的功能。iPhone开发中,除了比较复杂的游戏开发,还有一种就是跟数据库打交道的应用程序,这可以在本文中得到体现。

   WF4.0是微软提供的一套工作流开发框架,里面包含:流程设计器,各种类型封装好的工作流活动,持久化服务,WCF服务等功能。这篇文章我将结合iPhone+WF4.0实现移动审批工作流。通过一个简单的例子你可以清楚的看到与数据库相关的iPhone应用程序的开发,以及使用iPhone+WCF+WF实现移动审批的各种关键技术的使用。

   设计架构图:由于是使用了WCF的restful服务,所以其它手机平台也会很方便使用此工作流服务。

   iPhone客户端的表单可以通过从服务端设计的表单结构的XML动态产生。

   下面通过一个简单的请假流程说明如何实现:

  用例流程图:

   上面的流程大致为:申请人在iPhone上打开请假流程,填写姓名和请假天数,点击提交,这个流程将走到他的上级,上级进行审批,并将审批结果通过短信知道申请者。

参考上图,通过WF4.0设计器设计一个流程,如下图:

下面我使用WCF将此流程封装到restful服务中。

wcf restful服务设计如下:

[ServiceContract]
public interface IRestServiceImpl
{
/// <summary>
/// 获取未审核列表
/// </summary>
/// <returns></returns>
[OperationContract]
[WebInvoke(Method
= " GET " ,
ResponseFormat
= WebMessageFormat.Json,
BodyStyle
= WebMessageBodyStyle.Wrapped,
UriTemplate
= " getleavelist " )]
List
< Leave > GetLeaveList();
/// <summary>
/// 启动流程
/// </summary>
/// <param name="name"></param>
/// <param name="day"></param>
/// <returns></returns>
[OperationContract]
[WebInvoke(Method
= " POST " ,
ResponseFormat
= WebMessageFormat.Xml,
BodyStyle
= WebMessageBodyStyle.Wrapped,
UriTemplate
= " createleave/{name}/{day} " )]
string CreateLSeave( string name, string day);

/// <summary>
/// 审批流程
/// </summary>
/// <param name="id"></param>
/// <param name="comment"></param>
/// <returns></returns>
[OperationContract]
[WebInvoke(Method
= " POST " ,
ResponseFormat
= WebMessageFormat.Xml,
BodyStyle
= WebMessageBodyStyle.Wrapped,
UriTemplate
= " auditingleave/{id}/{comment} " )]
string AuditingLeave( string id, string comment);
}

数据库设计:

1、WF持久化数据表:使用WF自带的数据表。

 

2、业务数据表:请假单,设计如下:

WF流程启动和运行代码:

public class WorkFlowProcess
{
static string constring = " Data Source=PC-ZHUQL\\ZHUQL;Initial Catalog=TestDB;Integrated Security=True;Pooling=False " ;
static AutoResetEvent instanceUnloaded = new AutoResetEvent( false );

static Hashtable InstanceHashtable = new Hashtable();

public static string RunInstance(Guid ID, string Comment)
{
SqlWorkflowInstanceStore instanceStore
= new SqlWorkflowInstanceStore(constring);
WorkflowApplication application1
= new WorkflowApplication( new LeaveProcess());
application1.InstanceStore
= instanceStore;
application1.Completed
= (workflowApplicationCompletedEventArgs) =>
{
Console.WriteLine(
" \nWorkflowApplication has Completed in the {0} state. " , workflowApplicationCompletedEventArgs.CompletionState);
};
application1.Unloaded
= (workflowApplicationEventArgs) =>
{
Console.WriteLine(
" WorkflowApplication has Unloaded\n " );
instanceUnloaded.Set();
};
application1.Load(ID);
application1.ResumeBookmark(
" Check " , Comment);
instanceUnloaded.WaitOne();
return " success " ;
}

// creates a workflow application, binds parameters, links extensions and run it
public static string CreateAndRun( string LeaveName, int LeaveDay)
{
SqlWorkflowInstanceStore instanceStore
= new SqlWorkflowInstanceStore(constring);

InstanceView view
= instanceStore.Execute(instanceStore.CreateInstanceHandle(), new CreateWorkflowOwnerCommand(), TimeSpan.FromSeconds( 30 ));

instanceStore.DefaultInstanceOwner
= view.InstanceOwner;

IDictionary
< string , object > input = new Dictionary < string , object >
{
{
" LeaveName " , LeaveName },
{
" LeaveDay " , LeaveDay }
};

WorkflowApplication application
= new WorkflowApplication( new LeaveProcess(), input);

application.InstanceStore
= instanceStore;

application.PersistableIdle
= (e) =>
{
instanceUnloaded.Set();
return PersistableIdleAction.Unload;

};

application.Unloaded
= (e) =>
{

instanceUnloaded.Set();

};
application.OnUnhandledException
= (ex) =>
{
Console.Write(
" Exception " );
return UnhandledExceptionAction.Terminate;
};
Guid id
= application.Id;
application.Run();
instanceUnloaded.WaitOne();
return " success " ;
}

// executed when instance is persisted
public static void OnWorkflowCompleted(WorkflowApplicationCompletedEventArgs e)
{
}

// executed when instance goes idle
public static void OnIdle(WorkflowApplicationIdleEventArgs e)
{
}

public static PersistableIdleAction OnIdleAndPersistable(WorkflowApplicationIdleEventArgs e)
{
return PersistableIdleAction.Persist;
}
}

iPhone客户端调用:

在前一篇文章:iPhone中调用WCF RESTFUL Service,讲解了iPhone中如何调用WCF restful服务,下面用启动流程为例说明:

- (IBAction) btnSender:(id)sender
{
NSString
* urlString = @" http://10.5.23.117:8008/RestServiceImpl.svc/createleave/%@/%@ " ;
NSURL
* url = [NSURL URLWithString:[NSString stringWithFormat:urlString,txtName.text,txtDay.text]];
ASIHTTPRequest
* request = [ASIHTTPRequest requestWithURL:url];
[request setRequestMethod:
@" POST " ];
[request startSynchronous];
NSError
* error = [request error];
if ( ! error) {
NSString
* response = [request responseString];
UIAlertView
* alertView = [[UIAlertView alloc] initWithTitle: @" 杩斿洖缁撴灉 "
message:
@" 鎻愪氦鎴愬姛 "
delegate :nil
cancelButtonTitle:
@" OK "
otherButtonTitles:nil];
[alertView show];
[alertView release];
}
}

iPhone界面设计:

1、启动流程界面:

2、填写表单信息:

3、启动流程

4、待审核列表:

5、审核界面:

6、审核结果:

这里是个简单的demo,界面非常的简陋。

总结:本文通过一个简单的用例来说明了移动审批流程的各个层面的各种技术的实现。使用这些技术实现一个工作流服务以及工作流客户端界面将非常简单。

代码:http://files.cnblogs.com/zhuqil/RestService.rar

http://files.cnblogs.com/zhuqil/iPhoneView.zip



(全文完)


以下为广告部分

您部署的HTTPS网站安全吗?

如果您想看下您的网站HTTPS部署的是否安全,花1分钟时间来 myssl.com 检测以下吧。让您的HTTPS网站变得更安全!

SSL检测评估

快速了解HTTPS网站安全情况。

安全评级(A+、A、A-...)、行业合规检测、证书信息查看、证书链信息以及补完、服务器套件信息、证书兼容性检测等。

SSL证书工具

安装部署SSL证书变得更方便。

SSL证书内容查看、SSL证书格式转换、CSR在线生成、SSL私钥加解密、CAA检测等。

SSL漏洞检测

让服务器远离SSL证书漏洞侵扰

TLS ROBOT漏洞检测、心血漏洞检测、FREAK Attack漏洞检测、SSL Poodle漏洞检测、CCS注入漏洞检测。

转载于:https://www.cnblogs.com/zhuqil/archive/2011/05/07/2039983.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
本程序结合了OA办公系统+HR人力资源管理系统+CRM客户关系管理系统集合而成。我们把程序设计信息化应用分为三个方面的内容:通用办公应用、业务管理和决策支持。采用现代最新技术,建立一种新概念的、开放的现代管理和办公环境,它以TCP/IP、广域网互连、路由、防火墙和网络管理技术为核心,建立一个安全可靠的网络应用平台。利用最新的ASP.NET平台、javascript和AJAX、SQLSERVER关系型数据库等技术,结合OA思想的独特设计,建立一个开放的信息资源管理平台。 利用数据库及分布式处理技术、模块化功能设计,构造信息存储与事务处理平台。该智能办公平台结合了广大机构的信息需求所研发,适用于全部的政府和企业的信息办公需要。程序具体商业价值型,同时也是完全的开源,可以供下载者研究和进行二次的开发均可。该智能办公平台具有如下几大特色亮点: 亮点一:office文档在线编辑。 两点二:动态生成各类报表。 亮点三:工作流优化,方便新建任意格式审批单。 亮点四:功能授权于数据授权并用,可对多部门,多人员进行进行交叉授权。 亮点五:提供“智能窗体”向导,可任您快速且自由地制作多功能的网页办公系统。 亮点六:自定义工作流程,系统所有参数可自定义配置,支持多分公司、多部门架构。 亮点七:系统基于B/S结构,客户端零管理,避免了C/S系统维护的烦琐,降低维护成本。 亮点八:细分的权限管理,可满足用户不同的权限管理要求。 亮点九:灵活的配置,可方便自定义工作表单、环节和流程。 亮点十:良好的系统开放性和可扩展性,为企业轻松架构Internet应用。 政 府、企事业单位的信息化建设是一个集办公自动化、业务管理、领导决策等应用为一体综合信息管理系统,是一个应用覆盖面广泛,涉及部门多的应用系统。财务、 人事、或业务管理系统往往只是涉及一个部门,或者一部分人员使用的业务管理系统。而整个单位的信息化涉及各个部门和各项业务,使用人员包括单位的最高级领 导、管理部门和全体员工。因此,政府和企业的信息化是一个涉及面广泛的综合信息管理系统。该OA办公程序是一套通用的信息管理平台,平台主要包含八个主要部分:个人事务、工作流程、公共事务、信息交流、人力资源、销售管理、附件程序和系统管理。 个人事务:主要是与个人办公、通讯、考勤、会议等等相关内容的整合。 工作流程:涉及个人的网络公章管理及使用记录,各种表单的定制、类别管理,工作流的管理及工作管理。 公共事务:涉及工作计划、办公用品的管理、会议、车辆以及固定资产的管理。 信息交流:用于建立公司企业内部的交流平台及短信发送。 人力资源:对公司人员的信息档案有一定的管理,涵盖了人事档案、考勤批示、统计、薪资管理、培训记录及奖惩记录等等。 销售管理:大致分为客户方面的管理、产品方面管理以及销售方面管理的综合业务管理。 附件管理:提供常用的日历、世界时间查询、常用网址的保存(便于一键打开特定的地址)、全国各个省、县、市的邮政编码和电话区号。 系统管理:用于规划本单位信息系统的结构、内容、印章、公告、红头文件的管理。按照组织机构、业务分类、功能需要设计信息系统的菜单,按照用户所属的部门、角色、职位、管理范围进行管理和权限指派。其中主要的功能模块和说明如下解释: 个人办公: 内部邮件---系统内部的信息交流、文件交流、信息提醒等 Internet邮件---接口外部邮箱,采用pop3和smtp协议代收代发 单位公告通知---管理公告通知、新闻等信息,可选定特定部门发送 投票---内部信息投票,每个用户拥有一次投票权利 手机短信---发送内部或者外部的手机短信消息,用于提醒等 日程安排---个人日程以日历形式重点体现,到期自动提醒 工作日志---工作过程中的记录以及工作日志等 通讯簿 --- 包含各种分类,主要用于联系使用 个人设置 --- 设置个人参数、邮箱参数、提醒参数、修改密码等 审批流程: 新建工作---新建新的审批工作流,选定需要的工作新建即可 我的工作--- 个人发起的所有工作,包括已审批、未审批的所有工作 待办工作---需要当前用户进行办理或者审批的工作列表 已办工作---当前用户已经办理过的各项工作,包含历史工作 工作查询---查询系统中工作的信息,全面检索 工作监控---管理员监控运行,发现问题,可强制干预 归档工作---已办理完成的工作,自动进行归档 工作委托 --- 当前用户指定办理人,所有待办事项自动提交到委托人办理 流程设置 --- 自定义流程、自定义表单、表单各个字段在流程中权限控制 印章管理 --- 管理公章与私章,查看印章的各项使用日志等 公文收发: 接收文件--- 需要接受的文件,未签收时有颜色标注 传阅文件 --- 传阅发送出去文件 接收分类 --- 按照指定文件夹分类查看 传阅分类 --- 传阅文件夹个人分类查看 工作管理: 我的计划---个人工作计划,可共享给其他指定用户协同查看 协同计划--- 其他用户协同共享查看的工作计划信息 我的汇报---个人工作汇报,可共享给其他指定用户协同查看 协同汇报---其他用户协同共享查看的工作汇报信息 下属任务: 我的任务 --- 个人接收到的各项任务,提交工作任务报告 任务分配--- 对下属用户分派工作任务,实时监控任务情况 下属日程 --- 下属员工的日程安排信息 下属日志 --- 下属员工的工作日志信息 下属计划--- 下属员工的工作计划信息 下属汇报 --- 下属员工的工作汇报信息 下属邮件 --- 下属员工的内部邮件信息 下属客户--- 下属员工的客户资料信息 知识文档: 个人文件 --- 类同与网络硬盘、个人文件柜存储等文件存储类 单位文件 --- 单位各类文件存储区 项目文件 --- 项目实施、进度、评审等文件存储类 电子刊物 --- 电子刊物等文件存储类 重要文件 --- 特别重要的文件额外存储类 机密文件 --- 机密文件存储类 知识库 --- 各项知识库、技术资料、学习资料、单位规范等 技术文件 --- 技术类文件存储 共享文件 --- 查看各类共享的文件资料 回收站 --- 删除的文件,可恢复或者彻底删除 扩展应用: 资产管理--- 管理固定资产、仪器、办公用品等 培训管理--- 管理培训信息 会议管理 --- 各项会议会议、上传会议记录 车辆管理 --- 车辆信息、使用、维修、保险、加油等 图书管理 --- 图书信息、借阅、归还等 档案卷库 --- 各类档案分卷库保存、销毁 考试管理 --- 在线考试、可分题库、题目类型、试卷制定、自动评分等 学习管理--- 在线学习、学习心得、领导批注等 客户管理: 会员管理 --- 会员信息管理,即为个人类别的客户 我的客户 --- 个人客户资料、联系记录、需求等 客户管理 --- 管理所有客户资料,联系人、联系记录、需求计划等 进销存类: 产品管理--- 产品管理、库存列表显示、库存报警等 销售管理 --- 销售合同、产品销售出库、利润等 采购管理 --- 采购合同、产品采购入库等 供应商管理 --- 管理各个供应商、供应商联系人 项目管理: 项目信息 --- 项目各项信息、状态等 评审信息 --- 评审记录 项目进度--- 项目具体进度安排、时间进度 收款信息 --- 收款具体情况,按照项目分类 项目实施 --- 项目的具体实施情况 报销申请 --- 项目类单独报销,也可使用审批流程中的自定义流程 报销管理 --- 审批报销记录,复杂流程可使用审批流程 项目利润 --- 核算具体利润情况 数据统计 --- 数据各项统计 人力资源: 考勤管理 --- 考勤记录、考勤设置、查询、统计等 人事档案--- 人事基本资料维护 人事合同--- 合同管理情况 奖惩记录 --- 奖惩各类记录管理 奖惩制度 --- 各类具体制度安排、单位规章制度等。 应聘简历 --- 简历管理,建立单位人才库 面试管理 --- 具体面试情况管理 绩效考核 --- 绩效考核数据上报等 绩效参数 --- 绩效各项参数的设置 薪酬管理--- 薪酬各类数据管理 薪酬参数 --- 各个参数设置 报表中心: 报表分类--- 报表分类设置,根据需要可分多个类别 报表管理--- 动态定制报表、动态数据抓取。报表可自定义。 信息交流: 论坛BBS---论坛各个信息、帖子发帖信息 版块设置 --- 版块具体设置 内部聊天室 --- 各个聊天室进入后可自由聊天 聊天室设置 ---聊天室的基本设置 组织机构: 单位信息查询 --- 查询单位基本信息 部门信息查询 --- 查询部门信息 用户信息查询 --- 查询用户个人信息 附件程序: 电话区号查询--- 电话区号查询 邮政编码查询---邮政编码查询,超级链接到网址 列车时刻查询 --- 链接到列车时刻查询网址 公交线路查询 --- 公交线路查询 法律法规查询 --- 法律法规各项资料超级链接查询 休闲游戏 --- 链接到游戏网 万年历--- 日历基本信息 世界时钟 --- 时间查询 常用网址---常用的网站
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值