精华内容
下载资源
问答
  • 这不是公司深层目的的原因,而是任务如何与这些目标保持一致。 它回答了以下问题:“您为什么要这样做?”,“这有什么价值?”,“什么潜在的行为将改变或产生?” 或“将改变什么决定?”。 它主要与WHAT并行进行...
  • 数据分析---众包任务

    千次阅读 2020-04-30 03:16:18
    用svr给未完成的任务重新定价5.用原价格和主成分去训练SVM分类模型用刚刚训练好SVM对新价格和特征做预测模型评价最后 前言 依然是记录一次我近期作业,这个做了一天半才做完,昨天通宵去拟合函数结果还是不...

    前言

    依然是记录一次我的近期作业,这个做了一天半才做完,昨天通宵去拟合函数结果还是不理想,耽误了太多时间。主要原因还是昨天取的特征值太少了导致一直欠拟合,当然数据的分布也确实不太友好,先来看看这次的任务背景和任务要求。
    在这里插入图片描述
    在这里插入图片描述
    然后需要我们计算十二个指标
    在这里插入图片描述
    任务流程
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    现在熟悉了任务背景和流程要求,就开始动手。(其实这个案例前半部分是教我们如何用循环去得到指标的,这部分我就不贴了)

    开始动手

    1.导入数据,查看并且计算指标

    import pandas as pd
    import numpy as np
    import math
    import warnings
    warnings.filterwarnings("ignore")
    
    A=pd.read_excel('./第9次作业 已结束项目任务数据.xls')
    B=pd.read_excel('./第9次作业 会员信息数据.xlsx')
    
    A.info()
    A.head()
    
    B.info()
    B.head()
    

    在这里插入图片描述
    在这里插入图片描述
    数据集就是这个样子,每一个属性的意义也很清楚,数据本身其实也很干净,所以我就没有进行数据预处理直接去计算要求的指标了。

    #将B转换为时间序列
    B['预订任务开始时间']= pd.to_datetime(B['预订任务开始时间'],format = '%H:%M:%S')
    B.info()
    B.head()
    
    # 开始得到Z1-Z12
    Z=np.zeros((len(A),12))
    for q in range(len(A)):
        A_Wq=A.iloc[q,1]
        A_Jq=A.iloc[q,2]
    
        D1=np.zeros((len(A)))
        D2=np.zeros((len(B)))
    
        for t in range(len(A)):
            A_Wt=A.iloc[t,1]
            A_Jt=A.iloc[t,2]
            dt=111.19*math.sqrt((A_Wq-A_Wt)**2+(A_Jq-A_Jt)**2*math.cos((A_Wq+A_Wt)*math.pi/180)**2)
            D1[t]=dt
    
        for k in range(len(B)):
            B_Wk=B.iloc[k,1]
            B_Jk=B.iloc[k,2]
            dk=111.19*math.sqrt((A_Wq-B_Wk)**2+(A_Jq-B_Jk)**2*math.cos((A_Wq+B_Wk)*math.pi/180)**2)
            D2[k]=dk
    
        Z1=len(D1[D1<=5])-1   #5公里内其他任务量
        Z2=A.iloc[D1<=5,[3]].mean()[0]  #5公里内的平均价格
        Z3=B.iloc[D2<=5,[3]].sum()[0]   #5公里内可预订任务量 
        Z4=B.iloc[D2<=5,[3,5]].sum()[1]/len(D2[D2<=5])  #5公里内信誉平均值
        Z5=len(D2[D2<=5])  #5公里内会员个数    
        #下面是不同时间段内的任务量
        Z6=B.iloc[D2<=5,[3,4]][(B['预订任务开始时间']==pd.to_datetime('06:30:00',format='%H:%M:%S'))]['预订任务限额'].sum()
        Z7=B.iloc[D2<=5,[3,4]][(B['预订任务开始时间']>=pd.to_datetime('06:33:00',format='%H:%M:%S'))&(B['预订任务开始时间']<=pd.to_datetime('06:45:00',format='%H:%M:%S'))]['预订任务限额'].sum()
        Z8=B.iloc[D2<=5,[3,4]][(B['预订任务开始时间']>=pd.to_datetime('06:48:00',format='%H:%M:%S'))&(B['预订任务开始时间']<=pd.to_datetime('07:03:00',format='%H:%M:%S'))]['预订任务限额'].sum()
        Z9=B.iloc[D2<=5,[3,4]][(B['预订任务开始时间']>=pd.to_datetime('07:06:00',format='%H:%M:%S'))&(B['预订任务开始时间']<=pd.to_datetime('07:21:00',format='%H:%M:%S'))]['预订任务限额'].sum()
        Z10=B.iloc[D2<=5,[3,4]][(B['预订任务开始时间']>=pd.to_datetime('07:24:00',format='%H:%M:%S'))&(B['预订任务开始时间']<=pd.to_datetime('07:39:00',format='%H:%M:%S'))]['预订任务限额'].sum()
        Z11=B.iloc[D2<=5,[3,4]][(B['预订任务开始时间']>=pd.to_datetime('07:42:00',format='%H:%M:%S'))&(B['预订任务开始时间']<=pd.to_datetime('07:57:00',format='%H:%M:%S'))]['预订任务限额'].sum()
        Z12=B.iloc[D2<=5,[3,4]][(B['预订任务开始时间']==pd.to_datetime('08:00:00',format='%H:%M:%S'))]['预订任务限额'].sum()
        
        Z[q,0]=Z1
        Z[q,1]=Z2
        Z[q,2]=Z3
        Z[q,3]=Z4
        Z[q,4]=Z5
        Z[q,5]=Z6
        Z[q,6]=Z7
        Z[q,7]=Z8
        Z[q,8]=Z9
        Z[q,9]=Z10
        Z[q,10]=Z11
        Z[q,11]=Z12
    
        
    data=pd.DataFrame(Z)
    print(data.head())
    data.to_csv("第九次作业指标.csv",index=False,encoding="utf-8")
    

    对于时间的截取我也不太熟悉,所以用的是这种比较笨的截取方法。然后把得到的数据保存到csv文件,避免我们每次都要算一次这个。(因为我们后面计算有可能会导致电脑卡死然后restart kernel,所以保存一下比较好)

    2.导入我们得到的指标,并且进行主成分分析

    data=pd.read_csv('./第九次作业指标.csv')
    data.info()
    data.head()
    

    在这里插入图片描述
    然后我后面报错,发现有缺失值,所以先来填补一次

    # 填补缺失值
    data.fillna(0,inplace=True)
    data.astype(float)
    data.info()
    data.head()
    

    相关性分析

    # 进行相关性计算,并可视化一下
    import matplotlib.pyplot as plt
    import seaborn as sns
    
    plt.rcParams['font.family']='FangSong'
    plt.rcParams['axes.unicode_minus']=False
    
    sns.pairplot(data)
    plt.show()
    
    sns.heatmap(data.corr())
    plt.show()
    

    在这里插入图片描述
    在这里插入图片描述
    主成分分析

    # 进行主成分分析,使得累计贡献率达到90%以上
    from sklearn.decomposition import PCA
    
    res=[]
    for i in range(1,10):
        pca=PCA(n_components=i)
        pca.fit(data)
        res.append(pca.explained_variance_ratio_.sum())
        
    plt.plot([i for i in range(1,10)],res)
    plt.title("不同主成分数目下的累计贡献率")
    plt.xlabel("主成分数目")
    plt.ylabel("贡献率")
    plt.show()
    

    在这里插入图片描述
    然后我也试了一下让它自己选择降维数

    #让他自己选择数目看下是否符合要求
    pca=PCA(n_components='mle')
    pca.fit(data)
    print("主成分数目为:",pca.n_components_)
    print("累计贡献率为:",pca.explained_variance_ratio_.sum())
    print("特征值为:",pca.get_covariance())
    

    在这里插入图片描述
    发现11就行(为了后面提高拟合效果,我这里尽量选多点)

    #由上面的贡献率来看取11个主成分就好
    pca=PCA(n_components=11)
    trans_data=pca.fit_transform(data)
    print(pca.explained_variance_ratio_.sum())
    # 各个主成分的贡献率可视化
    plt.figure()
    plt.bar([i for i in range(trans_data.shape[1])],pca.explained_variance_ratio_)
    plt.title("各个主成分的贡献率")
    plt.xlabel("主成分")
    plt.ylabel("贡献率")
    plt.show()
    
    print("主成分数目为11时特征向量为:",pca.components_)
    

    在这里插入图片描述
    特征向量如下,由特征向量就能得到主成分表达式了(矩阵相乘)
    在这里插入图片描述

    3.添加主成分数据,进行拟合

    # 然后我们把得到的主成分添加到已结束任务数据的表中
    trans_data=pd.DataFrame(trans_data,
                            columns=['主成分1','主成分2','主成分3','主成分4','主成分5','主成分6','主成分7','主成分8','主成分9','主成分10','主成分11'])
    trans_data.head()
    
    data=pd.merge(A,trans_data,how='left',left_index=True,right_index=True)
    finished=data[data['任务执行情况']==1]
    finished.head()
    

    在这里插入图片描述

    #以主成分为自变量,任务标价为因变量探索是否为线性关系
    from sklearn.linear_model import LinearRegression
    from sklearn.preprocessing import PolynomialFeatures
    from sklearn.preprocessing import StandardScaler
    from sklearn.model_selection import train_test_split
    
    X=finished[['主成分1','主成分2','主成分3','主成分4','主成分5','主成分6','主成分7','主成分8','主成分9','主成分10','主成分11']]
    Y=finished['任务标价']
    
    sns.jointplot(X['主成分1'],Y,kind='reg')
    sns.jointplot(X['主成分2'],Y,kind='reg')
    sns.jointplot(X['主成分3'],Y,kind='reg')
    sns.jointplot(X['主成分4'],Y,kind='reg')
    sns.jointplot(X['主成分5'],Y,kind='reg')
    plt.show()
    

    在这里插入图片描述
    由图看得出其实并不是线性关系,然后就有了我下面的尝试

    # 先用多元回归拟合试试
    
    #对X标准化处理
    scaler=StandardScaler().fit(X)
    X=scaler.transform(X)
    
    X_train, X_test, y_train, y_test = train_test_split(X,Y, test_size=0.2, random_state=2)
    
    from sklearn.metrics import r2_score
    
    linreg = LinearRegression()
    linreg.fit(X_train,y_train)
    y_pred = linreg.predict(X_test)
    print(linreg.score(X_test,y_test))
    # 可视化看看测试集拟合效果
    plt.figure()
    plt.plot([i for i in range(len(X_test))],y_pred,label='拟合曲线')
    plt.plot([i for i in range(len(X_test))],y_test,label='真实曲线')
    plt.title("测试集拟合效果")
    plt.legend()
    plt.show()
    
    
    #增加高次项再看看拟合效果
    quadratic_fearurizer = PolynomialFeatures(degree=2)
    X_train_quadratic = quadratic_fearurizer.fit_transform(X_train)
    X_test_quadratic = quadratic_fearurizer.transform(X_test)
    linreg = LinearRegression()
    linreg.fit(X_train_quadratic,y_train)
    
    y_train_pred=linreg.predict(X_train_quadratic)
    y_pred = linreg.predict(X_test_quadratic)
    print(linreg.score(X_train_quadratic,y_train))
    print(linreg.score(X_test_quadratic,y_test))
    
    # 可视化看看训练集拟合效果
    plt.figure()
    plt.plot([i for i in range(len(X_train))],y_train_pred,label='拟合曲线')
    plt.plot([i for i in range(len(X_train))],y_train,label='真实曲线')
    plt.title("训练集拟合效果")
    plt.legend()
    plt.show()
    
    
    # 可视化看看测试集拟合效果
    plt.figure()
    plt.plot([i for i in range(len(X_test))],y_pred,label='拟合曲线')
    plt.plot([i for i in range(len(X_test))],y_test,label='真实曲线')
    plt.title("测试集拟合效果")
    plt.legend()
    plt.show()
    

    添加了二次项后拟合的效果
    在这里插入图片描述
    不太理想,再试试其他的

    #试试mlp
    from sklearn.neural_network import MLPRegressor
    
    para_dict ={'alpha':10**-np.arange(-7,0),'hidden_layer_sizes':[10,20,50,100,150,200]}
    
    
    model_mlp = MLPRegressor(
        solver='lbfgs', alpha=1e-5,hidden_layer_sizes=(5,10), random_state=1,
        activation='relu', learning_rate='adaptive',max_iter=5000
    )
    gcv = GridSearchCV(model_mlp,param_grid=para_dict ,cv = 5,n_jobs=-1)
    
    gcv.fit(X_train, y_train)
    
    mlp_score=gcv.score(X_test,y_test)
    print('回归模型得分',mlp_score)
    y_pred = gcv.predict(X_test)
    # 可视化看看测试集拟合效果
    plt.figure()
    plt.plot([i for i in range(len(X_test))],y_pred,label='拟合曲线')
    plt.plot([i for i in range(len(X_test))],y_test,label='真实曲线')
    plt.title("测试集拟合效果")
    plt.legend()
    plt.show()
    

    在这里插入图片描述
    多层感知机好一点,但是效果还是不太好。当然我也试了BP(用了一个通宵,效果依然很差!!!到了一定时候梯度下降就无法降低损失,陷入局部最优解了)
    在这里插入图片描述
    从这个定价分布来看,其实没有任何明显的关系,数据太随机了所以没有很好的拟合效果也是情有可原,然后我用了svr去拟合,一番调参过后效果是最好的,所以我就用的svr去回归预测。
    在这里插入图片描述

    4.用svr给未完成的任务重新定价

    unfinished=data[data['任务执行情况']==0]
    unfinished.head()
    
    X=unfinished[['主成分1','主成分2','主成分3','主成分4','主成分5','主成分6','主成分7','主成分8','主成分9','主成分10','主成分11']]
    scaler=StandardScaler().fit(X)
    X=scaler.transform(X)
    
    Y=svr.predict(X)
    unfinished['重新定价']=Y
    unfinished.head()
    

    在这里插入图片描述
    在这里插入图片描述

    5.用原价格和主成分去训练SVM分类模型

    # 使用svm对所有数据训练分类模型
    # 划分数据集
    X=data[['任务标价','主成分1','主成分2','主成分3','主成分4','主成分5','主成分6','主成分7','主成分8','主成分9','主成分10','主成分11']]
    Y=data['任务执行情况']
    Y=np.array(Y).reshape(-1,1)
    scaler=StandardScaler().fit(X)
    X=scaler.transform(X)
    
    X_train, X_test, y_train, y_test = train_test_split(X,Y, test_size=0.2, random_state=2)
    print(X_train.shape,y_test.shape)
    
    from sklearn.svm import SVC
    from sklearn import metrics as sm
    
    
    svm=SVC()
    parameters=[{'kernel': ['linear','rbf','poly'],'C': [0.01,0.1,1,10],'gamma':[0.001,0.01,0.1,1,10],'degree':[2,3,4,5,6,7]}]
    clf = GridSearchCV(svm,parameters,scoring='accuracy',cv=5,n_jobs=-1)
    clf.fit(X_train, y_train)
    
    svm=clf.best_estimator_
    svm.fit(X_train,y_train)
    y_pred=svm.predict(X_test)
    
    matrix=sm.confusion_matrix(y_test,y_pred)
    report=sm.classification_report(y_test,y_pred)
    
    def plot_confusion_matrix(confusion_mat):
        df_cm = pd.DataFrame(confusion_mat,index=[1,2],columns=[1,2])
        ax = sns.heatmap(df_cm,annot=True,fmt='.20g')
        ax.set_title('混淆矩阵')
        ax.set_xlabel('预测标签')
        ax.set_ylabel('真实标签')
        plt.show()
        
    plot_confusion_matrix(matrix)
    print(report)
    

    在这里插入图片描述
    模型效果依然不是特别好,准确率和f1分数都不是特别高。期待着后期能有优化,但是现在的我只想早点做完。最近因为忙着写作业都快一周没有怎么看考研相关的了,老师也原谅一下我偷懒啦

    6.用刚刚训练好的SVM对新的价格和特征做预测

    # 对未执行任务中新的定价以及主成分用svm做预测
    X=unfinished[['重新定价','主成分1','主成分2','主成分3','主成分4','主成分5','主成分6','主成分7','主成分8','主成分9','主成分10','主成分11']]
    scaler=StandardScaler().fit(X)
    X=scaler.transform(X)
    
    y_pred=svm.predict(X)
    unfinished['新的完成情况']=y_pred
    unfinished.head()
    

    在这里插入图片描述

    7.模型评价

    看看新的定价情况下,任务完成数会增加多少,另外新的定价比原始定价会增加多少金额

    把表格中所有新的完成情况为1的统计,然后再把价格作差

    new_finish_num=unfinished[unfinished['新的完成情况']==1]['新的完成情况'].sum()
    increase_price=unfinished['重新定价'].sum()-unfinished['任务标价'].sum()
    print("新增加的完成数:",new_finish_num)
    print("新增加的价格:",increase_price)
    

    在这里插入图片描述
    增加的金额27.5小于50,任务完成数增加了89,达到了要求。

    最后

    最近真的太累了,我只想安安心心的复习考研,但是事情又太多,比赛、作业,太难了。所以这个作业其实做的很应付,我一般都比较喜欢追求完美的,但是后来慢慢发现事情太多了没办法把每件事都做到最好,还是要分重要的去做。

    模型的误差问题
    SVR拟合的R2只有0.58,SVM的准确率也只有0.82,所以虽然最后的结果满足了条件,但是并不能很好的说明问题。不过有一点,钱多人就愿意做事这个道理还是体现的很深刻的。至于优化的话,等我复习累了我会去想想怎么提高回归拟合程度。

    展开全文
  • 2014-7-18任务完成情况

    2014-07-19 01:01:22
    2.最大概率法中求每个词语费用时,如果对词频都乘以一个惩罚系数,观察这个系数对整体准确率和召回率影响,并分析原因。 3.对于登录词,调研主流解决方法,并确定一种可行方法进行实践。

            1.最大概率法使分词结果中的交集型歧义数量降低,对组合型歧义和未登录词有什么影响?会不会使这些错误增多?

            2.最大概率法中求每个词语的费用时,如果对词频都乘以一个惩罚系数,观察这个系数对整体准确率和召回率的影响,并分析原因。
                   参见:最大概率法分词中词频惩罚因子的作用探究

            3.对于未登录词,调研主流的解决方法,并确定一种可行的方法进行实践。
                   未完成,明日继续。

    展开全文
  • 它还使用SLP信息对UTXO进行水合作用,这是一项相当艰巨的任务,应在与整个节点和SLPDB“紧密合作”软件中完成。 令牌验证可以花费无数时间,因为应用程序递归地从一个完整节点检索数据并进行分析,以便遵循...
  • 在软件开发团队中,事情出错是经常, 但应该尽量减少错误, 通过好管理使错误越来越...4 执行人未付出最大努力导致任务未完成 5 执行人敷衍应付导致出问题 6 管理者和执行人间沟通有问题, 导致执行人对任务理解有...

    在软件开发团队中, 事情出错是经常的, 但应该尽量减少错误, 通过好的管理使错误越来越少. 

    错误的可能原因有:

    1 任务执行人相对于任务来说能力不足

    2 任务执行人没有执行已有决定(或要求)

    3 任务所需时间超过人的限度, 导致执行人付出最大努力还无法完成

    4 执行人未付出最大努力导致任务未完成

    5 执行人敷衍应付导致出问题

    6 管理者和执行人间沟通有问题, 导致执行人对任务理解有问题

    7 任务相关方不给与应有的协助导致任务无法完成

    8 出现问题时, 执行人有意隐瞒问题

    其中应该批评的情况是: 2, 4, 5, 8

    管理者应让执行人明白应该及时反馈的事项.

    转载于:https://www.cnblogs.com/forrestju/p/3374568.html

    展开全文
  •  从上一节的分析可以看出,未完成的任务有两种情况,一种是已经被用户选择并等待处理的任务,一种是刚创建、尚没有用户选择执行的任务。对第一种情况可以通过重新指派用户完成该任务(即修改任务实例TaskUserID...

    9.2 重新指派过程任务

        从上一节的分析可以看出,未完成的任务有两种情况,一种是已经被用户选择并等待处理的任务,一种是刚创建、尚没有用户选择执行的任务。对第一种情况可以通过重新指派用户完成该任务(即修改任务实例的TaskUserID字段,并记录由谁重新指派了任务以及重新指派的原因),以推动业务过程继续进行;对第二种情况,可以督促相关角色用户完成任务,或为相应角色添加用户以完成任务。

    9.2.1 ReassignTaskUser.aspx文件代码

        页面设计如图9.2所示:

    图9.2 重新指派过程任务

        ......

        <form id="Form1" method="post" runat="server">
          <table cellSpacing="2" cellPadding="2" width="100%" border="0">
           <tr><td align="right" width="10%"></td>
               <td align="right" width="15%">当前业务名称:</td>
               <td align="left" width="65%">

                  <asp:label id="Label1" runat="server" ForeColor="Black"></asp:label></td>
               <td width="10%"><FONT face="宋体"></FONT></td>
           </tr>
           <TR>
              <TD align="right" width="10%"></TD>
              <TD align="right" width="15%"><FONT face="宋体">业务内容:</FONT></TD>
              <TD align="left" width="65%"><asp:label id="Label2" runat="server"></asp:label></TD>
              <TD width="10%"></TD>
           </TR>
           <tr>
              <td align="right" width="10%"><FONT face="宋体"></FONT></td>
              <td align="right" width="15%">未完成的任务说明:</td>
              <td align="left" width="65%"><asp:label id="Label3" runat="server"></asp:label></td>
              <td width="10%"></td>
           </tr>
           <%

              //如果需要重新指派
              if(ViewState["needreassigntask"].ToString () == "Y")
              {
           %>
           <TR>
              <TD align="right"><FONT face="宋体"></FONT></TD>
              <TD align="right">重新指派任务的原因:</TD>
              <TD align="left"><asp:textbox id="TextBox1" runat="server" Rows="3"

                   TextMode="MultiLine" Columns="106"></asp:textbox></TD>
              <TD></TD></TR>
           <TR>
              <TD align="right">&nbsp;</TD>
              <TD align="right"><FONT face="宋体">将任务重新指派给:</FONT></TD>
              <TD align="left"><asp:dropdownlist id="DropDownList1" runat="server">

                  </asp:dropdownlist></TD><TD>&nbsp;</TD></TR>
           <TR>
              <TD>&nbsp;</TD><TD>&nbsp;</TD>
              <TD align="center">&nbsp;
                <asp:button id="Button1" runat="server" Text="确认"></asp:button>&nbsp;

                <asp:button id="Button2" runat="server" Text="取消"></asp:button></TD>
              <TD></TD>
           </TR>
           <%
              }
           %>
         </table>
        </form>

    9.2.2 ReassignTaskUser.aspx.cs文件代码

        ......   

        using DataAccess;
        using WFEngine;
        using UserResourceManagement;

        namespace workflow.Controls
        {
           public class ReassignTaskUser : System.Web.UI.Page
           {
              ...... 
              private void Page_Load(object sender, System.EventArgs e)
              {
                 if(! IsPostBack)
                 {
                    //获取来源页地址
                    ViewState["BackUrl"] = Request.UrlReferrer.ToString();

                    //是否需要重新指派任务用户
                    ViewState["needreassigntask"]="N";    
                    //验证用户是否登录
                    if(Session["userid"] == null)
                       Response.Redirect("../Message.aspx");

                    //获取过程实例编号和任务实例编号参数

                    string processinstanceid=Request.QueryString["pid"].ToString();
                    ViewState["processinstanceid"]=processinstanceid;
                    string taskinstanceid=Request.QueryString["tid"].ToString();
                    ViewState["taskinstanceid"]=taskinstanceid;

                    //获取业务名称与业务实例内容描述
                    string strSql="select (select ProcessName from ProcessDefinition where

                         ProcessID=ProcessDefinitionID) as process_name,Description from

                          ProcessInstance where ProcessInstanceID="+processinstanceid;
                    Base basecode=new Base();
                    DataSet ds=basecode.SQLExeDataSet(strSql);
                    Label1.Text=ds.Tables[0].Rows[0]["process_name"].ToString();
                    Label2.Text=ds.Tables[0].Rows[0]["Description"].ToString();

                    strSql="select TaskDefinitionID,TaskUserID from TaskInstance where

                         TaskInstanceID="+taskinstanceid;

                    ds=basecode.SQLExeDataSet(strSql);
                    if(ds == null || ds.Tables[0].Rows.Count < 1)
                    {
                       Label3.Text="出现程序错误,请与管理员联系!";
                       return;
                    }    
                    strSql="select TaskName,AssignedRole,(select RoleName from RolesManagement

                        where RoleID=AssignedRole) as rolename from TaskDefinition where

                         TaskID="+ds.Tables[0].Rows[0]["TaskDefinitionID"].ToString();
                    DataSet taskds=basecode.SQLExeDataSet(strSql);
                    string taskname=taskds.Tables[0].Rows[0]["TaskName"].ToString();
                    ViewState["taskname"]=taskname;
                    string rolename=taskds.Tables[0].Rows[0]["rolename"].ToString();
                    string roleid=taskds.Tables[0].Rows[0]["AssignedRole"].ToString();
                    //获取所有对应角色用户名(包括活动用户和被冻结用户)
                    strSql="select EmployeeName from Employees where EmployeeID in (select

                        EmployeeID from Users where UserID in (select UserID from RolesAssigned

                         where RoleID="+roleid+" and UserID in (select UserID from Users where

                           Active='A')));"
                          +"select EmployeeName from Employees where EmployeeID in (select

                           EmployeeID from Users where UserID in (select UserID from

                            RolesAssigned where RoleID="+roleid+" and UserID in (select UserID

                             from Users where Active != 'A')))";
                   taskds=basecode.SQLExeDataSet(strSql);
                   string activeEmployees="";
                   string noactiveEmployees="";
                   if(taskds != null)
                   {
                      if(taskds.Tables[0] != null & taskds.Tables[0].Rows.Count >=1)
                      {
                         activeEmployees=taskds.Tables[0].Rows[0]["EmployeeName"].ToString();
                         for(int i=1;i<taskds.Tables[0].Rows.Count;i++)
                            activeEmployees=activeEmployees+","

                               +taskds.Tables[0].Rows[i]["EmployeeName"].ToString();
                      }
                      if(taskds.Tables[1] != null & taskds.Tables[1].Rows.Count >=1)
                      {
                         noactiveEmployees=taskds.Tables[1].Rows[0]["EmployeeName"].ToString();
                         for(int i=1;i<taskds.Tables[1].Rows.Count;i++)
                             noactiveEmployees=noactiveEmployees+","

                               +taskds.Tables[1].Rows[i]["EmployeeName"].ToString();
                      }
                   }

                   //对于新任务实例(尚没有用户选择处理该任务)    
                   if(ds.Tables[0].Rows[0]["TaskUserID"] == DBNull.Value)
                   {
                      Label3.Text="未完成的任务为"+taskname+",对应角色为"+rolename;
                      if(activeEmployees != "")
                         Label3.Text=Label3.Text+".对应活动用户为"+activeEmployees;
                      if(noactiveEmployees != "")
                         Label3.Text=Label3.Text+";对应不活动用户为"+noactiveEmployees;
                      Label3.Text=Label3.Text+".请通知活动用户完成任务,或者联系管理员将无法完成任

                              务的活动用户设置为不活动,并添加新用户来完成任务!";
                   }
                   else
                   {
                      ViewState["needreassigntask"]="Y";
                      Label3.Text="未完成的任务为"+taskname+",对应角色为"+rolename;
                      if(activeEmployees != "")
                         Label3.Text=Label3.Text+".对应活动用户为"+activeEmployees;
                      if(noactiveEmployees != "")
                         Label3.Text=Label3.Text+";对应不活动用户为"+noactiveEmployees;
                      string taskusername=new UserManagement().GetEmployeeName(ds.Tables[0]

                         .Rows[0]["TaskUserID"].ToString ());
                      //保存当前任务用户
                      ViewState["taskusername"]=taskusername;
                      Label3.Text=Label3.Text+".当前任务用户为"+taskusername+".";

                     //设置用户选择下拉列表
                     strSql="select  EmployeeName,UserID from Employees,Users where

                          Employees.EmployeeID=Users.EmployeeID AND Users.Active='A' and

                           Users.EmployeeID in (select EmployeeID from Users where UserID in

                             (select UserID from RolesAssigned where RoleID="+roleid+"))";

     

                    ds=basecode.SQLExeDataSet(strSql);
                    DropDownList1.DataSource=ds;
                    DropDownList1.DataTextField="EmployeeName";
                    DropDownList1.DataValueField="UserID";
                    DropDownList1.DataBind();
                 }
               }
             }

             //取消按钮

             private void Button2_Click(object sender, System.EventArgs e)
             {
                Response.Redirect(ViewState["BackUrl"].ToString());
             }

             //确定按钮

             private void Button1_Click(object sender, System.EventArgs e)
             {
                //保存重新指派任务的原因到流程实例的留言字段
                string strSql="update ProcessInstance set Message=@Message where 

                     ProcessInstanceID="+ViewState["processinstanceid"].ToString();
                SqlCommand mycommand=new SqlCommand();
                mycommand.CommandText=strSql;
                Base basecode=new Base();

                //记录谁重新指派了任务
                string whoassigntask=new UserManagement().GetEmployeeName(Session["userid"]

                     .ToString ());
                string employeename=DropDownList1.SelectedItem.Text;//记录指派给谁
                string reason=TextBox1.Text.Trim();   
                try
                {

                   //在原留言信息基础上追加信息
                   strSql="select Message from ProcessInstance where ProcessInstanceID="

                       +ViewState["processinstanceid"].ToString();
                   DataSet myds=basecode.SQLExeDataSet(strSql);

                   //在参数设置中不指定字段长度,默认与数据库结构中的字段长度相同

                   mycommand.Parameters.Add(new SqlParameter("@Message",SqlDbType.VarChar));
                   if(myds.Tables[0].Rows[0]["Message"] != DBNull.Value)
                      mycommand.Parameters["@Message"].Value=myds.Tables[0]

                          .Rows[0]["Message"].ToString()+whoassigntask+"(将"

                         +ViewState["taskname"].ToString()+"任务从"

                         +ViewState["taskusername"].ToString()

                         +"重新指派给"+employeename+"):"+reason+"<br>";
                   else
                      mycommand.Parameters["@Message"].Value=whoassigntask

                          +"(将"+ViewState["taskname"].ToString()+"任务从"

                          +ViewState["taskusername"].ToString()

                          +"重新指派给"+employeename+"):"+reason+"<br>";
                   if(! basecode.SQLExeNonQuery_proc(mycommand))
                   {

                      //测试用,为了数据安全不要显示详细异常信息,改为显示自己编写的错误提示
                      Label1.Text=basecode.BaseSqlErrDes;

                      return;
                   }
                }
                catch(System.FormatException exp)
                {
                   Label1.Text=exp.Message;
                   return;
                }
                string userid=DropDownList1.SelectedValue;
                strSql="update TaskInstance set TaskUserID="+userid+" where

                     TaskInstanceID="+ViewState["taskinstanceid"].ToString();
                if(! basecode.SQLExeNonQuery(strSql))
                {
                   Label1.Text=basecode.BaseSqlErrDes;
                   return;
                }
                Response.Redirect(ViewState["BackUrl"].ToString());
             }
           }
        }
    9.3 业务流程监控的其它内容

        除了超期限业务流程监控之外,在流程监控板块中还有其它的监控内容,如查询已完成的业务过程、查看正在处理(未超出承诺期限)的业务过程等,其实现与超期限流程监控类似,无非就是获取流程列表的SQL查询条件稍有变化,这里不再详细介绍。

        需要提到的是流程监控中的冻结或取消业务过程的操作。冻结业务流程操作实际上就是把流程实例的字段IsSuspended设置为“Y”,并记录执行冻结操作的时间(DateTime.Now.ToString()),这样被冻结的业务过程任务将不再出现在用户的任务列表中;对被冻结的业务过程还可以执行解冻操作,即将IsSuspended字段置空,使过程得以重新执行。

        如果被冻结的流程已经不具备重新执行的条件,可以考虑取消该流程。被冻结的流程,只有超过一定期限才可以执行取消操作。

        为了保留历史记录,取消流程操作并不是删除流程实例,而是将流程实例的字段IsCanceled设置为“Y”,并把取消原因记录到字段CanceledReason中,同时删除与过程关联的业务数据记录以及过程中上传的附件资料,这样用户在查询共享的业务数据是就不会再看到已被取消的业务数据。

    展开全文
  • openstack动态调度现状分析

    千次阅读 2014-04-22 22:23:15
    最近一个哥们在openstack邮件列表提出来做动态调度,引出很热烈讨论。...通过nova周期性任务或者独立项目完成。 社区更倾向于通过单独项目完成原因主要基于两点: 1. 实现比较复杂,放在nova中不合适
  • 有偿开放场馆认为影响其场馆利用最主要的原因主要是缺乏经营人才,中选率是100.0%,其次是场馆质量状况太差,无开放条件,占50%在公共体育场馆的开放利用中,人力资源是很重要的因素,在经营的六大要素中,第一...
  • 经DataX智能分析,该任务最可能错误原因是: com.alibaba.datax.common.exception.DataXException: Code:[Framework-12], Description:[DataX插件初始化错误, 该问题通常是由于DataX安装错误引起,请联系您...
  • 孔祥云(出处不详) 2003年05月09日 当前软件产品开发过程中出现质量问题,可以认为是由以下原因... 2、开发者将保证质量作为他们重要而且是必须完成的任务,把保证产品质量看成是质量检测人员责任。缺乏全
  • openstack动态调度现状

    千次阅读 2014-04-11 23:06:25
    最近一个哥们在openstack邮件列表提出来做动态调度,引出很热烈讨论。...通过nova周期性任务或者独立项目完成。 社区更倾向于通过单独项目完成原因主要基于两点: 1. 实现比较复杂,放在nova中不合适 2.
  • 它使用深度分类器来完成任务,该分类器使用了许多已证明在图像分类中取得成功 。 与其他解复用器(例如Albacore和 )不同,Deepbinner从原始信号(又名)中识别条形码,从而使条形码具有更高灵敏度和更少的未...
  • 问题 使用Ubuntu打开终端时,输入带有sudo apt-get 命令行是回报下面错误: E: 无法获得锁 /var/lib/dpkg/lock - open (11...在ubuntu系统用带有apt-get 命令行的时候,如果在未完成任务的情况下将终端中断,此时 ...
  • 问题 1:在已经结束的项目中研究任务定价规律,分析任务未完成的原因。理论 上任务定价跟所有会员的限额、会员与任务之间距离有关,在已知的定价数据上, 这是一个高维数据函数拟合问题,需要一定的降维处理;同样,...
  • Activity Activity是一个应用程序组件,提供一个屏幕,用户可以用来交互为了完成某项任务,是一个负责与用户交互组件 SSH 为 Struts+Spring+Hibernate一个集成框架,是目前较流行一种Web应用程序开源框架。...
  • 简单----使未完成的工作最大化艺术------是根本。 11.最好构架、需求和设计出自于自组织团队。 12.每隔一定时间,团队会在如何才能更有效地工作方面反省,然后相应地对自己行为进行调整。 (一)...
  • 其中 delivery tag 1 由rabbitMQ的tag机制表示这条消息已经完成了消费,报错的原因是因为消息已经完成了消费,所以在MQ中找到该条消息,业务需要完成的逻辑是完成了的 这条信息表示该条消息被设定为自动确认...
  • 通过分析错误产生的原因和错误的分布特征,可以帮助项目管理者发现当前所采用的软件过程的缺陷,以便改进。同时,这种分析也能帮助我们设计出有针对性地检测方法,改善测试的有效性。 其次,没有发现错误的测试也是...
  • 【数据本质】 数据是信息的载体, 【数据分类】 用户反馈数据-产品运营...第四个:发现没有获得某道具是未完成主线认为原因 第五个:发现没有去地图N是没有获得道具X的原因 第六个:发现是产品印度做得不够明晰,导致用
  • 翻译图书是件吃力不讨好活,时间紧、任务急、酬劳低,质量不过关还会遭受读者质疑,唯愿我们此次翻译能够换来读者好评。能够看到此书中文版面市,我们这些译者倍感荣幸。.  关于Oracle优化书在图书市场上并不...
  • 随后Google就将这则漫画放到Google Books和Google网站上,并在自家的博客中说明了提早释出的原因。 [编辑本段]发布  Google官方Blog在9月2日撰文说,将于第二天在超过100个国家同时发布Chrome的Beta版。  北京...
  • 1.2.7 显式赋值项(NULL) 18 1.3 实体之间关系 20 1.3.1 二元关系 21 1.3.2 非二元关系 24 1.4 数据访问语言(SQL) 24 1.5 理解依赖性 25 1.5.1 函数依赖性 26 1.5.2 判定 26 1.6 总结 27 第2章 ...
  • 第二阶段 站立会议 07

    2016-05-30 14:54:00
    1、今天是我们站立会议的第七天,昨天信息查询部分添加成功,今天会议上大家分析了出错的原因,决定今天继续做这一模块。 2、站立会议图片 3、任务进度 信息查询进行了一部分,大致已经完成了目标的60%。 4...
  • 1.2.7 显式赋值项(NULL) 18 1.3 实体之间关系 20 1.3.1 二元关系 21 1.3.2 非二元关系 24 1.4 数据访问语言(SQL) 24 1.5 理解依赖性 25 1.5.1 函数依赖性 26 1.5.2 判定 26 1.6 总结 27 第2章 ...
  • 你必须知道495个C语言问题

    千次下载 热门讨论 2015-05-08 11:09:25
    4.7 我有些解析外部结构代码,但是它却崩溃了,显示出了“unalignedaccess”(对齐访问)信息。这是什么意思? 作为函数参数指针 4.8 我有个函数,它应该接受并初始化一个指针:voidf(int*ip){...
  • 软件工程教程

    热门讨论 2012-07-06 23:10:29
    产生的原因(软件开发人员的错误观点): “有一个对目标的概括描述就足以着手编写程序了,许多细节可以在以后再补充” “所谓软件开发就是编写程序并设法使它运行” “用户对软件的要求不断变化,然而软件是柔软而...
  • 测试执行过程(六)

    2020-06-11 06:18:11
    测试完成,将实际结果与预期结果对比,若出现差异,分析引起差异的原因,确定是否作为缺陷上报 修正缺陷后,重新测试 测试的准入与准出 准入标准: (1)开发编码结束,并在开发环境已完成单元测试 (2)阶段性...

空空如也

空空如也

1 2 3 4 5 ... 9
收藏数 164
精华内容 65
关键字:

未完成任务的原因分析