K2 Blackpearl中从数据库直接删除流程实例之K2Server表

本文提供了一个SQL存储过程,用于根据实例ID物理删除K2Server中的流程实例数据。此操作不可恢复,请确保事先备份。

转:http://www.cnblogs.com/dannyli/archive/2012/11/29/2794772.html

/************************************************************************************************
**  功能:根据实例ID,删除[K2Server]中的流程实例数据(物理删除,不可恢复,操作前请备份)
**  作者:Danny,Li [xing.dong.li@163.com]
**  日期:2012-11-28
**  版本:v121128
************************************************************************************************
**  返回值        返回值描述
**  ------        --------------------------------------------------------------
**   
**
************************************************************************************************
**  修订日期        修订作者        修订描述
**  ----------    --------    -----------------------------------------------
**   
**   
************************************************************************************************/

USE [K2Server]
GO

SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[uSP_DeleteK2ServerProcInst]
    @procInstID INT        -- Process Instance ID
AS

SET NOCOUNT ON

BEGIN
    PRINT 'Delete process instance from K2Server for ID = '+ CAST(@procInstID AS VARCHAR(50)) +' starting'
   
    DECLARE @iError INT
    SELECT @iError = @@Error
   
    BEGIN TRANSACTION
   
    IF @iError = 0
    BEGIN
        PRINT 'Removing process instance from _ProcInst'
        DELETE _ProcInst WHERE ID = @procInstID
        PRINT CAST(@@ROWCOUNT AS VARCHAR(10)) + ' records removed from _ProcInst'
        SELECT @iError = @@ERROR
    END
   
    IF @iError = 0
    BEGIN
        PRINT 'Removing process instance from _Async'
        DELETE _Async WHERE ProcInstID = @procInstID
        PRINT CAST(@@ROWCOUNT AS VARCHAR(10)) + ' records removed from _Async'
        SELECT @iError = @@ERROR
    END
   
    IF @iError = 0
    BEGIN
        PRINT 'Removing process instance from _Code'
        DELETE _Code FROM (_Code INNER JOIN _ErrorLog E ON _Code.ID = E.CodeID ) WHERE E.ProcInstID = @procInstID
        PRINT CAST(@@ROWCOUNT AS VARCHAR(10)) + ' records removed from _Code'
        SELECT @iError = @@ERROR
    END
   
    IF @iError = 0
    BEGIN
        PRINT 'Removing process instance from _ErrorLog'
        DELETE _ErrorLog WHERE ProcInstID = @procInstID
        PRINT CAST(@@ROWCOUNT AS VARCHAR(10)) + ' records removed from _ErrorLog'
        SELECT @iError = @@ERROR
    END
   
    IF @iError = 0
    BEGIN
        PRINT 'Removing process instance from _ProcInstDestQueue'
        DELETE _ProcInstDestQueue WHERE ProcInstID = @procInstID
        PRINT CAST(@@ROWCOUNT AS VARCHAR(10)) + ' records removed from _ProcInstDestQueue'
        SELECT @iError = @@ERROR
    END
   
    IF @iError = 0
    BEGIN
        PRINT 'Removing process instance from _FieldOnDemand'
        DELETE _FieldOnDemand WHERE ProcInstID = @procInstID
        PRINT CAST(@@ROWCOUNT AS VARCHAR(10)) + ' records removed from _FieldOnDemand'
        SELECT @iError = @@ERROR
    END
   
    IF @iError = 0
    BEGIN
        PRINT 'Removing process instance from _IPCAsync'
        DELETE _IPCAsync FROM (_IPCAsync ia    JOIN _IPC i ON ia.ItemID = i.ID)        WHERE SrcProcInstID = @procInstID AND ia.[Type] IN (1, 3, 4)
        PRINT CAST(@@ROWCOUNT AS VARCHAR(10)) + ' records removed from _IPCAsync'
        SELECT @iError = @@ERROR
    END
   
    IF @iError = 0
    BEGIN
        PRINT 'Removing process instance from _IPCAsync'
        DELETE _IPCAsync FROM (_IPCAsync ia JOIN _IPCReturn i ON ia.ItemID = i.DstProcInstID)        WHERE DstProcInstID = @procInstID AND ia.[Type] IN (2)
        PRINT CAST(@@ROWCOUNT AS VARCHAR(10)) + ' records removed from _IPCAsync'
        SELECT @iError = @@ERROR
    END
   
    IF @iError = 0
    BEGIN
        PRINT 'Removing process instance from _IPC'
        DELETE _IPC WHERE SrcProcInstID = @procInstID
        PRINT CAST(@@ROWCOUNT AS VARCHAR(10)) + ' records removed from _IPC'
        SELECT @iError = @@ERROR
    END
   
    IF @iError = 0
    BEGIN
        PRINT 'Removing process instance from _IPC'
        DELETE _IPC WHERE DstProcInstID = @procInstID
        PRINT CAST(@@ROWCOUNT AS VARCHAR(10)) + ' records removed from _IPC'
        SELECT @iError = @@ERROR
    END
   
    IF @iError = 0
    BEGIN
        PRINT 'Removing process instance from _IPCReturn'
        DELETE _IPCReturn WHERE SrcProcInstID = @procInstID
        PRINT CAST(@@ROWCOUNT AS VARCHAR(10)) + ' records removed from _IPCReturn'
        SELECT @iError = @@ERROR
    END
   
    IF @iError = 0
    BEGIN
        PRINT 'Removing process instance from _IPCReturn'
        DELETE _IPCReturn WHERE DstProcInstID = @procInstID
        PRINT CAST(@@ROWCOUNT AS VARCHAR(10)) + ' records removed from _IPCReturn'
        SELECT @iError = @@ERROR
    END
   
    IF @iError = 0
    BEGIN
        PRINT 'Removing process instance from _Log'
        DELETE _Log WHERE ProcInstID = @procInstID
        PRINT CAST(@@ROWCOUNT AS VARCHAR(10)) + ' records removed from _Log'
        SELECT @iError = @@ERROR
    END
   
    IF @iError = 0
    BEGIN
        PRINT 'Removing process instance from _ServerList'
        DELETE _ServerList WHERE ProcInstID = @procInstID
        PRINT CAST(@@ROWCOUNT AS VARCHAR(10)) + ' records removed from _ServerList'
        SELECT @iError = @@ERROR
    END
   
    IF @iError = 0
    BEGIN
        PRINT 'Removing process instance from _WorklistHeader'
        DELETE _WorklistHeader WHERE ProcInstID = @procInstID
        PRINT CAST(@@ROWCOUNT AS VARCHAR(10)) + ' records removed from _WorklistHeader'
        SELECT @iError = @@ERROR
    END
   
    IF @iError = 0
    BEGIN
        PRINT 'Removing process instance from _WorklistSlot'
        DELETE _WorklistSlot WHERE ProcInstID = @procInstID
        PRINT CAST(@@ROWCOUNT AS VARCHAR(10)) + ' records removed from _WorklistSlot'
        SELECT @iError = @@ERROR
    END
   
    IF @iError = 0
    BEGIN
        PRINT 'Removing process instance from _ActionActInstRights'
        DELETE _ActionActInstRights WHERE ProcInstID = @procInstID
        PRINT CAST(@@ROWCOUNT AS VARCHAR(10)) + ' records removed from _ActionActInstRights'
        SELECT @iError = @@ERROR
    END
   
    IF @iError = 0
    BEGIN
        PRINT 'Removing process instance from _ActionActInstShared'
        DELETE _ActionActInstShared WHERE ProcInstID = @procInstID
        PRINT CAST(@@ROWCOUNT AS VARCHAR(10)) + ' records removed from _ActionActInstShared'
        SELECT @iError = @@ERROR
    END
   
    IF @iError <> 0
    BEGIN
        ROLLBACK TRANSACTION
        PRINT 'Delete process instance from K2Server for ID = '+ CAST(@procInstID AS VARCHAR(50)) +' rollback'
    END
    ELSE
    BEGIN
        COMMIT TRANSACTION
        PRINT 'Delete process instance from K2Server for ID = '+ CAST(@procInstID AS VARCHAR(50)) +' commit'
    END
