Example #1
0
def load_issue():
    """ load_[wf_code] """
    category = create_category('5f31d065-00cc-0020-beea-641f0a670010', 'HR')
    process = create_process('issue', 'Issue', category=category)
    create_node('5f31d065-00a0-0020-beea-641f0a670010',
                process,
                'Draft',
                status='draft')
    create_node('5f31d065-00a0-0020-beea-641f0a670020',
                process,
                'Given up',
                status='given up')
    create_node('5f31d065-00a0-0020-beea-641f0a670030',
                process,
                'Rejected',
                status='rejected')
    create_node('5f31d065-00a0-0020-beea-641f0a670040',
                process,
                'Completed',
                status='completed')
    create_node('5f31d065-00a0-0020-beea-641f0a670050',
                process,
                'A1',
                operators='[owner]')
    create_transition('5f31d065-00e0-0020-beea-641f0a670010', process,
                      'Draft,', 'A1')
    create_transition('5f31d065-00e0-0020-beea-641f0a670020', process, 'A1,',
                      'Completed')
def load_warning():
    #  拟定--------cgl---------cry--------归档
    """ load_[wf_code] """
    category = create_category('5f31d065-00cc-0160-beea-641f0a670010', '告警通知单')
    process = create_process('warning', 'Warning', category=category)
    create_node('5f31d065-00a0-0160-beea-641f0a670010',
                process,
                'Draft',
                status='拟定')
    create_node('5f31d065-00a0-0160-beea-641f0a670020',
                process,
                'Given up',
                status='放弃')
    create_node('5f31d065-00a0-0160-beea-641f0a670030',
                process,
                'Rejected',
                status='拒绝')
    create_node('5f31d065-00a0-0160-beea-641f0a670040',
                process,
                'Completed',
                status='归档')
    create_node('5f31d065-00a0-0160-beea-641f0a670050',
                process,
                'A1',
                operators='[cgl]')
    create_node('5f31d065-00a0-0160-beea-641f0a670060',
                process,
                'A2',
                operators='[lyh]')
    create_transition('5f31d065-00e0-0160-beea-641f0a670010', process,
                      'Draft,', 'A1')
    create_transition('5f31d065-00e0-0160-beea-641f0a670020', process, 'A1,',
                      'A2')
    create_transition('5f31d065-00e0-0160-beea-641f0a670030', process, 'A2,',
                      'Completed')
Example #3
0
def load_regularwork():
    category = create_category('5f31d065-00cc-0030-beea-641f0a670010', '定期工作任务')
    process = create_process('regularworktask', 'Regularworktask', category=category)
    create_node('5f31d065-00a0-0030-beea-641f0a670010', process, 'Draft', status='draft')
    create_node('5f31d065-00a0-0030-beea-641f0a670020', process, 'Given up', status='given up')
    create_node('5f31d065-00a0-0030-beea-641f0a670030', process, 'Rejected', status='rejected')
    create_node('5f31d065-00a0-0030-beea-641f0a670040', process, 'Completed', status='completed')
    create_node('5f31d065-00a0-0030-beea-641f0a670050', process, 'A1', operators='[clp]')
    create_node('5f31d065-00a0-0030-beea-641f0a670060', process, 'A2', operators='[cgl]')
    create_node('5f31d065-00a0-0030-beea-641f0a670070', process, 'A3', operators='[lyh]')
    create_transition('5f31d065-00e0-0030-beea-641f0a670010', process, 'Draft,', 'A1')
    create_transition('5f31d065-00e0-0030-beea-641f0a670020', process, 'A1,', 'A2')
    create_transition('5f31d065-00e0-0030-beea-641f0a670030', process, 'A2,', 'A3')
    create_transition('5f31d065-00e0-0030-beea-641f0a670040', process, 'A3,', 'Completed')
def load_issue():
    """load_[wf_code]"""
    category = create_category("5f31d065-00cc-0020-beea-641f0a670010", "HR")
    process = create_process("purchase", "Purchase", category=category)
    create_node(
        "5f31d065-00a0-0030-beea-641f0a670010",
        process,
        "Draft",
        status="draft",
    )
    create_node(
        "5f31d065-00a0-0030-beea-641f0a670020",
        process,
        "Given up",
        status="given up",
    )
    create_node(
        "5f31d065-00a0-0030-beea-641f0a670030",
        process,
        "Rejected",
        status="rejected",
    )
    create_node(
        "5f31d065-00a0-0030-beea-641f0a670040",
        process,
        "Completed",
        status="completed",
    )
    create_node(
        "5f31d065-00a0-0030-beea-641f0a670050",
        process,
        "A1",
        operators="[owner]",
    )
    create_transition("5f31d065-00e0-0030-beea-641f0a670010", process,
                      "Draft,", "A1")
    create_transition("5f31d065-00e0-0030-beea-641f0a670020", process, "A1,",
                      "Completed")
