Process(流程)是为实现特定业务目标而设计的步骤集合,通过提供服务或产品,为客户创造价值。每个流程由一系列有序的活动组成,这些活动共同完成一个整体目标,旨在提升效率、优化决策,并促进跨团队协作。
在MicrosoftSemanticKernel框架中,ProcessFramework是一种强大的自动化解决方案,用于管理复杂工作流。该框架通过调用用户定义的KernelFunctions,将AI无缝嵌入业务流程,与现有系统和代码紧密集成,显著增强工作流的灵活性和智能化。
该框架采用事件驱动模型,管理流程执行。每个步骤明确定义输入和输出,支持事件与元数据的触发机制,确保高效流转。同时,通过模块化设计,流程和步骤可以跨应用重用,支持扩展性。框架还通过开放遥测(OpenTelemetry)实现流程的全面控制与可审计性,确保透明性与可靠性。
关键概念包括:
Process(流程)
:实现特定客户目标的任务集合。
Step(步骤)
:流程中的基本活动,具有明确输入与输出。
Pattern(模式)
:定义步骤的执行顺序,确保流程完整运行。
通过ProcessFramework,企业能够构建智能、响应迅速的工作流,大幅提升生产力和运营效率,实现业务流程的现代化与智能化。
下面是一个正向的用Mermaid组织的行程流程:
```MermaidflowchartA[Start]--B[提取用户信息]B--C{预订机票}C--是--D{预订酒店}C--否--E[发邮件提醒]D--F{预订用车}D--G[发邮件提醒]F--是--H[生成行程单]F--否--I[发邮件提醒]H--I[订单完成]I--J[]```具体图像如下:

如果用SK的Process实现如下:
#pragmawarningdisableSKEXP0080;;;;;varprocess=newProcessBuilder("Trip");vargetCustomerStep=();vartripAirStep=();vartripHotelStep=();vartripCarStep=();varmailServiceStep=();vartripCompleteStep=();varstopProcessStep=();().SEventTo(newProcessFunctionTargetBuilder(getCustomerStep,));getCustomerStep.OnEvent().SEventTo(newProcessFunctionTargetBuilder(tripAirStep,,parameterName:"customer"));tripAirStep.OnEvent().SEventTo(newProcessFunctionTargetBuilder(tripHotelStep,));tripAirStep.OnEvent().SEventTo(newProcessFunctionTargetBuilder(mailServiceStep,,parameterName:"message"));tripHotelStep.OnEvent().SEventTo(newProcessFunctionTargetBuilder(tripCarStep,));tripHotelStep.OnEvent().SEventTo(newProcessFunctionTargetBuilder(mailServiceStep,,parameterName:"message"));tripCarStep.OnEvent().SEventTo(newProcessFunctionTargetBuilder(tripCompleteStep,));tripCarStep.OnEvent().SEventTo(newProcessFunctionTargetBuilder(mailServiceStep,,parameterName:"message"));tripCompleteStep.OnEvent().SEventTo(newProcessFunctionTargetBuilder(stopProcessStep,));stopProcessStep.OnEvent().StopProcess();varkernelProcess=();Kernelkernel=CreateKernelWithChatCompletion();while(true){("请输入用户id:");varid=(());usingvarrunningProcess=(kernel,newKernelProcessEvent(){Id=,Data=id});}KernelCreateKernelWithChatCompletion(){Kernelkernel=().AddOpenAIChatCompletion(modelId:"gpt-4o",apiKey:("c:/gpt/")).Build();returnkernel;}publicstaticclassTripEvents{//开始ProcesspublicstaticreadonlystringStartProcess=nameof(StartProcess);publicstaticreadonlystringGetCustomer=nameof(GetCustomer);publicstaticreadonlystringTripAirTicketSuccess=nameof(TripAirTicketSuccess);publicstaticreadonlystringTripAirTicketFail=nameof(TripAirTicketFail);publicstaticreadonlystringTripHotelSuccess=nameof(TripHotelSuccess);publicstaticreadonlystringTripHotelFail=nameof(TripHotelFail);publicstaticreadonlystringTripCarSuccess=nameof(TripCarSuccess);publicstaticreadonlystringTripCarFail=nameof(TripCarFail);//邮件服务已发送publicstaticreadonlystringMailServiceSent=nameof(MailServiceSent);publicstaticreadonlystringTripCompleted=nameof(TripCompleted);publicstaticreadonlystringStopProcess=nameof(StopProcess);}//publicclassBaseProcessStep:KernelProcessStepInputState//{//publicoverrideValueTaskActivateAsync(KernelProcessStepStateInputStatestate)//{//(state);//}//}//publicrecordInputState//{//publicstringInput{get;init;}//}publicclassGetCustomerStep:KernelProcessStep{publicstaticclassFunctions{publicconststringGetCustomer=nameof(GetCustomer);}[KernelFunction()]publicasyncTaskGetCustomerStepAsync(KernelProcessStepContextcontext,intid,Kernel_kernel){($"【查询客户】开始,id={id}");varcustomers=newListCustomerForm(){newCustomerForm(){UserFirstName="张",UserLastName="三",UserDateOfBirth="1990-01-01",UserState="上海",UserPhoneNumber="",UserId=1,UserEmail="",State="1"},newCustomerForm(){UserFirstName="李",UserLastName="四",UserDateOfBirth="1990-01-01",UserState="上海",UserPhoneNumber="",UserId=2,UserEmail="",State="2"},newCustomerForm(){UserFirstName="王",UserLastName="五",UserDateOfBirth="1990-01-01",UserState="上海",UserPhoneNumber="",UserId=3,UserEmail="",State="3"},newCustomerForm(){UserFirstName="赵",UserLastName="六",UserDateOfBirth="1990-01-01",UserState="上海",UserPhoneNumber="",UserId=4,UserEmail="",State="4"}};varcustomer=(s===id);($"【查询客户】成功:{customer}");(new(){Id=,Data=customer,Visibility=});}}publicclassTripAirTicketProcessStep:KernelProcessStep{publicstaticclassFunctions{publicconststringTripAirTicket=nameof(TripAirTicket);}[KernelFunction()]publicasyncTaskTripAirTicketAsync(KernelProcessStepContextcontext,CustomerFormcustomer,Kernel_kernel){($"【机票预订】开始,姓名:{}{}");varchat=_();varchatHistory=newChatHistory();("生成一个国际航班的时刻表,标题是“|航班号|出发地|目的地|出发时间|到达时间|航空公司|”,只返回表格,不返回其他任何信息");varchatResult=(chatHistory);awaitforeach(variteminchatResult){(item);}();if(=="1"){("【机票预订】失败");(new(){Id=,Data="我们遗憾地通知您,机票预订失败!",Visibility=,});return;}("【机票预订】成功");(new(){Id=,Data=customer,Visibility=});}}publicclassTripHotelProcessStep:KernelProcessStep{publicstaticclassFunctions{publicconststringTripHotel=nameof(TripHotel);}[KernelFunction()]publicasyncTaskTripHotelAsync(KernelProcessStepContextcontext,CustomerFormcustomer,Kernel_kernel){($"【酒店预订】开始,姓名:{}{}");if(=="2"){("【酒店预订】失败");(new(){Id=,Data="我们遗憾地通知您,酒店预订失败!",Visibility=,});return;}("【酒店预订】成功");(new(){Id=,Data=customer,Visibility=});}}publicclassTripCarProcessStep:KernelProcessStep{publicstaticclassFunctions{publicconststringTripCar=nameof(TripCar);}[KernelFunction()]publicasyncTaskTripCarAsync(KernelProcessStepContextcontext,CustomerFormcustomer,Kernel_kernel){($"【租车预订】开始,姓名:{}{}");if(=="3"){("【租车预订】失败");(new(){Id=,Data="我们遗憾地通知您,租车预订失败!",Visibility=,});return;}("【租车预订】成功");(new(){Id=,Data=customer,Visibility=});}}publicclassTripCompleteStep:KernelProcessStep{publicstaticclassFunctions{publicconststringTripComplete=nameof(TripComplete);}[KernelFunction()]publicasyncTaskTripCompleteAsync(KernelProcessStepContextcontext,CustomerFormcustomer,Kernel_kernel){("【总预订】成功");(new(){Id=,Data=true,Visibility=});}}publicclassStopProcessStep:KernelProcessStep{publicstaticclassFunctions{publicconststringStopProcess=nameof(StopProcess);}[KernelFunction()]publicasyncTaskStopProcessAsync(KernelProcessStepContextcontext,boolresult,Kernel_kernel){("全部结束");(10);}}publicclassMailServiceStep:KernelProcessStep{publicstaticclassFunctions{publicconststringSMailToUserWithDetails=nameof(SMailToUserWithDetails);}[KernelFunction()]publicasyncTaskSMailServiceAsync(KernelProcessStepContextcontext,stringmessage){("========邮件服务========");(message);("==============================");(new(){Id=,Data=false});}}publicclassCustomerForm{[JsonPropertyName("userFirstName")]publicstringUserFirstName{get;set;}=;[JsonPropertyName("userLastName")]publicstringUserLastName{get;set;}=;[JsonPropertyName("userDateOfBirth")]publicstringUserDateOfBirth{get;set;}=;[JsonPropertyName("userState")]publicstringUserState{get;set;}=;[JsonPropertyName("userPhoneNumber")]publicstringUserPhoneNumber{get;set;}=;[JsonPropertyName("userId")]publicintUserId{get;set;}[JsonPropertyName("userEmail")]publicstringUserEmail{get;set;}=;[JsonPropertyName("state")]publicstringState{get;set;}=;publicoverridestringToString(){return$"姓名:{UserFirstName}{UserLastName},生日:{UserDateOfBirth},电话:{UserPhoneNumber},邮箱:{UserEmail},状态:{State}";}}运行结果如下:
