Process#

NAME#

Kernel::System::ProcessManagement::DB::Process

DESCRIPTION#

Process Management DB Process backend

PUBLIC INTERFACE#

new()#

Don’t use the constructor directly, use the ObjectManager instead:

my $ProcessObject = $Kernel::OM->Get('Kernel::System::ProcessManagement::DB::Process');

ProcessAdd()#

add new Process

returns the id of the created process if success or undef otherwise

my $ID = $ProcessObject->ProcessAdd(
    EntityID       => 'P1',            # mandatory, exportable unique identifier
    Name           => 'NameOfProcess', # mandatory
    StateEntityID  => 'S1',
    Layout         => $LayoutHashRef,  # mandatory, diagram objects positions to be stored in
                                       #   YAML format
    Config         => $ConfigHashRef,  # mandatory, process configuration to be stored in YAML
                                       #   format
    UserID         => 123,             # mandatory
);

Returns:

$ID = 567;

ProcessDelete()#

delete a Process

returns 1 if success or undef otherwise

my $Success = $ProcessObject->ProcessDelete(
    ID      => 123,
    UserID  => 123,
);

ProcessGet()#

get Process attributes

my $Process = $ProcessObject->ProcessGet(
    ID              => 123,          # ID or EntityID is needed
    EntityID        => 'P1',
    ActivityNames   => 1,            # default 0, 1 || 0, if 0 returns an Activities array
                                     #     with the activity entity IDs, if 1 returns an
                                     #     Activities hash with the activity entity IDs as
                                     #     keys and Activity Names as values
    TransitionNames => 1,            # default 0, 1 || 0, if 0 returns an Transitions array
                                     #     with the transition entity IDs, if 1 returns an
                                     #     Transitions hash with the transition entity IDs as
                                     #     keys and Transition Names as values
    TransitionActionNames => 1,      # default 0, 1 || 0, if 0 returns an TransitionActions array
                                     #     with the TransitionAction entity IDs, if 1 returns an
                                     #     TransitionAction hash with the TransitionAction entity IDs as
                                     #     keys and TransitionAction Names as values
    UserID          => 123,          # mandatory
);

Returns:

$Process = {
    ID            => 123,
    EntityID      => 'P1',
    Name          => 'some name',
    StateEntityID => 'S1',
    State         => 'Active',
    Layout        => $LayoutHashRef,
    Config        => $ConfigHashRef,
    Activities    => ['A1','A2','A3'],
    Activities    => ['T1','T2','T3'],
    CreateTime    => '2012-07-04 15:08:00',
    ChangeTime    => '2012-07-04 15:08:00',
};

$Process = {
    ID            => 123,
    EntityID      => 'P1',
    Name          => 'some name',
    StateEntityID => 'S1',
    State         => 'Active',
    Layout        => $LayoutHashRef,
    Config        => $ConfigHashRef,
    Activities    => {
        'A1' => 'Activity1',
        'A2' => 'Activity2',
        'A3' => 'Activity3',
    };
    Transitions   => {
        'T1' => 'Transition1',
        'T2' => 'Transition2',
        'T3' => 'Transition3',
    };
    TransitionActions => {
        'TA1' => 'TransitionAction1',
        'TA2' => 'TransitionAction2',
        'TA3' => 'TransitionAction3',
    };
    CreateTime => '2012-07-04 15:08:00',
    ChangeTime => '2012-07-04 15:08:00',
};

ProcessUpdate()#

update Process attributes

returns 1 if success or undef otherwise

my $Success = $ProcessObject->ProcessUpdate(
    ID            => 123,             # mandatory
    EntityID      => 'P1',            # mandatory, exportable unique identifier
    Name          => 'NameOfProcess', # mandatory
    StateentityID => 'S1',
    Layout        => $LayoutHashRef,  # mandatory, diagram objects positions to be stored in
                                      #   YAML format
    Config        => $ConfigHashRef,  # mandatory, process configuration to be stored in YAML
                                      #   format
    UserID        => 123,             # mandatory
);

ProcessList()#

get a Process list

my $List = $ProcessObject->ProcessList(
    UseEntities     => 0,                   # default 0, 1 || 0. if 0 the return hash keys are
                                            #    the process IDs otherwise keys are the
                                            #    process entity IDs
    StateEntityIDs  => ['S1','S2'],         # optional, to filter processes that match listed
                                            #    state entity IDs
    UserID          => 1,
);

Returns:

$List = {
    1 => 'NameOfProcess',
}

or

$List = {
    'P1' => 'NameOfProcess',
}

ProcessListGet()#

get a Process list with all process details

my $List = $ProcessObject->ProcessListGet(
    UserID      => 1,
);

Returns:

$List = [
    {
        ID            => 123,
        EntityID      => 'P1',
        Name          => 'some name',
        StateEntityID => 'S1',
        State         => 'Active',
        Layout        => $LayoutHashRef,
        Config        => $ConfigHashRef,
        Activities    => ['A1','A2','A3'],
        CreateTime    => '2012-07-04 15:08:00',
        ChangeTime    => '2012-07-04 15:08:00',
    },
    {
        ID            => 456,
        EntityID      => 'P2',
        Name          => 'some name',
        StateEntityID => 'S1',
        State         => 'Active',
        Layout        => $LayoutHashRef,
        Config        => $ConfigHashRef,
        Activities    => ['A3','A4','A5'],
        CreateTime    => '2012-07-04 15:10:00',
        ChangeTime    => '2012-07-04 15:10:00',
    },
];

ProcessSearch()#

search processes by process name

my $ProcessEntityIDs = $ProcessObject->ProcessSearch(
    ProcessName => 'SomeText',       # e. g. "SomeText*", "Some*ext" or ['*SomeTest1*', '*SomeTest2*']
);

Returns:

$ProcessEntityIDs = [ 'Process-e11e2e9aa83344a235279d4f6babc6ec', 'Process-f8194a25ab0ccddefeb4240c281c1f56' ];

ProcessDump()#

gets a complete processes information dump from the DB including: Process State, Activities, ActivityDialogs, Transitions and TransitionActions

my $ProcessDump = $ProcessObject->ProcessDump(
    ResultType  => 'SCALAR'                     # 'SCALAR' || 'HASH' || 'FILE'
    Location    => '/opt/znuny/var/myfile.txt'   # mandatory for ResultType = 'FILE'
    UserID      => 1,
);

Returns:

$ProcessDump = '
    $Self->{'Process'} = {
        'P1' => {
            'Name' => 'Process 1',
            'CreateTime' => '2012-07-21 08:11:33',
            'ChangeTime' => '2012-07-21 08:11:33',
            'Path' => {
                'A1' => {
                    'T1' => {
                    'Action' => [
                        'TA1',
                    ],
                }
            },
            'StartActivity'       => 'A1',
            'StartActivityDialog' => 'AD1',
            'State'               => 'S1'
        },
        # ...
    };

    $Self->{'Process::State'} = {
        'S1' => 'Active',
        'S2' => 'Inactive',
        'S3' => 'FadeAway'
    };

    $Self->{'Process::Activity'} = {
        'A1' => {
            'Name'           => 'Activity 1',
            'CreateTime'     => '2012-07-21 08:11:33',
            'ChangeTime'     => '2012-07-21 08:11:33',
            'ActivityDialog' => {
                '1' => 'AD1',
            }
        },
        # ...
    };

    $Self->{'Process::ActivityDialog'} = {
        'AD1' => {
            'Name'             => 'Activity Dialog 1',
            'CreateTime'       => '2012-07-21 08:11:33',
            'ChangeTime'       => '2012-07-21 08:11:33',
            'DescriptionLong'  => 'Longer description',
            'DescriptionShort' => 'Short description',
            'FieldOrder'       => [
                'StateID',
                'DynamicField_Marke',
            ],
            'Fields' => {
                'StateID' => {
                    'DefaultValue'     => '1',
                    'DescriptionLong'  => 'Longer description',
                    'DescriptionShort' => 'Short description',
                    'Display'          => '0'
                },
                'DynamicField_Marke' => {
                    'DescriptionLong'  => 'Longer description',
                    'DescriptionShort' => 'Short description',
                    'Display'          => '2'
                },
            },
        #...
    };

    $Self->{'Process::Transition'} = {
        'T1' => {
            'Name'       => 'Transition 1',
            'ChangeTime' => '2012-07-21 08:11:33',
            'CreateTime' => '2012-07-21 08:11:33',
            'Condition'  => {
                'Type'  => 'and',
                'Cond1' => {
                    'Fields' => {
                        'DynamicField_Marke' => {
                            'Match' => 'Teststring',
                            'Type' => 'String',
                        },
                    },
                    'Type' => 'and',
                },
            },
        },
        # ...
    };

    $Self->{'Process::Action'} = {
        'TA1' => {
            'Name'       => 'Queue Move',
            'CreateTime' => '2012-07-21 08:11:33',
            'ChangeTime' => '2012-07-21 08:11:33',
            'Module'     => 'Kernel::System::Process::Transition::Action::QueueMove',
            'Config'     => {
                'NewOwner'    => 'root@localhost',
                'TargetQueue' => 'Raw',
            },
        },
        # ...
    };
';

my $ProcessDump = $ProcessObject->ProcessDump(
    ResultType  => 'HASH'                       # 'SCALAR' || 'HASH' || 'FILE'
    Location    => '/opt/znuny/var/myfile.txt'   # mandatory for ResultType = 'FILE'
    UserID      => 1,
);

Returns:

$ProcessDump = {
    Process => {
        'P1' => {
            'Name'       => 'Process 1',
            'CreateTime' => '2012-07-21 08:11:33',
            'ChangeTime' => '2012-07-21 08:11:33',
            'Path'       => {
                'A1' => {
                    'T1' => {
                        'Action' => [
                            'TA1',
                        ],
                    }
                },
                'StartActivity'       => 'A1',
                'StartActivityDialog' => 'AD1',
                'State'               => 'S1'
            },
        },
        # ...
    };

    State => {
        'S1' => 'Active',
        'S2' => 'Inactive',
        'S3' => 'FadeAway'
    };

    Activity => {
        'A1' => {
            'Name'           => 'Activity 1',
            'CreateTime'     => '2012-07-21 08:11:33',
            'ChangeTime'     => '2012-07-21 08:11:33',
            'ActivityDialog' => {
                '1' => 'AD1',
            }
        },
        # ...
    };

    ActivityDialog => {
        'AD1' => {
            'Name'             => 'Activity Dialog 1',
            'CreateTime'       => '2012-07-21 08:11:33',
            'ChangeTime'       => '2012-07-21 08:11:33',
            'DescriptionLong'  => 'Longer description',
            'DescriptionShort' => 'Short description',
            'FieldOrder'       => [
                'StateID',
                'DynamicField_Marke',
            ],
            'Fields' => {
                'StateID' => {
                    'DefaultValue'     => '1',
                    'DescriptionLong'  => 'Longer description',
                    'DescriptionShort' => 'Short description',
                    'Display'          => '0'
                },
                'DynamicField_Marke' => {
                    'DescriptionLong'  => 'Longer description',
                    'DescriptionShort' => 'Short description',
                    'Display'          => '2'
                },
            },
        },
        #...
    };

    Transition => {
        'T1' => {
            'Name'       => 'Transition 1',
            'ChangeTime' => '2012-07-21 08:11:33',
            'CreateTime' => '2012-07-21 08:11:33',
            'Condition'  => {
                'Type'  => 'and',
                'Cond1' => {
                    'Fields' => {
                        'DynamicField_Marke' => {
                            'Match' => 'Teststring',
                            'Type'  => 'String',
                        },
                    },
                    'Type' => 'and',
                },
            },
        },
        # ...
    };

    TransitionAction => {
        'TA1' => {
            'Name'       => 'Queue Move',
            'CreateTime' => '2012-07-21 08:11:33',
            'ChangeTime' => '2012-07-21 08:11:33',
            'Module'     => 'Kernel::System::Process::Transition::Action::QueueMove',
            'Config'     => {
                'NewOwner'    => 'root@localhost',
                'TargetQueue' => 'Raw',
            },
        },
        # ...
    };
}

my $ProcessDump = $ProcessObject->ProcessDump(
    ResultType  => 'Location'                     # 'SCALAR' || 'HASH' || 'FILE'
    Location    => '/opt/znuny/var/myfile.txt'     # mandatory for ResultType = 'FILE'
    UserID      => 1,
);
Returns:

$ProcessDump = ‘/opt/znuny/var/myfile.txt’; # or undef if can’t write the file

ProcessImport()#

import a process YAML file/content

my %ProcessImport = $ProcessObject->ProcessImport(
    Content                   => $YAMLContent, # mandatory, YAML format
    OverwriteExistingEntities => 0,            # 0 || 1
    UserID                    => 1,            # mandatory
);

Returns:

%ProcessImport = (
    Message => 'The Message to show.', # error or success message
    Comment => 'Any comment',          # optional
    Success => 1,                      # 1 if success or undef otherwise
);