Example #5
0
def load_monworkplan():
    #  拟定--------cgl---------cry--------归档
    """ load_[wf_code] """
    category = create_category('5f31d065-00cc-0090-beea-641f0a670010',
                               '月度计划与总结')
    process = create_process('monworkplan', 'Monworkplan', category=category)
    create_node('5f31d065-00a0-0090-beea-641f0a670010',
                process,
                'Draft',
                status='draft')
    create_node('5f31d065-00a0-0090-beea-641f0a670020',
                process,
                'Given up',
                status='given up')
    create_node('5f31d065-00a0-0090-beea-641f0a670030',
                process,
                'Rejected',
                status='rejected')
    create_node('5f31d065-00a0-0090-beea-641f0a670040',
                process,
                'Completed',
                status='completed')
    create_node('5f31d065-00a0-0090-beea-641f0a670050',
                process,
                'A1',
                operators='[clp]')
    create_node('5f31d065-00a0-0090-beea-641f0a670060',
                process,
                'A2',
                operators='[cgl]')
    create_node('5f31d065-00a0-0090-beea-641f0a670070',
                process,
                'A3',
                operators='[lyh]')
    create_transition('5f31d065-00e0-0090-beea-641f0a670010', process,
                      'Draft,', 'A1')
    create_transition('5f31d065-00e0-0090-beea-641f0a670020', process, 'A1,',
                      'A2')
    create_transition('5f31d065-00e0-0090-beea-641f0a670030', process, 'A2,',
                      'A3')
    create_transition('5f31d065-00e0-0090-beea-641f0a670040', process, 'A3,',
                      'Completed')
def load_regularwork():
    category = create_category('5f31d065-00cc-0030-beea-641f0a670010',
                               '定期工作策划')
    process = create_process('regularworkplan',
                             'Regularworkplan',
                             category=category)
    create_node('5f31d065-00a0-0030-beea-641f0a670010',
                process,
                'Draft',
                status='草稿')
    create_node('5f31d065-00a0-0030-beea-641f0a670020',
                process,
                'Given up',
                status='放弃')
    create_node('5f31d065-00a0-0030-beea-641f0a670030',
                process,
                'Rejected',
                status='拒绝')
    create_node('5f31d065-00a0-0030-beea-641f0a670040',
                process,
                'Completed',
                status='归档')
    create_node('5f31d065-00a0-0030-beea-641f0a670050',
                process,
                'A1',
                operators='[admin]')
    create_node('5f31d065-00a0-0030-beea-641f0a670060',
                process,
                'A2',
                operators='[admin]')
    create_transition('5f31d065-00e0-0030-beea-641f0a670010', process,
                      'Draft,', 'A1')
    create_transition('5f31d065-00e0-0030-beea-641f0a670020', process, 'A1,',
                      'A2')
    create_transition('5f31d065-00e0-0030-beea-641f0a670030', process, 'A2,',
                      'Completed')
