python 工作流workflow_Workflow笔记1——工作流介绍

本文介绍了工作流的基本概念,包括工作流和业务流程管理(BPM),并详细讲解了如何使用Windows Workflow Foundation(WWF)进行工作流开发。通过创建一个简单的控制台应用程序,演示了如何使用WF创建顺序工作流,以及如何自定义代码活动和流程图工作流,特别是在财务审批流程中的应用。
部署运行你感兴趣的模型镜像

什么是工作流?

工作流(Workflow),是对工作流程及其各操作步骤之间业务规则的抽象、概括、描述。

BPM:是Business Process Management的英文字母缩写.即业务流程管理,是一套达成企业各种业务环节整合的全面管理模式。

工作流软件,顾名思义,就是业务信息数据在多个环节模块之间的流转。

企业内部业务种类非常多、变化也非常多。虽然业务变化非常多,但是流程的控制基本是不变的。我们常说的工作流或者是“流程”就是指 控制流程流转的核心引擎。

市面常见的工作流开发框架如下所示。

Windows Workflow Foundation

Windows Workflow Foundation(以下简称WWF)提供了一个编程框架和工具以开发和执行各种不同的基于工作流的应用程序,比如文档管理、线型的商业应用、贸易单据流程、IT管理、B2B应用以及消费者应用。

WF(Windows Workflow Foundation)是微软的工作流基础组件。它是DotNet Framework中提供基于模型或者是声明方式的流程执行引擎。

WF由DotNet Framework3.0一起发布。而且已经被应用与微软的Sharepoint技术中。

WF包括3个核心组件:

活动框架

工作流活动运行时环境

工作流设计器

第一个工作流项目

1、打开VS新建一个解决方案,在解决方案中新建项目——WorkFlow——工作流控制台应用程序,命名为WorkflowConsoleApp

2、视图——工具箱,添加WriteLine基元

WriteLine Activity:用于输出一段字符串。

再添加一个WriteLine基元

会自动将这两个基元包装在一个Sequence序列容器里面,然后执行顺序从上至下。当然也我们可以先添加一个Sequence序列容器,然后再往这个容器里面添加基元。

顺序工作流

顺序工作流就是将顺序工作流容器中的所有动作按照顺序往下执行。

顺序容器Sequence:是在System.Activities.dll中定义的类型,继承 NativeActivity是一个 sealed类。

  1.[Activities]集合,可以存放Activity

  2.[Activities]集合中的Activity按顺序从上向下执行

  3.[Variables]集合用于存放变量

3、我们来看Program.cs中的代码如下:

Activity workflow1 = newWorkflow1();

WorkflowInvoker.Invoke(workflow1);

这里就是工作流的启动方式。WorkflowInvoker 包含同步调用工作流的实例方法和静态方法。

为了更好的查看运行效果,添加如下代码:

Console.ReadLine();

4、按F5运行

WF入门之活动

Activity在WF中是一个最基本的概念,当谈及Activity时,通常是指如下两个概念:

Activty Class 。

在工作流中任意Activity派生类的统称。

活动也就是流程中的步骤如果下图

流程图工作流

流程图工作流:就是将工作节点按照流程图规定的顺序进行流动的工作流。

流程图工作流跟顺序工作流的区别:顺序工作流只能从上往下执行,而流程图工作流可以按照流程图规定的顺序进行流程的流转。

这里,我们新建一个财务审批流程。

1、  新建活动

右键单击项目WorkflowConsoleApp,添加“新建项”,选择活动,命名为MoneyApproveActivity.xaml

2、  添加流程

修改名称为”财务审批流程”。

3、  添加两个WriteLine基元

4、  添加代码活动

CodeActivity 代码活动

WF4.0 提供了许多Activity,但有时这些Activtiy并不能完成具体功能,如向数据库添加数据,发送电子邮件等.在实现这些具体功能时,我们仍要使用某种编程语言,如C#.当我们需要这种功能时,可以使用 CodeActivity。

它是一个抽向类,继承该类后,需要override该类的Execute方法,用于编写自定义的功能代码

右键单击项目WorkflowConsoleApp,添加“新建项”,选择“代码活动”,然后命名为InputMoneyCodeActivity.cs

这个时候,我们看见默认的代码如下:

public sealed classInputMoneyCodeActivity : CodeActivity

{//定义一个字符串类型的活动输入参数

public InArgument Text { get; set; }//如果活动返回值,则从 CodeActivity//派生并从 Execute 方法返回该值。

protected override voidExecute(CodeActivityContext context)

{//获取 Text 输入参数的运行时值

string text = context.GetValue(this.Text);

}

}