END

 

### 信息技术岗位结构化面试准备指南 在准备信息技术岗位的结构化面试时,需要系统性地覆盖技术识、行为能力以及综合素养。结构化面试通常包括**技术考察、行为问题评估、情景模拟与软技能测试**等多个维度,要求应聘者具备全面的能力展示。 #### 技术考察点 技术部分是信息技术岗位面试的核心内容之一。通常涵盖操作系统、网络基础、数据库管理、编程能力、系统架构等方向。例如: - **操作系统**:进程调度、内存管理、文件系统等基本原理。 - **网络协议**:TCP/IP模型、HTTP/HTTPS差异、DNS解析流程、常见攻击类型(如SQL注入)及防范措施。 - **数据库**:SQL语法、事务机制、索引优化、数据一致性保障方法。 - **编程语言**:Java、Python或C++等语言的基础语法、面向对象特性、异常处理机制。 - **系统设计**:高并发场景下的负载均衡、缓存策略、分布式系统架构等。 针对技术考察,建议结合具体岗位需求进行重点突破,并通过刷题平台(如LeetCode、牛客网)提升编码与算法能力[^1]。 #### 常见问题类型 结构化面试中的问题可以分为以下几类: - **技术问答**:直接询问某个识点或技术细节,例如“请说明HTTPS的工作原理”、“解释CAP定理及其应用场景”。 - **项目经历深挖**:围绕简历中的项目经验提问,考察实际问题解决能力和技术深度。 - **行为面试题**:例如“描述你曾经遇到的一个技术难题,你是如何解决的?”、“你在团队合作中遇到冲突是如何处理的?” - **系统设计题**:如“设计一个短链接生成系统”、“设计一个支持高并发的电商秒杀系统”。 对于行为面试题,建议使用STAR法则(Situation, Task, Action, Result)组织答案,确保逻辑清晰、表达有力[^1]。 #### 行为面试技巧 行为面试主要评估沟通能力、团队协作、问题解决和领导潜力等方面。以下是几个实用技巧: - 在回答中突出个人贡献的同时,也要体现团队合作意识。 - 使用具体案例支撑观点,避免泛泛而谈。 - 对于失败经历,强调从中学习的经验和改进措施。 - 面试过程中保持积极态度,展现出对岗位的热情和适应能力。 此外,提前准备多个高质量的问题反问面试官,有助于展现主动性与职业素养[^2]。 #### 面试准备资源推荐 为了提高面试成功率,建议参考以下资料: - 系统学习计算机基础识,如《计算机网络:自顶向下方法》、《操作系统导论》等。 - 参加在线课程(如Coursera、极客时间)深入理解关键技术领域。 - 利用开源社区(如GitHub)参与项目实践,增强动手能力。 - 阅读行业白皮书和技术博客,了解当前主流技术趋势和发展方向。 通过系统性的学习和实践,能够有效提升应对结构化面试的能力,增强在信息技术岗位竞争中的优势[^4]。 ```python # 示例:简单判断一个字符串是否为回文 def is_palindrome(s): return s == s[::-1] print(is_palindrome("madam")) # 输出: True print(is_palindrome("hello")) # 输出: False ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值