Example #7
0
def load_simplewf():
    category = create_category('5f31d065-00cc-0020-be00-641f0a670010', 'IT')

    ext_data_buy_computer = {
        'template': """Brand:
Price:
Other requirements:
"""
    }
    process = create_process('simplewf__buy_computer',
                             'Buy computer',
                             category=category,
                             ext_data=ext_data_buy_computer)
    # Nodes
    create_node('5f31d065-00a0-0010-be00-641f0a670010',
                process,
                'Draft',
                status='draft')
    create_node('5f31d065-00a0-0010-be00-641f0a670020',
                process,
                'Given up',
                status='given up')
    create_node('5f31d065-00a0-0010-be00-641f0a670030',
                process,
                'Rejected',
                status='rejected')
    create_node('5f31d065-00a0-0010-be00-641f0a670040',
                process,
                'Completed',
                status='completed')
    create_node('5f31d065-00a0-0010-be00-641f0a670060',
                process,
                'Department Leader',
                operators='[o.created_by.get_department().leader]')
    create_node('5f31d065-00a0-0010-be00-641f0a670065',
                process,
                'IT',
                operators='[it]')

    create_transition('5f31d667-0010-0020-be00-641f0a670010', process,
                      'Draft,', 'Department Leader')
    create_transition('5f31d667-0010-0020-be00-641f0a670020', process,
                      'Department Leader', 'IT')
    create_transition('5f31d667-0010-0020-be00-641f0a670030', process, 'IT,',
                      'Completed')

    ext_data_issue = {'template': """From:
Requirements:"""}
    process = create_process('simplewf__issue',
                             'Issue',
                             category=category,
                             ext_data=ext_data_issue)
    create_node('5f31d667-00a0-0020-be00-641f0a670010',
                process,
                'Draft',
                status='draft')
    create_node('5f31d667-00a0-0020-be00-641f0a670020',
                process,
                'Given up',
                status='given up')
    create_node('5f31d667-00a0-0020-be00-641f0a670030',
                process,
                'Rejected',
                status='rejected')
    create_node('5f31d667-00a0-0020-be00-641f0a670040',
                process,
                'Completed',
                status='completed')
    create_node('5f31d065-00a0-0020-be00-641f0a670060',
                process,
                'IT Leader',
                operators='dept_direct_leaders d[it]')
    create_node('5f31d065-00a0-0020-be00-641f0a670070',
                process,
                'IT',
                operators='[it]')

    create_transition('5f31d667-0020-0020-be00-641f0a670010', process,
                      'Draft,', 'IT Leader')
    create_transition('5f31d667-0020-0020-be00-641f0a670020', process,
                      'IT Leader', 'IT')
    create_transition('5f31d667-0020-0020-be00-641f0a670030', process, 'IT,',
                      'Completed')
Example #8
0
def load_leave():
    """ load_[wf_code] """
    category = create_category('5f31d065-00cc-0010-beea-641f0a670010', 'HR')
    process = create_process('leave', 'Leave', category=category)
    create_node('5f31d065-00a0-0010-beea-641f0a670010', process, 'Draft', status='draft')
    create_node('5f31d065-00a0-0010-beea-641f0a670010', process, 'Draft', status='draft')  # test for update
    create_node('5f31d065-00a0-0010-beea-641f0a670020', process, 'Given up', status='given up')
    create_node('5f31d065-00a0-0010-beea-641f0a670030', process, 'Rejected', status='rejected')
    create_node('5f31d065-00a0-0010-beea-641f0a670040', process, 'Completed', status='completed')
    create_node('5f31d065-00a0-0010-beea-641f0a670050', process, 'A1', operators='[owner]')
    create_node('5f31d065-00a0-0010-beea-641f0a670060', process, 'A2', operators='[tom]')
    create_node('5f31d065-00a0-0010-beea-641f0a670065', process, 'A2B1', operators='[tom],[owner]')
    create_node('5f31d065-00a0-0010-beea-641f0a670070', process, 'A3', operators='[vicalloy]')
    create_node('5f31d065-00a0-0010-beea-641f0a670080', process, 'A4', operators='[hr]')
    create_transition('5f31d065-00e0-0010-beea-641f0a670010', process, 'Draft,', 'A1')
    create_transition('5f31d065-00e0-0010-beea-641f0a670020', process, 'A1,', 'A2')
    create_transition(
        '5f31d065-00e0-0010-beea-641f0a670030', process, 'A2,', 'A3',
        condition='o.leave_days<7  # days<7')
    create_transition(
        '5f31d065-00e0-0010-beea-641f0a670040', process, 'A2,', 'A2B1',
        condition='o.leave_days>=7  # days>=7')
    create_transition(
        '5f31d065-00e0-0010-beea-641f0a670050', process, 'A2B1,', 'A3',
        routing_rule='joint', can_auto_agree=False)
    create_transition('5f31d065-00e0-0010-beea-641f0a670060', process, 'A3,', 'A4')
    create_transition(
        '5f31d065-00e0-0010-beea-641f0a670070', process, 'A4,', 'Completed',
        app='Customized URL', app_param='wf_execute_transition {{wf_code}} c')