这里,我需要修改一下代码,因为我要的并不是输入参数,而是要输出一个金额给到当前这个流程,然后再根据这个金额的大小来判断流程的走向。

工作流中的数据的传递

Variable变量:跟C#一样可以再整个工作流或者是其中的一个Activity中添加一个变量。可以通过可视化的控制:变量的类型、作用域、默认值等 。

Assign 赋值。可以对流程内定义的参数,变量赋值。

Arguments 参数:Activity中传入的参数或者是传出的参数。

  In参数:System.Activities.InArgument传入参数,可以在流程启动的时候传入参数的值。只能用于数据传入流程节点内部。

  Out参数:System.Activities.OutArgument。用于将流程节点内部的数据传递到外部的变量或者其他流程的传入参数。

  In/Out参数:System.Activities.InOutArgument。即用于传入也用于传出。

5、  修改代码如下:

public sealed classInputMoneyCodeActivity : CodeActivity

{//定义一个字符串类型的活动输入参数//public InArgument Text { get; set; }//定义一个Int类型的输出参数

public OutArgument Money { get; set; }//如果活动返回值,则从 CodeActivity//派生并从 Execute 方法返回该值。

protected override voidExecute(CodeActivityContext context)

{//获取 Text 输入参数的运行时值//string text = context.GetValue(this.Text);

intmoney;var v =Console.ReadLine();int.TryParse(v,outmoney);

context.SetValue(Money, money);

}

}

6、  生成项目WorkflowConsoleApp

7、  回到MoneyApproveActivity.xaml页面

会发现工具箱中多了一个组件InputMoneyCodeActivity,将其拖放到MoneyApproveActivity.xaml界面中。

8、  重命名,双击InputMoneyCodeActivity组件,修改名称为“获取输入金额”。

9、添加变量,用于接收InputMoneyCodeActivity代码活动中的输出参数的值,这样在整个流程中才能够访问到这个接收的金额。

右键单击活动代码“获取输入金额”,选择“属性”,将Money的值赋值给全局变量GetMoney。

10、 添加WriteLine基元,流转到“经理审批”

11、添加条件分支

添加条件,让500作为一个判断条件,分为大于500为True和小于等于500为False。

12、添加两个WriteLine基元,当条件为True和False各执行一个基元。

13、  将MoneyApproveActivity活动设为启动项。

修改Program代码如下:

//Activity workflow1 = new Workflow1();

Activity workflow1 = newMoneyApproveActivity();

WorkflowInvoker.Invoke(workflow1);

Console.ReadLine();

14、运行结果如下:

您可能感兴趣的与本文相关的镜像

Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

### 关于 RuoYi-Vue-Plus 工作流学习教程 #### 了解基础架构 RuoYi-Vue-Plus 是一个基于 Spring Boot 和 Vue 技术栈构建的前后端分离权限管理系统,集成了 Flowable 流程引擎来实现复杂的工作流管理功能[^1]。为了更好地掌握这一工具,建议先熟悉其底层技术框架以及所依赖的基础组件。 #### 掌握核心概念 初次接触者应从简单流程的设计开始,逐步理解 Flowable 的基本原理及其核心概念,比如事件、网关、任务和服务任务等。这有助于建立对整个系统的直观认识,并为进一步探索打下坚实的基础。 #### 使用示例项目入门 通过研究官方提供的示例工程可以加速上手过程。这些例子通常涵盖了常见的业务逻辑和应用场景,能够帮助开发者快速理解和实践如何将 Flowable 融入到 Ruoyi 框架之中[^2]。 #### 学习 BPMN 2.0 定义语言 对于希望自定义特定工作流需求的企业来说,深入了解并熟练运用 BPMN 2.0 这种标准化的工作流描述方式至关重要。BPMN 不仅能清晰表达复杂的业务规则,还便于团队成员之间的沟通协作。 #### 参考扩展版特性 相较于标准版本,KonBAI/RuoYi-Flowable-Plus 提供了许多额外的功能改进和支持,例如在线表单设计器、增强型工作流编辑器等。这些都是提高效率不可或缺的部分,在实际应用中有很大价值。 ```python from ruoyi_flowable_plus import WorkflowDesigner, FormBuilder def create_custom_workflow(): designer = WorkflowDesigner() form_builder = FormBuilder() # 设计新的工作流模型 workflow_model = designer.create_model('审批流程') # 构建关联表单 approval_form = form_builder.build({ 'title': '请假申请', 'fields': [ {'name': '申请人', 'type': 'text'}, {'name': '起始日期', 'type': 'date'} ] }) return { "workflow": workflow_model, "form": approval_form } ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值