Example #9
0
def node_add(request, pp_id):
    user = request.session['mylogin']
    myprocess = MyProcess.objects.filter(id=pp_id).first()
    mynum = request.POST['mynum']
    # print(myprocess.company,'myprocess.company')
    netstructure = NetStructure.objects.filter(
        place=myprocess.company, is_activate=1).first()  # 查询网络结构信息
    if mynum == '1':  # 如果前端用户提交了节点信息
        node_name = request.POST['node_name']  # 节点名称
        job_name = request.POST['job_name']  # 岗位名称
        resource = request.POST['choice']  # 流程流转类型
        can_give_up = request.POST['can_give_up']  #
        can_edit = request.POST['can_edit']  #
        if resource == '0':
            resource = '监督网络'
            job_name = ''  # 工作流审批人变量
            person_name = request.POST.get('person_name', '')  # 审批人帐号
            job_name = person_name
            '''
            # 1为生技部主任  2.监督专责  3.执行人
            if job_name == '生技部主任':
                job_name = 1
            if job_name == '监督专责':
                job_name = 2
            if job_name == '执行人':
                job_name = 3
            # print(job_name)
            # print(netstructure)
            # print(NetStructure.objects.filter(place=myprocess.company,is_activate=1))
            job = NetStaff.objects.filter(net_name=job_name, netstructure=netstructure).first()  # 查询网络人员
            # print(job,"==========2222222")
            if job != None:
                job = job.id
            userdata = []
            cursor = connection.cursor()
            # 从角色,用户及其中间表中取他们相对应的关系
            cursor.execute(
                "select myuser_id from netstaff_netstaff_user where netstaff_id = '%s' " % job)
            for row in cursor.fetchall():
                usertable = {
                    'user': row[0],
                }
                userdata.append(usertable)
            cursor.close()
            myuser_list = userdata
            job_name = ''
            for user in myuser_list:
                new_user = MyUser.objects.filter(id=user['user']).first()
                job_name += new_user.user.username + ','
            job_name = job_name[:-1]
            '''
        elif resource == '1':
            resource = '行政岗位'
            job_name = ''  # 工作流审批人变量
            person_name = request.POST.get('person_name', '')  # 审批人
            job_name = person_name
        elif resource == '2':
            resource = '审批人'
            '''
            job_name = MyUser.objects.filter(name=job_name).first().user.username
            '''
            job_name = ''  # 工作流审批人变量
            person_name = request.POST.get('person_name', '')  # 审批人
            job_name = person_name
        if resource == '3':  # 如果选择是责任组
            resource = '责任组'
            job_name = ''  # 工作流审批人变量
            duty_group_id = request.POST.get('duty_group_name', '')  # 责任组id
            # 获取该责任组的下属人员
            duty_group_obj = MyGroup.objects.filter(
                id=duty_group_id).first()  # 责任组对象
            duty_user_obj_list = duty_group_obj.duty_user.all()  # 责任人员列表
            operators_job_str = ''
            for duty_user_obj in duty_user_obj_list:
                operators_job_str += '[%s],' % duty_user_obj.number  # 形成工作流模块需要的数据形式   [xxx],[xxxx],[xxxx]
            operators_job_str = operators_job_str[:-1]  # 去除字符串最后的逗号

            node = create_node(uuid.uuid1(),
                               myprocess.process,
                               node_name,
                               operators='%s' % operators_job_str)
            node.can_edit = can_edit
            node.can_give_up = can_give_up

            mynode = MyNode.objects.create(node_name=node_name,
                                           resource=resource,
                                           myprocess=myprocess,
                                           operators_job='%s' %
                                           operators_job_str,
                                           node=node)
            mynode.save()
        else:
            node = create_node(uuid.uuid1(),
                               myprocess.process,
                               node_name,
                               operators='[%s]' % job_name)
            node.can_edit = can_edit
            node.can_give_up = can_give_up
            mynode = MyNode.objects.create(node_name=node_name,
                                           resource=resource,
                                           myprocess=myprocess,
                                           operators_job='[%s]' % job_name,
                                           node=node)
            mynode.save()
        mytransition_list = Transition.objects.filter(
            is_active=1, process=myprocess.process)
        # if mytransition_list == None:
        if len(mytransition_list) == 0:
            create_transition(uuid.uuid1(), myprocess.process, 'Draft',
                              node_name)  # 草稿
            create_transition(uuid.uuid1(), myprocess.process, node_name,
                              'Completed')  # 完成
        else:
            for transition in mytransition_list:
                if transition.output_node.name == 'Completed':  # 如果最后一个节点‘完成’节点
                    transition.output_node = node  # 将最后一个节点变成新增加的节点
                    transition.save()  # 保存节点
                    create_transition(uuid.uuid1(), myprocess.process,
                                      node_name, 'Completed')  # 创建新的‘完成’节点

    elif mynum == '0':  # 未提交节点信息,只提交工作流程
        pass
    return HttpResponseRedirect('/wf/' + str(myprocess.id) +
                                '/mywf_detail/?action=new&menuid=47')
Example #10
0
def mywf_add(request):
    action = request.GET.get('action')
    menuid = request.GET.get('menuid')
    power = checkpower(menuid, request.session['mylogin'],
                       request.session['role_id'])
    request.session['powerdata'] = power
    app_names = LBWF_APPS.keys()
    user = request.session['mylogin']
    place = request.session['mylogin'].myuser.company
    # job_list =['生技部主任','监督专责','执行人']
    node_name_list2 = {
        '放弃': 'Given up',
        '拒绝': 'Rejected',
        '草稿': 'Draft',
        '归档': 'Completed'
    }
    supervision_major_list = SupervisionType.objects.all()
    if user.is_superuser:
        company_list = Company.objects.all()
    else:
        company_list = Company.objects.filter(comname=place.comname)
    first_node_list = ['Draft']
    next_node_list = ['Completed']
    app_object_list = RegularWorkPlan.objects.filter(place=place,
                                                     is_activate=1)

    if request.method == 'GET':
        return render(request, 'myworkflow/mywf_add.html', locals())
    elif request.method == 'POST':
        companyname = request.POST['companyname']  # 公司名称
        company = Company.objects.filter(comname=companyname).first()
        appname_key = request.POST['appname']
        appname = LBWF_APPS.get(appname_key)  # 获取app名称
        myprocess_name = request.POST['myprocess_name']
        supervision_major = request.POST['supervision_major']  # 监督专业
        mynum = request.POST['mynum']  # 判断是否新增节点
        app_object_id = request.POST['app_object_id']  # 获取定期工作策划编码
        netstructure = NetStructure.objects.filter(
            place=company, is_activate=1).first()  # 获取网络结构信息
        # print(NetStructure.objects.filter(place=company, is_activate=1),"=======111111")
        '''
        category = create_category('5f31d065-00cc-0100-beea-641f0a670010', '月度工作执行')
        process = create_process('monworkexe', 'Monworkexe', category=category)
        create_node('5f31d065-00a0-0100-beea-641f0a670010', process, 'Draft', status='拟定')
        create_node('5f31d065-00a0-0100-beea-641f0a670050', process, 'A1', operators='[cgl]')
        create_transition('5f31d065-00e0-0100-beea-641f0a670010', process, 'Draft,', 'A1') 
        '''
        category_list = ProcessCategory.objects.filter(is_active=1)
        mycategory = ''
        category_namelist = []
        for category in category_list:
            category_namelist.append(category.name)
        if appname_key in category_namelist:
            mycategory = ProcessCategory.objects.filter(
                name=appname_key).first()
        else:
            mycategory = create_category(uuid.uuid1(), appname_key)  #
        num = datetime.now().strftime("%Y%m%d%H%M%S")
        process = create_process(appname + num,
                                 appname.capitalize(),
                                 category=mycategory)  # 创建process
        company = Company.objects.filter(comname=companyname).first()
        new_process = ''
        if supervision_major == '0':
            new_process = MyProcess.objects.create(
                company=company,
                myprocess_name=myprocess_name,
                process=process,
                app_name=appname_key,
                app_object_id=app_object_id)  # 创建myprocess
        else:
            supervision_major = SupervisionType.objects.filter(
                name=supervision_major).first()
            new_process = MyProcess.objects.create(
                company=company,
                supervision_major=supervision_major,
                myprocess_name=myprocess_name,
                process=process,
                app_name=appname_key,
                app_object_id=app_object_id)  # 创建myprocess
        app = App.objects.filter(name=appname).first()
        node1 = create_node(uuid.uuid1(), process, 'Draft', status='draft')
        node1.can_edit = 1
        mynode = MyNode.objects.create(node_name='拟定',
                                       resource='无',
                                       myprocess=new_process,
                                       node=node1)
        node2 = create_node(uuid.uuid1(),
                            process,
                            'Given up',
                            status='given up')
        mynode = MyNode.objects.create(node_name='放弃',
                                       resource='无',
                                       myprocess=new_process,
                                       node=node2)
        node3 = create_node(uuid.uuid1(),
                            process,
                            'Rejected',
                            status='rejected')
        mynode = MyNode.objects.create(node_name='拒绝',
                                       resource='无',
                                       myprocess=new_process,
                                       node=node3)
        node4 = create_node(uuid.uuid1(),
                            process,
                            'Completed',
                            status='completed')
        mynode = MyNode.objects.create(node_name='归档',
                                       resource='无',
                                       myprocess=new_process,
                                       node=node4)

        if mynum == '1':  # 如果前端用户提交了节点信息
            node_name = request.POST['node_name']  # 节点名称
            job_name = request.POST['job_name']  # 岗位名称
            resource = request.POST['choice']  # 流程流转类型
            can_give_up = request.POST['can_give_up']  # 可以放弃
            can_edit = request.POST['can_edit']  # 可以编辑
            if resource == '0':
                resource = '监督网络'
                # 1为生技部主任  2.监督专责  3.执行人
                job_name = ''  # 工作流审批人变量
                person_name = request.POST.get('person_name', '')  # 审批人帐号
                job_name = person_name
                '''
                print(job_name,"====2=====22===")
                job = NetStaff.objects.filter(net_name=job_name,netstructure=netstructure).first()
                if job != None:
                    job = job.id
                userdata=[]
                cursor = connection.cursor()
                # 从角色,用户及其中间表中取他们相对应的关系
                cursor.execute(
                    "select myuser_id from netstaff_netstaff_user where netstaff_id = '%s' " % job)
                for row in cursor.fetchall():
                    usertable = {
                        'user': row[0],
                    }
                    userdata.append(usertable)
                cursor.close()
                myuser_list = userdata
                job_name = ''
                for user in myuser_list:
                    new_user = MyUser.objects.filter(id=user['user']).first()
                    job_name += new_user.user.username + ','
                job_name = job_name[:-1]
                '''
            elif resource == '1':
                resource = '行政岗位'
                '''
                # job = Job.objects.filter(jobname=job_name,company=company).first()
                job = Department.objects.filter(departname=job_name,company=company).first()
                # myuser_list = MyUser.objects.filter(jobname=job)
                myuser_list = MyUser.objects.filter(department=job)
                job_name=''
                for user in myuser_list:
                    job_name += user.user.username+','
                job_name = job_name[:-1]'''

                job_name = ''  # 工作流审批人变量
                person_name = request.POST.get('person_name', '')  # 审批人
                job_name = person_name
            elif resource == '2':
                resource = '审批人'
                '''
                job_name = MyUser.objects.filter(name=job_name).first().user.username
                '''
                job_name = ''  # 工作流审批人变量
                person_name = request.POST.get('person_name', '')  # 审批人帐号
                job_name = person_name

            if resource == '3':  # 如果选择是责任组
                resource = '责任组'
                job_name = ''  # 工作流审批人变量
                duty_group_id = request.POST.get('duty_group_name',
                                                 '')  # 责任组id
                # 获取该责任组的下属人员
                duty_group_obj = MyGroup.objects.filter(
                    id=duty_group_id).first()  # 责任组对象
                duty_user_obj_list = duty_group_obj.duty_user.all()  # 责任人员列表
                operators_job_str = ''
                for duty_user_obj in duty_user_obj_list:
                    operators_job_str += '[%s],' % duty_user_obj.number  # 形成工作流模块需要的数据形式   [xxx],[xxxx],[xxxx]
                operators_job_str = operators_job_str[:-1]  # 去除字符串最后的逗号

                node = create_node(uuid.uuid1(),
                                   process,
                                   node_name,
                                   operators='%s' % operators_job_str)
                node.can_edit = can_edit
                node.can_give_up = can_give_up

                mynode = MyNode.objects.create(node_name=node_name,
                                               resource=resource,
                                               myprocess=new_process,
                                               operators_job='%s' %
                                               operators_job_str,
                                               node=node)
                mynode.save()
            else:
                node = create_node(uuid.uuid1(),
                                   process,
                                   node_name,
                                   operators='[%s]' % job_name)
                node.can_edit = can_edit
                node.can_give_up = can_give_up
                mynode = MyNode.objects.create(node_name=node_name,
                                               resource=resource,
                                               myprocess=new_process,
                                               operators_job='[%s]' % job_name,
                                               node=node)
                mynode.save()
            # 保存信息到transition表
            create_transition(uuid.uuid1(), process, 'Draft', node_name)
            create_transition(uuid.uuid1(), process, node_name, 'Completed')
            # print("33333")
        elif mynum == '0':  # 未提交节点信息,只提交工作流程
            # print("44444")
            pass
        return HttpResponseRedirect('/wf/' + str(new_process.id) +
                                    '/mywf_detail/?action=new&menuid=47')
def load_simplewf():
    category = create_category("5f31d065-00cc-0020-beea-641f0a670010", "HR")

    ext_data_a = {"template": """# WorkFlow A
Content A"""}
    process = create_process(
        "simplewf__A",
        "Simple Workflow: A",
        category=category,
        ext_data=ext_data_a,
    )
    create_node(
        "5f31d666-00a0-0020-beea-641f0a670010",
        process,
        "Draft",
        status="draft",
    )
    create_node(
        "5f31d666-00a0-0020-beea-641f0a670020",
        process,
        "Given up",
        status="given up",
    )
    create_node(
        "5f31d666-00a0-0020-beea-641f0a670030",
        process,
        "Rejected",
        status="rejected",
    )
    create_node(
        "5f31d666-00a0-0020-beea-641f0a670040",
        process,
        "Completed",
        status="completed",
    )
    create_node(
        "5f31d666-00a0-0020-beea-641f0a670050",
        process,
        "A1",
        operators="[owner]",
    )
    create_transition("5f31d666-00e0-0020-beea-641f0a670010", process,
                      "Draft,", "A1")
    create_transition("5f31d666-00e0-0020-beea-641f0a670020", process, "A1,",
                      "Completed")

    ext_data_b = {"template": """# WorkFlow B
    Content B"""}
    process = create_process(
        "simplewf__B",
        "Simple Workflow: B",
        category=category,
        ext_data=ext_data_b,
    )
    create_node(
        "5f31d667-00a0-0020-beea-641f0a670010",
        process,
        "Draft",
        status="draft",
    )
    create_node(
        "5f31d667-00a0-0020-beea-641f0a670020",
        process,
        "Given up",
        status="given up",
    )
    create_node(
        "5f31d667-00a0-0020-beea-641f0a670030",
        process,
        "Rejected",
        status="rejected",
    )
    create_node(
        "5f31d667-00a0-0020-beea-641f0a670040",
        process,
        "Completed",
        status="completed",
    )
    create_node(
        "5f31d667-00a0-0020-beea-641f0a670050",
        process,
        "A1",
        operators="[owner]",
    )
    create_transition("5f31d667-00e0-0020-beea-641f0a670010", process,
                      "Draft,", "A1")
    create_transition("5f31d667-00e0-0020-beea-641f0a670020", process, "A1,",
                      "Completed")
Example #12
0
def load_leave():
    """ load_[wf_code] """
    category = create_category('5f31d065-00cc-0010-beea-641f0a670010', 'HR')
    process = create_process('leave', 'Leave', category=category)

    # Nodes
    create_node('5f31d065-00a0-0010-beea-641f0a670010',
                process,
                'Draft',
                status='draft')
    create_node('5f31d065-00a0-0010-beea-641f0a670020',
                process,
                'Given up',
                status='given up')
    create_node('5f31d065-00a0-0010-beea-641f0a670030',
                process,
                'Rejected',
                status='rejected')
    create_node('5f31d065-00a0-0010-beea-641f0a670040',
                process,
                'Completed',
                status='completed')

    create_node('5f31d065-00a0-0010-beea-641f0a670050',
                process,
                'Staff Leader',
                operators='[o.created_by.leader]')
    create_node('5f31d065-00a0-0010-beea-641f0a670060',
                process,
                'Department Leader',
                operators='[o.created_by.get_department().leader]')
    create_node('5f31d065-00a0-0010-beea-641f0a670065',
                process,
                'HR',
                operators='r[hr]')
    create_node('5f31d065-00a0-0010-beea-641f0a670070',
                process,
                'CEO',
                operators='[ceo]')

    # Transitions
    create_transition('5f31d065-00e0-0010-beea-641f0a670010', process, 'Draft',
                      'Staff Leader')
    create_transition('5f31d065-00e0-0010-beea-641f0a670020', process,
                      'Staff Leader', 'Department Leader')

    create_transition('5f31d065-00e0-0010-beea-641f0a670030',
                      process,
                      'Department Leader',
                      'HR',
                      condition='o.leave_days<7  # days<7')
    create_transition('5f31d065-00e0-0010-beea-641f0a670040',
                      process,
                      'Department Leader',
                      'CEO',
                      condition='o.leave_days>=7  # days>=7')
    create_transition('5f31d065-00e0-0010-beea-641f0a670045', process, 'CEO',
                      'HR')

    create_transition('5f31d065-00e0-0010-beea-641f0a670050',
                      process,
                      'HR',
                      'Completed',
                      app='Customized URL',
                      app_param='wf_execute_transition {{wf_code}} c')
Example #13
0
def load_simplewf():
    category = create_category('5f31d065-00cc-0020-beea-641f0a670010', 'HR')

    ext_data_a = {'template': """# WorkFlow A
Content A"""}
    process = create_process('simplewf__A',
                             'Simple Workflow: A',
                             category=category,
                             ext_data=ext_data_a)
    create_node('5f31d666-00a0-0020-beea-641f0a670010',
                process,
                'Draft',
                status='draft')
    create_node('5f31d666-00a0-0020-beea-641f0a670020',
                process,
                'Given up',
                status='given up')
    create_node('5f31d666-00a0-0020-beea-641f0a670030',
                process,
                'Rejected',
                status='rejected')
    create_node('5f31d666-00a0-0020-beea-641f0a670040',
                process,
                'Completed',
                status='completed')
    create_node('5f31d666-00a0-0020-beea-641f0a670050',
                process,
                'A1',
                operators='[owner]')
    create_transition('5f31d666-00e0-0020-beea-641f0a670010', process,
                      'Draft,', 'A1')
    create_transition('5f31d666-00e0-0020-beea-641f0a670020', process, 'A1,',
                      'Completed')

    ext_data_b = {'template': """# WorkFlow B
    Content B"""}
    process = create_process('simplewf__B',
                             'Simple Workflow: B',
                             category=category,
                             ext_data=ext_data_b)
    create_node('5f31d667-00a0-0020-beea-641f0a670010',
                process,
                'Draft',
                status='draft')
    create_node('5f31d667-00a0-0020-beea-641f0a670020',
                process,
                'Given up',
                status='given up')
    create_node('5f31d667-00a0-0020-beea-641f0a670030',
                process,
                'Rejected',
                status='rejected')
    create_node('5f31d667-00a0-0020-beea-641f0a670040',
                process,
                'Completed',
                status='completed')
    create_node('5f31d667-00a0-0020-beea-641f0a670050',
                process,
                'A1',
                operators='[owner]')
    create_transition('5f31d667-00e0-0020-beea-641f0a670010', process,
                      'Draft,', 'A1')
    create_transition('5f31d667-00e0-0020-beea-641f0a670020', process, 'A1,',
                      'Completed')
Example #14
0
def load_leave():
    """load_[wf_code]"""
    category = create_category("5f31d065-00cc-0020-beea-641f0a670010", "HR")
    process = create_process("leave", "Leave", category=category)
    create_node(
        "5f31d065-00a0-0010-beea-641f0a670010",
        process,
        "Draft",
        status="draft",
    )
    create_node(
        "5f31d065-00a0-0010-beea-641f0a670010",
        process,
        "Draft",
        status="draft",
    )  # test for update
    create_node(
        "5f31d065-00a0-0010-beea-641f0a670020",
        process,
        "Given up",
        status="given up",
    )
    create_node(
        "5f31d065-00a0-0010-beea-641f0a670030",
        process,
        "Rejected",
        status="rejected",
    )
    create_node(
        "5f31d065-00a0-0010-beea-641f0a670040",
        process,
        "Completed",
        status="completed",
    )
    create_node(
        "5f31d065-00a0-0010-beea-641f0a670050",
        process,
        "A1",
        operators="[owner]",
    )
    create_node(
        "5f31d065-00a0-0010-beea-641f0a670060",
        process,
        "A2",
        operators="[tom]",
    )
    create_node(
        "5f31d065-00a0-0010-beea-641f0a670065",
        process,
        "A2B1",
        operators="[tom],[owner]",
    )
    create_node(
        "5f31d065-00a0-0010-beea-641f0a670070",
        process,
        "A3",
        operators="[vicalloy]",
    )
    create_node("5f31d065-00a0-0010-beea-641f0a670080",
                process,
                "A4",
                operators="[hr]")
    create_node(
        "5f31d065-00a0-0010-beea-641f0a670a10",
        process,
        "R1",
        operators="",
        node_type="router",
    )
    create_transition("5f31d065-00e0-0010-beea-641f0a670010", process,
                      "Draft,", "A1")
    create_transition("5f31d065-00e0-0010-beea-641f0a670020", process, "A1,",
                      "A2")
    create_transition(
        "5f31d065-00e0-0010-beea-641f0a670030",
        process,
        "A2,",
        "A3",
        condition="o.leave_days<7  # days<7",
    )
    create_transition(
        "5f31d065-00e0-0010-beea-641f0a670040",
        process,
        "A2,",
        "A2B1",
        condition="o.leave_days>=7  # days>=7",
    )
    create_transition(
        "5f31d065-00e0-0010-beea-641f0a670050",
        process,
        "A2B1,",
        "A3",
        routing_rule="joint",
        can_auto_agree=False,
    )
    create_transition("5f31d065-00e0-0010-beea-641f0a670060", process, "A3,",
                      "A4")
    create_transition(
        "5f31d065-00e0-0010-beea-641f0a670070",
        process,
        "A4,",
        "R1",
        app="Customized URL",
        app_param="wf_execute_transition {{wf_code}} c",
    )
    create_transition("5f31d065-00e0-0010-beea-641f0a670080", process, "R1,",
                      "Completed")